From 5cd549c8e512d9a85d7d666db5da8b8a444a281f Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 14 Jan 2013 06:53:05 +0000 Subject: Add sord_node_get() for easily getting single property values. git-svn-id: http://svn.drobilla.net/sord/trunk@280 3d64ff67-21c5-427c-a301-fe4f08042e5a --- src/sord.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/sord.c') diff --git a/src/sord.c b/src/sord.c index 9510d50..cad3c4d 100644 --- a/src/sord.c +++ b/src/sord.c @@ -844,6 +844,31 @@ sord_search(SordModel* model, return sord_find(model, pat); } +const SordNode* +sord_get(SordModel* model, + const SordNode* s, + const SordNode* p, + const SordNode* o, + const SordNode* g) +{ + if ((bool)s + (bool)p + (bool)o != 2) { + return NULL; + } + + SordIter* i = sord_search(model, s, p, o, g); + const SordNode* ret = NULL; + if (!s) { + ret = sord_iter_get_node(i, SORD_SUBJECT); + } else if (!p) { + ret = sord_iter_get_node(i, SORD_PREDICATE); + } else if (!o) { + ret = sord_iter_get_node(i, SORD_OBJECT); + } + + sord_iter_free(i); + return ret; +} + bool sord_ask(SordModel* model, const SordNode* s, -- cgit v1.2.1