Changeset 2130

Show
Ignore:
Timestamp:
06/19/09 15:33:10 (15 months ago)
Author:
drobilla
Message:

Display port group information.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/slv2/utils/lv2_inspect.c

    r2090 r2130  
    2727SLV2Value event_class   = NULL; 
    2828SLV2Value control_class = NULL; 
     29SLV2Value in_group_pred = NULL; 
     30SLV2Value role_pred     = NULL; 
     31 
     32void 
     33print_group(SLV2Plugin p, SLV2Value group, SLV2Value symbol) 
     34{ 
     35        printf("\n\tGroup %s:\n", slv2_value_as_string(group)); 
     36        printf("\t\tSymbol: %s\n", slv2_value_as_string(symbol)); 
     37} 
    2938 
    3039void 
     
    4251        SLV2Values classes = slv2_port_get_classes(p, port); 
    4352 
    44         printf("\t\tClasses:\n"); 
     53        printf("\t\tType:       "); 
    4554        for (unsigned i=0; i < slv2_values_size(classes); ++i) { 
    46                 printf("\t\t\t%s\n", slv2_value_as_uri(slv2_values_get_at(classes, i))); 
     55                printf("%s", slv2_value_as_uri(slv2_values_get_at(classes, i))); 
     56                if (i != slv2_values_size(classes) - 1) 
     57                        printf("\n\t\t            "); 
    4758        } 
    4859 
     
    6172        SLV2ScalePoints points = slv2_port_get_scale_points(p, port); 
    6273        if (points) 
    63                 printf("\t\tScale Points:\n"); 
     74                printf("\n\t\tScale Points:\n"); 
    6475        for (unsigned i=0; i < slv2_scale_points_size(points); ++i) { 
    6576                SLV2ScalePoint p = slv2_scale_points_get_at(points, i); 
     
    7687        printf("\t\tName:       %s\n", slv2_value_as_string(val)); 
    7788        slv2_value_free(val); 
     89 
     90        SLV2Values groups = slv2_port_get_value(p, port, in_group_pred); 
     91        if (slv2_values_size(groups) > 0) 
     92                printf("\t\tGroup:      %s\n", slv2_value_as_string(slv2_values_get_at(groups, 0))); 
     93        slv2_values_free(groups); 
     94 
     95        SLV2Values roles = slv2_port_get_value(p, port, role_pred); 
     96        if (slv2_values_size(roles) > 0) 
     97                printf("\t\tRole:       %s\n", slv2_value_as_string(slv2_values_get_at(roles, 0))); 
     98        slv2_values_free(roles); 
    7899 
    79100        if (slv2_port_is_a(p, port, control_class)) { 
     
    169190        } 
    170191        slv2_uis_free(uis); 
    171  
    172         //SLV2Values ui = slv2_plugin_get_value_for_subject(p, 
    173         //              "<http://ll-plugins.nongnu.org/lv2/ext/gtk2ui#ui>"); 
    174192 
    175193        printf("\tData URIs:         "); 
     
    232250 
    233251 
     252        /* Groups */ 
     253 
     254        SLV2Results groups = slv2_plugin_query_sparql(p, "\ 
     255PREFIX pg: <http://lv2plug.in/ns/dev/port-groups#> \ 
     256PREFIX dc:  <http://dublincore.org/documents/dcmi-namespace/> \ 
     257SELECT DISTINCT ?group ?sym WHERE {\n" 
     258"       <>     lv2:port   ?port .\n" 
     259"       ?port  pg:inGroup ?group .\n" 
     260"       ?group lv2:symbol ?sym .\n" 
     261"}"); 
     262        for (; !slv2_results_finished(groups); slv2_results_next(groups)) { 
     263                SLV2Value group  = slv2_results_get_binding_value(groups, 0); 
     264                SLV2Value symbol = slv2_results_get_binding_value(groups, 1); 
     265                print_group(p, group, symbol); 
     266        } 
     267        slv2_results_free(groups); 
     268 
     269 
    234270        /* Ports */ 
    235271 
     
    281317        event_class = slv2_value_new_uri(world, SLV2_PORT_CLASS_EVENT); 
    282318        control_class = slv2_value_new_uri(world, SLV2_PORT_CLASS_CONTROL); 
     319        in_group_pred = slv2_value_new_uri(world, "http://lv2plug.in/ns/dev/port-groups#inGroup"); 
     320        role_pred = slv2_value_new_uri(world, "http://lv2plug.in/ns/dev/port-groups#role"); 
    283321 
    284322        if (argc != 2) {