summaryrefslogtreecommitdiffstats
path: root/src/plugin.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-09-24 23:47:31 +0000
committerDavid Robillard <d@drobilla.net>2014-09-24 23:47:31 +0000
commit7ce406f8881c8d598daa179468a9eda90459c32f (patch)
treeb27249c59a2197de6cef2d7ddeab2f42630065cf /src/plugin.c
parent4807519449ac21e9565774f1641ea14323fe82d5 (diff)
downloadlilv-7ce406f8881c8d598daa179468a9eda90459c32f.tar.gz
lilv-7ce406f8881c8d598daa179468a9eda90459c32f.tar.bz2
lilv-7ce406f8881c8d598daa179468a9eda90459c32f.zip
Fixes for new sord.
git-svn-id: http://svn.drobilla.net/lad/trunk/lilv@5465 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/plugin.c')
-rw-r--r--src/plugin.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/plugin.c b/src/plugin.c
index 9c966b6..8729314 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -142,12 +142,15 @@ lilv_plugin_load(LilvPlugin* p)
SerdReader* reader = sord_new_reader(p->world->model, env, SERD_TURTLE,
bundle_uri_node);
- SordIter* prototypes = sord_search(p->world->model,
- p->plugin_uri->node,
- p->world->uris.lv2_prototype,
- NULL, NULL);
- FOREACH_MATCH(prototypes) {
- const SordNode* t = sord_iter_get_node(prototypes, SORD_OBJECT);
+ SordModel* prototypes = lilv_world_filter_model(p->world,
+ p->world->model,
+ p->plugin_uri->node,
+ p->world->uris.lv2_prototype,
+ NULL, NULL);
+ SordModel* skel = sord_new(p->world->world, SORD_SPO, false);
+ SordIter* iter = sord_begin(prototypes);
+ for (; !sord_iter_end(iter); sord_iter_next(iter)) {
+ const SordNode* t = sord_iter_get_node(iter, SORD_OBJECT);
LilvNode* prototype = lilv_node_new_from_node(p->world, t);
lilv_world_load_resource(p->world, prototype);
@@ -158,13 +161,22 @@ lilv_plugin_load(LilvPlugin* p)
SordQuad quad;
sord_iter_get(statements, quad);
quad[0] = p->plugin_uri->node;
- sord_add(p->world->model, quad);
+ sord_add(skel, quad);
}
sord_iter_free(statements);
lilv_node_free(prototype);
}
- sord_iter_free(prototypes);
+ sord_iter_free(iter);
+
+ for (iter = sord_begin(skel); !sord_iter_end(iter); sord_iter_next(iter)) {
+ SordQuad quad;
+ sord_iter_get(iter, quad);
+ sord_add(p->world->model, quad);
+ }
+ sord_iter_free(iter);
+ sord_free(skel);
+ sord_free(prototypes);
// Parse all the plugin's data files into RDF model
LILV_FOREACH(nodes, i, p->data_uris) {