summaryrefslogtreecommitdiffstats
path: root/src/libs/serialisation
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-10-21 05:27:32 +0000
committerDavid Robillard <d@drobilla.net>2007-10-21 05:27:32 +0000
commit22b17482a552b0966a80c19d94651385357d5701 (patch)
tree8f2d5b7d14eb28d1f43d718e507024844e45784c /src/libs/serialisation
parentc74810c215c2722a69bb74e834caa5fe89109561 (diff)
downloadingen-22b17482a552b0966a80c19d94651385357d5701.tar.gz
ingen-22b17482a552b0966a80c19d94651385357d5701.tar.bz2
ingen-22b17482a552b0966a80c19d94651385357d5701.zip
Fix patch serialisation to a string.
Fix patch uploading. Closes ticket 100. git-svn-id: http://svn.drobilla.net/lad/ingen@892 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/serialisation')
-rw-r--r--src/libs/serialisation/Serialiser.cpp21
-rw-r--r--src/libs/serialisation/Serialiser.hpp7
2 files changed, 22 insertions, 6 deletions
diff --git a/src/libs/serialisation/Serialiser.cpp b/src/libs/serialisation/Serialiser.cpp
index e3d33094..223093a0 100644
--- a/src/libs/serialisation/Serialiser.cpp
+++ b/src/libs/serialisation/Serialiser.cpp
@@ -67,12 +67,25 @@ Serialiser::to_file(SharedPtr<GraphObject> object, const string& filename)
}
+
string
-Serialiser::to_string(SharedPtr<GraphObject> object)
+Serialiser::to_string(SharedPtr<GraphObject> object,
+ const string& base_uri,
+ const GraphObject::Variables& extra_rdf)
{
_root_object = object;
- start_to_string();
+ start_to_string(base_uri);
serialise(object);
+
+ RDF::Node base_rdf_node(_model->world(), RDF::Node::RESOURCE, base_uri);
+ for (GraphObject::Variables::const_iterator v = extra_rdf.begin(); v != extra_rdf.end(); ++v) {
+ if (v->first.find(":") != string::npos) {
+ _model->add_statement(base_rdf_node, v->first, v->second);
+ } else {
+ cerr << "Warning: not serialising extra RDF with key '" << v->first << "'" << endl;
+ }
+ }
+
return finish();
}
@@ -100,11 +113,11 @@ Serialiser::start_to_filename(const string& filename)
* the desired objects have been serialised.
*/
void
-Serialiser::start_to_string()
+Serialiser::start_to_string(const string& base_uri)
{
setlocale(LC_NUMERIC, "C");
- _base_uri = "";
+ _base_uri = base_uri;
_model = new RDF::Model(_world);
_mode = TO_STRING;
}
diff --git a/src/libs/serialisation/Serialiser.hpp b/src/libs/serialisation/Serialiser.hpp
index 041bbb69..fc15cd1a 100644
--- a/src/libs/serialisation/Serialiser.hpp
+++ b/src/libs/serialisation/Serialiser.hpp
@@ -57,9 +57,12 @@ public:
Serialiser(Raul::RDF::World& world);
void to_file(SharedPtr<GraphObject> object, const string& filename);
- string to_string(SharedPtr<GraphObject> object);
+
+ string to_string(SharedPtr<GraphObject> object,
+ const string& base_uri,
+ const GraphObject::Variables& extra_rdf);
- void start_to_string();
+ void start_to_string(const string& base_uri);
void serialise(SharedPtr<GraphObject> object) throw (std::logic_error);
void serialise_connection(SharedPtr<Shared::Connection> c) throw (std::logic_error);
string finish();