diff options
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/client/DeprecatedLoader.cpp | 18 | ||||
-rw-r--r-- | src/libs/client/DeprecatedLoader.h | 13 | ||||
-rw-r--r-- | src/libs/client/Loader.cpp | 18 | ||||
-rw-r--r-- | src/libs/client/Loader.h | 11 |
4 files changed, 33 insertions, 27 deletions
diff --git a/src/libs/client/DeprecatedLoader.cpp b/src/libs/client/DeprecatedLoader.cpp index baa03c93..bb0096e1 100644 --- a/src/libs/client/DeprecatedLoader.cpp +++ b/src/libs/client/DeprecatedLoader.cpp @@ -168,12 +168,12 @@ DeprecatedLoader::add_metadata(MetadataMap& data, string old_key, string value) * Returns the path of the newly created patch. */ string -DeprecatedLoader::load_patch(const Glib::ustring& filename, - const Path& parent_path, - string name, - size_t poly, - MetadataMap initial_data, - bool existing) +DeprecatedLoader::load_patch(const Glib::ustring& filename, + boost::optional<Path> parent_path, + string name, + size_t poly, + MetadataMap initial_data, + bool existing) { cerr << "[DeprecatedLoader] Loading patch " << filename << "" << endl; @@ -216,8 +216,10 @@ DeprecatedLoader::load_patch(const Glib::ustring& filename, if ((!xmlStrcmp(cur->name, (const xmlChar*)"name"))) { if (load_name) { assert(key != NULL); - if (parent_path != "") - path = Path(parent_path).base() + Path::nameify((char*)key); + if (parent_path) + path = Path(parent_path.get()).base() + Path::nameify((char*)key); + else + path = Path("/") + Path::nameify((char*)key); } } else if ((!xmlStrcmp(cur->name, (const xmlChar*)"polyphony"))) { if (load_poly) { diff --git a/src/libs/client/DeprecatedLoader.h b/src/libs/client/DeprecatedLoader.h index 3b3b34f0..aa9557f5 100644 --- a/src/libs/client/DeprecatedLoader.h +++ b/src/libs/client/DeprecatedLoader.h @@ -22,6 +22,7 @@ #include <utility> #include <string> #include <cassert> +#include <boost/optional.hpp> #include <glibmm/ustring.h> #include <libxml/tree.h> #include "raul/SharedPtr.h" @@ -58,12 +59,12 @@ public: string find_file(const string& filename, const string& additional_path = ""); - string load_patch(const Glib::ustring& filename, - const Path& parent_path, - string name, - size_t poly, - MetadataMap initial_data, - bool existing = false); + string load_patch(const Glib::ustring& filename, + boost::optional<Path> parent_path, + string name, + size_t poly, + MetadataMap initial_data, + bool existing = false); private: void add_metadata(MetadataMap& data, string key, string value); diff --git a/src/libs/client/Loader.cpp b/src/libs/client/Loader.cpp index 95c29933..70ef0820 100644 --- a/src/libs/client/Loader.cpp +++ b/src/libs/client/Loader.cpp @@ -37,7 +37,7 @@ Loader::Loader(SharedPtr<ModelEngineInterface> engine, SharedPtr<Namespaces> nam (*_namespaces)["xsd"] = "http://www.w3.org/2001/XMLSchema#"; (*_namespaces)["ingen"] = "http://drobilla.net/ns/ingen#"; (*_namespaces)["ingenuity"] = "http://drobilla.net/ns/ingenuity#"; - (*_namespaces)["lv2"] = "http://lv2plug.in/ontology#>"; + (*_namespaces)["lv2"] = "http://lv2plug.in/ontology#"; } @@ -48,11 +48,11 @@ Loader::Loader(SharedPtr<ModelEngineInterface> engine, SharedPtr<Namespaces> nam * @return whether or not load was successful. */ bool -Loader::load(const Glib::ustring& filename, - const Path& parent, - string patch_name, - Glib::ustring patch_uri, - MetadataMap data) +Loader::load(const Glib::ustring& filename, + boost::optional<Path> parent, + string patch_name, + Glib::ustring patch_uri, + MetadataMap data) { // FIXME: this whole thing is a mess @@ -73,7 +73,7 @@ Loader::load(const Glib::ustring& filename, // FIXME: polyphony datatype RDFQuery query(*_namespaces, Glib::ustring( - "SELECT DISTINCT ?poly \nFROM <") + document_uri + ">\nWHERE {\n\t" + + "SELECT DISTINCT ?poly FROM <") + document_uri + "> WHERE {\n" + patch_uri + " ingen:polyphony ?poly .\n" "}"); @@ -91,6 +91,8 @@ Loader::load(const Glib::ustring& filename, if (patch_name == "") { patch_name = string(filename.substr(filename.find_last_of("/")+1)); + if (patch_name.substr(patch_name.length()-6) == ".ingen") + patch_name = patch_name.substr(0, patch_name.length()-6); query = RDFQuery(*_namespaces, Glib::ustring( "SELECT DISTINCT ?name FROM <") + document_uri + "> WHERE {\n" + @@ -103,7 +105,7 @@ Loader::load(const Glib::ustring& filename, patch_name = string((*results.begin())["name"]); } - Path patch_path = parent.base() + patch_name; + Path patch_path = ( parent ? (parent.get().base() + patch_name) : Path("/") ); cerr << "************ PATCH: " << patch_path << ", poly = " << patch_poly << endl; _engine->create_patch(patch_path, patch_poly); diff --git a/src/libs/client/Loader.h b/src/libs/client/Loader.h index fdca9d4f..9afbace6 100644 --- a/src/libs/client/Loader.h +++ b/src/libs/client/Loader.h @@ -18,6 +18,7 @@ #ifndef LOADER_H #define LOADER_H +#include <boost/optional.hpp> #include <glibmm/ustring.h> #include "raul/SharedPtr.h" #include "raul/Path.h" @@ -38,11 +39,11 @@ class Loader { public: Loader(SharedPtr<ModelEngineInterface> engine, SharedPtr<Namespaces> = SharedPtr<Namespaces>()); - bool load(const Glib::ustring& filename, - const Path& parent, - string patch_name, - Glib::ustring patch_uri = "", - MetadataMap initial_data = MetadataMap()); + bool load(const Glib::ustring& filename, + boost::optional<Path> parent, + string patch_name, + Glib::ustring patch_uri = "", + MetadataMap initial_data = MetadataMap()); private: //string _patch_search_path; |