Changeset 2863


Ignore:
Timestamp:
2011-01-29 17:24:02 (4 years ago)
Author:
drobilla
Message:

Non-SPARQL version of slv2_plugin_get_uis.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/slv2/src/plugin.c

    r2862 r2863  
    894894 
    895895SLV2UIs 
    896 slv2_plugin_get_uis(SLV2Plugin plugin) 
    897 { 
    898     const char* const query_str = 
    899         "PREFIX uiext: <http://lv2plug.in/ns/extensions/ui#>\n" 
    900         "SELECT DISTINCT ?uri ?type ?binary WHERE {\n" 
    901         "<>   uiext:ui     ?uri .\n" 
    902         "?uri a            ?type ;\n" 
    903         "     uiext:binary ?binary .\n" 
    904         "}\n"; 
    905  
    906     SLV2Results results = slv2_plugin_query_sparql(plugin, query_str); 
    907  
    908     SLV2UIs result = slv2_uis_new(); 
    909  
    910     while (!librdf_query_results_finished(results->rdf_results)) { 
    911         librdf_node* uri_node    = librdf_query_results_get_binding_value(results->rdf_results, 0); 
    912         librdf_node* type_node   = librdf_query_results_get_binding_value(results->rdf_results, 1); 
    913         librdf_node* binary_node = librdf_query_results_get_binding_value(results->rdf_results, 2); 
    914  
    915         SLV2UI ui = slv2_ui_new(plugin->world, 
    916                 librdf_node_get_uri(uri_node), 
    917                 librdf_node_get_uri(type_node), 
    918                 librdf_node_get_uri(binary_node)); 
    919  
    920         raptor_sequence_push(result, ui); 
    921  
    922         librdf_free_node(uri_node); 
    923         librdf_free_node(type_node); 
    924         librdf_free_node(binary_node); 
    925  
    926         librdf_query_results_next(results->rdf_results); 
    927     } 
    928  
    929     slv2_results_free(results); 
     896slv2_plugin_get_uis(SLV2Plugin p) 
     897{ 
     898#define NS_UI (const uint8_t*)"http://lv2plug.in/ns/extensions/ui#" 
     899 
     900    SLV2UIs        result = slv2_uis_new(); 
     901    librdf_stream* uis    = slv2_plugin_find_statements( 
     902        p, 
     903        librdf_new_node_from_uri(p->world->world, p->plugin_uri->val.uri_val), 
     904        librdf_new_node_from_uri_string(p->world->world, NS_UI "ui"), 
     905        NULL); 
     906    for (; !librdf_stream_end(uis); librdf_stream_next(uis)) { 
     907        librdf_statement* s  = librdf_stream_get_object(uis); 
     908        librdf_node*      ui = librdf_statement_get_object(s); 
     909 
     910        SLV2Value type = slv2_plugin_get_unique( 
     911            p, 
     912            librdf_new_node_from_node(ui), 
     913            librdf_new_node_from_node(p->world->rdf_a_node)); 
     914 
     915        SLV2Value binary = slv2_plugin_get_unique( 
     916            p, 
     917            librdf_new_node_from_node(ui), 
     918            librdf_new_node_from_uri_string(p->world->world, NS_UI "binary")); 
     919 
     920        if (!librdf_node_is_resource(ui) 
     921            || !slv2_value_is_uri(type) 
     922            || !slv2_value_is_uri(binary)) { 
     923            SLV2_ERROR("Corrupt UI\n"); 
     924            continue; 
     925        } 
     926         
     927        SLV2UI slv2_ui = slv2_ui_new(p->world, 
     928                                     librdf_node_get_uri(ui), 
     929                                     slv2_value_as_librdf_uri(type), 
     930                                     slv2_value_as_librdf_uri(binary)); 
     931 
     932        raptor_sequence_push(result, slv2_ui); 
     933 
     934        slv2_value_free(binary); 
     935        slv2_value_free(type); 
     936    } 
     937    librdf_free_stream(uis); 
    930938 
    931939    if (slv2_uis_size(result) > 0) { 
Note: See TracChangeset for help on using the changeset viewer.