From 5e9c82673cf1b762b50a6c9a6d94c46c2a853ff3 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 17 Aug 2008 19:22:17 +0000 Subject: Serialise connections as proper resources. git-svn-id: http://svn.drobilla.net/lad/ingen@1419 a436a847-0d15-0410-975c-d299462d15a1 --- src/libs/serialisation/Serialiser.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'src/libs/serialisation/Serialiser.cpp') diff --git a/src/libs/serialisation/Serialiser.cpp b/src/libs/serialisation/Serialiser.cpp index 8f0241e0..675e0eb5 100644 --- a/src/libs/serialisation/Serialiser.cpp +++ b/src/libs/serialisation/Serialiser.cpp @@ -344,7 +344,7 @@ Serialiser::serialise_patch(SharedPtr patch) for (Shared::Patch::Connections::const_iterator c = patch->connections().begin(); c != patch->connections().end(); ++c) { - serialise_connection(*c); + serialise_connection(patch, *c); } } @@ -437,7 +437,8 @@ Serialiser::serialise_port(const Port* port, const Redland::Node& port_id) void -Serialiser::serialise_connection(SharedPtr connection) throw (std::logic_error) +Serialiser::serialise_connection(SharedPtr parent, + SharedPtr connection) throw (std::logic_error) { if (!_model) throw std::logic_error("serialise_connection called without serialization in progress"); @@ -446,13 +447,19 @@ Serialiser::serialise_connection(SharedPtr connection) throw (std::l const Redland::Node dst_node = path_to_rdf_node(connection->dst_port_path()); /* This would allow associating data with the connection... */ - /*const Redland::Node connection_node = _world.blank_id(); - _model->add_statement(connection_node, "ingen:hasSource", src_node); - _model->add_statement(dst_node, "ingen:hasConnection", connection_node); - */ + const Redland::Node connection_node = _world.blank_id(); + _model->add_statement(connection_node, "ingen:source", src_node); + _model->add_statement(connection_node, "ingen:destination", dst_node); + if (parent) { + const Redland::Node parent_node = path_to_rdf_node(parent->path()); + _model->add_statement(parent_node, "ingen:connection", connection_node); + } else { + _model->add_statement(connection_node, "rdf:type", + Redland::Node(_model->world(), Redland::Node::RESOURCE, "ingen:Connection")); + } /* ... but this is cleaner */ - _model->add_statement(dst_node, "ingen:connectedTo", src_node); + //_model->add_statement(dst_node, "ingen:connectedTo", src_node); } -- cgit v1.2.1