summaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-03-30 20:53:10 +0000
committerDavid Robillard <d@drobilla.net>2007-03-30 20:53:10 +0000
commitc27f759594a713c8c65ee6637aafa2d02b52bd8d (patch)
tree46e4d2a8266030f97802bc947686463eaaeac48d /src/libs
parent05ec343c42e99611ac1ff8c45b73a3e1dc4e0941 (diff)
downloadingen-c27f759594a713c8c65ee6637aafa2d02b52bd8d.tar.gz
ingen-c27f759594a713c8c65ee6637aafa2d02b52bd8d.tar.bz2
ingen-c27f759594a713c8c65ee6637aafa2d02b52bd8d.zip
Serialization fixes.
git-svn-id: http://svn.drobilla.net/lad/ingen@379 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/client/DeprecatedLoader.cpp18
-rw-r--r--src/libs/client/DeprecatedLoader.h13
-rw-r--r--src/libs/client/Loader.cpp18
-rw-r--r--src/libs/client/Loader.h11
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;