From fe353cce9665b33a7372ed2d1683b3c2748625f7 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 2 May 2012 06:24:22 +0000 Subject: Preliminary socket control interface, and ingen_cmd command line interface which uses it. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4311 a436a847-0d15-0410-975c-d299462d15a1 --- src/shared/AtomReader.cpp | 19 ++++++++++++------- src/shared/Builder.cpp | 2 +- src/shared/Configuration.cpp | 1 + src/shared/Forge.cpp | 1 + src/shared/URIs.cpp | 2 +- src/shared/World.cpp | 1 + 6 files changed, 17 insertions(+), 9 deletions(-) (limited to 'src/shared') diff --git a/src/shared/AtomReader.cpp b/src/shared/AtomReader.cpp index 6925d478..7cafd919 100644 --- a/src/shared/AtomReader.cpp +++ b/src/shared/AtomReader.cpp @@ -33,7 +33,7 @@ AtomReader::AtomReader(LV2URIMap& map, URIs& uris, Forge& forge, Interface& ifac } void -AtomReader::get_uri(const LV2_Atom* in, Raul::Atom& out) +AtomReader::get_atom(const LV2_Atom* in, Raul::Atom& out) { if (in) { if (in->type == _uris.atom_URID) { @@ -49,9 +49,14 @@ void AtomReader::get_props(const LV2_Atom_Object* obj, Ingen::Resource::Properties& props) { + if (obj->body.otype) { + props.insert( + std::make_pair(_uris.rdf_type, + _forge.alloc_uri(_map.unmap_uri(obj->body.otype)))); + } LV2_ATOM_OBJECT_FOREACH(obj, p) { Raul::Atom val; - get_uri(&p->value, val); + get_atom(&p->value, val); props.insert(std::make_pair(_map.unmap_uri(p->key), val)); } } @@ -96,8 +101,8 @@ AtomReader::write(const LV2_Atom* msg) Raul::Atom tail_atom; Raul::Atom head_atom; - get_uri(tail, tail_atom); - get_uri(head, head_atom); + get_atom(tail, tail_atom); + get_atom(head, head_atom); if (tail_atom.is_valid() && head_atom.is_valid()) { _iface.disconnect(Raul::Path(tail_atom.get_uri()), Raul::Path(head_atom.get_uri())); @@ -130,8 +135,8 @@ AtomReader::write(const LV2_Atom* msg) Raul::Atom tail_atom; Raul::Atom head_atom; - get_uri(tail, tail_atom); - get_uri(head, head_atom); + get_atom(tail, tail_atom); + get_atom(head, head_atom); _iface.connect(Raul::Path(tail_atom.get_uri()), Raul::Path(head_atom.get_uri())); } else { @@ -153,7 +158,7 @@ AtomReader::write(const LV2_Atom* msg) LV2_ATOM_OBJECT_FOREACH(body, p) { Raul::Atom val; - get_uri(&p->value, val); + get_atom(&p->value, val); _iface.set_property(subject_uri, _map.unmap_uri(p->key), val); } } else if (obj->body.otype == _uris.patch_Patch) { diff --git a/src/shared/Builder.cpp b/src/shared/Builder.cpp index e726d647..272a3394 100644 --- a/src/shared/Builder.cpp +++ b/src/shared/Builder.cpp @@ -66,7 +66,7 @@ Builder::build(SharedPtr object) if (node) { Resource::Properties props; props.insert(make_pair(uris.rdf_type, uris.ingen_Node)); - props.insert(make_pair(uris.rdf_instanceOf, + props.insert(make_pair(uris.ingen_prototype, _uris->forge.alloc_uri(node->plugin()->uri().str()))); _interface.put(node->path(), props); build_object(object); diff --git a/src/shared/Configuration.cpp b/src/shared/Configuration.cpp index d5aa6f9b..fafe7a49 100644 --- a/src/shared/Configuration.cpp +++ b/src/shared/Configuration.cpp @@ -40,6 +40,7 @@ Configuration::Configuration() add("connect", 'c', "Connect to engine URI", STRING, Value("osc.udp://localhost:16180")); add("engine", 'e', "Run (JACK) engine", BOOL, Value(false)); add("engine-port", 'E', "Engine listen port", INT, Value(16180)); + add("socket", 'S', "Engine socket path", STRING, Value("/tmp/ingen.sock")); add("gui", 'g', "Launch the GTK graphical interface", BOOL, Value(false)); add("help", 'h', "Print this help message", BOOL, Value(false)); add("jack-client", 'n', "JACK client name", STRING, Value("ingen")); diff --git a/src/shared/Forge.cpp b/src/shared/Forge.cpp index 9d33ada9..fc8116c6 100644 --- a/src/shared/Forge.cpp +++ b/src/shared/Forge.cpp @@ -27,6 +27,7 @@ Forge::Forge(Shared::LV2URIMap& map) Float = map.map_uri(LV2_ATOM__Float); Bool = map.map_uri(LV2_ATOM__Bool); URI = map.map_uri(LV2_ATOM__URI); + URID = map.map_uri(LV2_ATOM__URID); String = map.map_uri(LV2_ATOM__String); Dict = map.map_uri(LV2_ATOM__Object); } diff --git a/src/shared/URIs.cpp b/src/shared/URIs.cpp index db5c5bfd..058e4216 100644 --- a/src/shared/URIs.cpp +++ b/src/shared/URIs.cpp @@ -82,6 +82,7 @@ URIs::URIs(Ingen::Forge& f, LV2URIMap* map) , ingen_node (forge, map, NS_INGEN "node") , ingen_polyphonic (forge, map, NS_INGEN "polyphonic") , ingen_polyphony (forge, map, NS_INGEN "polyphony") + , ingen_prototype (forge, map, NS_INGEN "prototype") , ingen_sampleRate (forge, map, NS_INGEN "sampleRate") , ingen_selected (forge, map, NS_INGEN "selected") , ingen_tail (forge, map, NS_INGEN "tail") @@ -125,7 +126,6 @@ URIs::URIs(Ingen::Forge& f, LV2URIMap* map) , patch_remove (forge, map, LV2_PATCH__remove) , patch_request (forge, map, LV2_PATCH__request) , patch_subject (forge, map, LV2_PATCH__subject) - , rdf_instanceOf (forge, map, NS_RDF "instanceOf") , rdf_type (forge, map, NS_RDF "type") , rdfs_seeAlso (forge, map, NS_RDFS "seeAlso") , wildcard (forge, map, NS_INGEN "wildcard") diff --git a/src/shared/World.cpp b/src/shared/World.cpp index a5f86319..b99dfd1a 100644 --- a/src/shared/World.cpp +++ b/src/shared/World.cpp @@ -121,6 +121,7 @@ public: // Set up RDF namespaces rdf_world->add_prefix("atom", "http://lv2plug.in/ns/ext/atom#"); + rdf_world->add_prefix("patch", "http://lv2plug.in/ns/ext/patch#"); rdf_world->add_prefix("doap", "http://usefulinc.com/ns/doap#"); rdf_world->add_prefix("ingen", "http://drobilla.net/ns/ingen#"); rdf_world->add_prefix("lv2", "http://lv2plug.in/ns/lv2core#"); -- cgit v1.2.1