summaryrefslogtreecommitdiffstats
path: root/src/sord.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2013-01-14 06:53:05 +0000
committerDavid Robillard <d@drobilla.net>2013-01-14 06:53:05 +0000
commit5cd549c8e512d9a85d7d666db5da8b8a444a281f (patch)
tree2aa2c443cf9aaf675588242bf86e8c6e0fb547e5 /src/sord.c
parentfb40f19426ce147083c26c2fe9a9805f89fb8e9b (diff)
downloadsord-5cd549c8e512d9a85d7d666db5da8b8a444a281f.tar.gz
sord-5cd549c8e512d9a85d7d666db5da8b8a444a281f.tar.bz2
sord-5cd549c8e512d9a85d7d666db5da8b8a444a281f.zip
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
Diffstat (limited to 'src/sord.c')
-rw-r--r--src/sord.c25
1 files changed, 25 insertions, 0 deletions
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,