diff options
author | David Robillard <d@drobilla.net> | 2007-04-28 22:08:51 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-04-28 22:08:51 +0000 |
commit | 2afaf28258dc8b6546c6f1c762f0d401bb50b896 (patch) | |
tree | 6f8931492a406f47b260f6060bb2fdb4d71aa25e /src | |
parent | 5d1f3ff25d5060fedfad4fb1b3fa956f478a043b (diff) | |
download | lilv-2afaf28258dc8b6546c6f1c762f0d401bb50b896.tar.gz lilv-2afaf28258dc8b6546c6f1c762f0d401bb50b896.tar.bz2 lilv-2afaf28258dc8b6546c6f1c762f0d401bb50b896.zip |
Use index instead of variable name for selecting query variables (performance enhancement).
Improved ladspa2lv2, converting port hints and min/max/default values.
git-svn-id: http://svn.drobilla.net/lad/slv2@481 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r-- | src/plugin.c | 29 | ||||
-rw-r--r-- | src/port.c | 2 | ||||
-rw-r--r-- | src/query.c | 8 | ||||
-rw-r--r-- | src/slv2_internal.h | 3 |
4 files changed, 22 insertions, 20 deletions
diff --git a/src/plugin.c b/src/plugin.c index 19418fe..6919513 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -350,7 +350,7 @@ slv2_plugin_get_value(SLV2Plugin p, "<> ", predicate, " ?value .\n" "}\n", NULL); - SLV2Values result = slv2_plugin_simple_query(p, query, "value"); + SLV2Values result = slv2_plugin_simple_query(p, query, 0); free(query); @@ -370,7 +370,7 @@ slv2_plugin_get_value_for_subject(SLV2Plugin p, subject, " ", predicate, " ?value .\n" "}\n", NULL); - SLV2Values result = slv2_plugin_simple_query(p, query, "value"); + SLV2Values result = slv2_plugin_simple_query(p, query, 0); free(query); @@ -404,20 +404,19 @@ slv2_plugin_has_latency(SLV2Plugin p) { const char* const query = "ASK WHERE {\n" - " <> lv2:port ?port .\n" + " <> lv2:port ?port .\n" " ?port lv2:portHint lv2:reportsLatency ;\n" " lv2:index ?index .\n" "}\n"; - SLV2Values results = slv2_plugin_simple_query(p, query, "port"); + librdf_query_results* results = slv2_plugin_query(p, query); + assert(librdf_query_results_is_boolean(results)); - if (results) { - bool exists = (results && slv2_values_size(results) > 0); - slv2_values_free(results); - return exists; - } else { - return false; - } + bool ret = (librdf_query_results_get_boolean(results) > 0); + + librdf_free_query_results(results); + + return ret; } @@ -431,7 +430,7 @@ slv2_plugin_get_latency_port(SLV2Plugin p) " lv2:index ?index .\n" "}\n"; - SLV2Values result = slv2_plugin_simple_query(p, query, "index"); + SLV2Values result = slv2_plugin_simple_query(p, query, 0); // FIXME: need a sane error handling strategy assert(slv2_values_size(result) > 0); @@ -452,7 +451,7 @@ slv2_plugin_get_supported_features(SLV2Plugin p) " { <> lv2:requiredHostFeature ?feature }\n" "}\n"; - SLV2Values result = slv2_plugin_simple_query(p, query, "feature"); + SLV2Values result = slv2_plugin_simple_query(p, query, 0); return result; } @@ -466,7 +465,7 @@ slv2_plugin_get_optional_features(SLV2Plugin p) " <> lv2:optionalHostFeature ?feature .\n" "}\n"; - SLV2Values result = slv2_plugin_simple_query(p, query, "feature"); + SLV2Values result = slv2_plugin_simple_query(p, query, 0); return result; } @@ -480,7 +479,7 @@ slv2_plugin_get_required_features(SLV2Plugin p) " <> lv2:requiredHostFeature ?feature .\n" "}\n"; - SLV2Values result = slv2_plugin_simple_query(p, query, "feature"); + SLV2Values result = slv2_plugin_simple_query(p, query, 0); return result; } @@ -128,7 +128,7 @@ slv2_port_get_value(SLV2Plugin p, "?port lv2:symbol \"", port->symbol, "\";\n\t", property, " ?value .\n}", 0); - result = slv2_plugin_simple_query(p, query, "value"); + result = slv2_plugin_simple_query(p, query, 0); free(query); diff --git a/src/query.c b/src/query.c index bc1a7dc..b7eae2d 100644 --- a/src/query.c +++ b/src/query.c @@ -53,7 +53,7 @@ slv2_query_lang_filter(const char* variable) SLV2Values slv2_query_get_variable_bindings(librdf_query_results* results, - const char* variable) + int variable) { SLV2Values result = NULL; @@ -63,7 +63,7 @@ slv2_query_get_variable_bindings(librdf_query_results* results, while (!librdf_query_results_finished(results)) { librdf_node* node = - librdf_query_results_get_binding_value_by_name(results, variable); + librdf_query_results_get_binding_value(results, variable); librdf_uri* datatype_uri = NULL; SLV2ValueType type = SLV2_VALUE_STRING; @@ -94,7 +94,7 @@ slv2_query_get_variable_bindings(librdf_query_results* results, break; case LIBRDF_NODE_TYPE_UNKNOWN: default: - fprintf(stderr, "Unknown variable binding type for ?%s\n", variable); + fprintf(stderr, "Unknown variable binding type %d\n", variable); break; } @@ -158,7 +158,7 @@ slv2_plugin_query(SLV2Plugin plugin, SLV2Values slv2_plugin_simple_query(SLV2Plugin plugin, const char* sparql_str, - const char* variable) + unsigned variable) { librdf_query_results* results = slv2_plugin_query(plugin, sparql_str); diff --git a/src/slv2_internal.h b/src/slv2_internal.h index 180f07d..dba9832 100644 --- a/src/slv2_internal.h +++ b/src/slv2_internal.h @@ -66,6 +66,9 @@ SLV2Plugin slv2_plugin_new(SLV2World world, librdf_uri* uri, const char* binary_ void slv2_plugin_load(SLV2Plugin p); void slv2_plugin_free(SLV2Plugin plugin); +librdf_query_results* slv2_plugin_query(SLV2Plugin plugin, + const char* sparql_str); + /** Create a new, empty plugin list. * |