00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00021 #ifndef LILV_LILV_H
00022 #define LILV_LILV_H
00023
00024 #include <stddef.h>
00025 #include <stdint.h>
00026 #include <stdio.h>
00027
00028 #include "lv2/lv2plug.in/ns/lv2core/lv2.h"
00029 #include "lv2/lv2plug.in/ns/ext/urid/urid.h"
00030
00031 #ifdef LILV_SHARED
00032 # ifdef _WIN32
00033 # define LILV_LIB_IMPORT __declspec(dllimport)
00034 # define LILV_LIB_EXPORT __declspec(dllexport)
00035 # else
00036 # define LILV_LIB_IMPORT __attribute__((visibility("default")))
00037 # define LILV_LIB_EXPORT __attribute__((visibility("default")))
00038 # endif
00039 # ifdef LILV_INTERNAL
00040 # define LILV_API LILV_LIB_EXPORT
00041 # else
00042 # define LILV_API LILV_LIB_IMPORT
00043 # endif
00044 #else
00045 # define LILV_API
00046 #endif
00047
00048 #ifdef __cplusplus
00049 extern "C" {
00050 #else
00051 # include <stdbool.h>
00052 #endif
00053
00054 #define LILV_NS_DOAP "http://usefulinc.com/ns/doap#"
00055 #define LILV_NS_FOAF "http://xmlns.com/foaf/0.1/"
00056 #define LILV_NS_LILV "http://drobilla.net/ns/lilv#"
00057 #define LILV_NS_LV2 "http://lv2plug.in/ns/lv2core#"
00058 #define LILV_NS_OWL "http://www.w3.org/2002/07/owl#"
00059 #define LILV_NS_RDF "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
00060 #define LILV_NS_RDFS "http://www.w3.org/2000/01/rdf-schema#"
00061 #define LILV_NS_XSD "http://www.w3.org/2001/XMLSchema#"
00062
00063 #define LILV_URI_AUDIO_PORT "http://lv2plug.in/ns/lv2core#AudioPort"
00064 #define LILV_URI_CONTROL_PORT "http://lv2plug.in/ns/lv2core#ControlPort"
00065 #define LILV_URI_EVENT_PORT "http://lv2plug.in/ns/ext/event#EventPort"
00066 #define LILV_URI_INPUT_PORT "http://lv2plug.in/ns/lv2core#InputPort"
00067 #define LILV_URI_MIDI_EVENT "http://lv2plug.in/ns/ext/midi#MidiEvent"
00068 #define LILV_URI_OUTPUT_PORT "http://lv2plug.in/ns/lv2core#OutputPort"
00069 #define LILV_URI_PORT "http://lv2plug.in/ns/lv2core#Port"
00070
00071 typedef struct LilvPluginImpl LilvPlugin;
00072 typedef struct LilvPluginClassImpl LilvPluginClass;
00073 typedef struct LilvPortImpl LilvPort;
00074 typedef struct LilvScalePointImpl LilvScalePoint;
00075 typedef struct LilvUIImpl LilvUI;
00076 typedef struct LilvNodeImpl LilvNode;
00077 typedef struct LilvWorldImpl LilvWorld;
00078 typedef struct LilvInstanceImpl LilvInstance;
00079 typedef struct LilvStateImpl LilvState;
00081 typedef void LilvIter;
00082 typedef void LilvPluginClasses;
00083 typedef void LilvPlugins;
00084 typedef void LilvScalePoints;
00085 typedef void LilvUIs;
00086 typedef void LilvNodes;
00108 LILV_API
00109 const char*
00110 lilv_uri_to_path(const char* uri);
00111
00116 LILV_API
00117 LilvNode*
00118 lilv_new_uri(LilvWorld* world, const char* uri);
00119
00124 LILV_API
00125 LilvNode*
00126 lilv_new_string(LilvWorld* world, const char* str);
00127
00132 LILV_API
00133 LilvNode*
00134 lilv_new_int(LilvWorld* world, int val);
00135
00140 LILV_API
00141 LilvNode*
00142 lilv_new_float(LilvWorld* world, float val);
00143
00148 LILV_API
00149 LilvNode*
00150 lilv_new_bool(LilvWorld* world, bool val);
00151
00156 LILV_API
00157 void
00158 lilv_node_free(LilvNode* val);
00159
00163 LILV_API
00164 LilvNode*
00165 lilv_node_duplicate(const LilvNode* val);
00166
00170 LILV_API
00171 bool
00172 lilv_node_equals(const LilvNode* value, const LilvNode* other);
00173
00187 LILV_API
00188 char*
00189 lilv_node_get_turtle_token(const LilvNode* value);
00190
00194 LILV_API
00195 bool
00196 lilv_node_is_uri(const LilvNode* value);
00197
00203 LILV_API
00204 const char*
00205 lilv_node_as_uri(const LilvNode* value);
00206
00210 LILV_API
00211 bool
00212 lilv_node_is_blank(const LilvNode* value);
00213
00219 LILV_API
00220 const char*
00221 lilv_node_as_blank(const LilvNode* value);
00222
00227 LILV_API
00228 bool
00229 lilv_node_is_literal(const LilvNode* value);
00230
00235 LILV_API
00236 bool
00237 lilv_node_is_string(const LilvNode* value);
00238
00242 LILV_API
00243 const char*
00244 lilv_node_as_string(const LilvNode* value);
00245
00249 LILV_API
00250 bool
00251 lilv_node_is_float(const LilvNode* value);
00252
00258 LILV_API
00259 float
00260 lilv_node_as_float(const LilvNode* value);
00261
00265 LILV_API
00266 bool
00267 lilv_node_is_int(const LilvNode* value);
00268
00273 LILV_API
00274 int
00275 lilv_node_as_int(const LilvNode* value);
00276
00280 LILV_API
00281 bool
00282 lilv_node_is_bool(const LilvNode* value);
00283
00288 LILV_API
00289 bool
00290 lilv_node_as_bool(const LilvNode* value);
00291
00314
00315
00325 #define LILV_FOREACH(colltype, iter, collection) \
00326 for (LilvIter* (iter) = lilv_ ## colltype ## _begin(collection); \
00327 !lilv_ ## colltype ## _is_end(collection, iter); \
00328 (iter) = lilv_ ## colltype ## _next(collection, iter))
00329
00330
00331
00332 LILV_API
00333 void
00334 lilv_plugin_classes_free(LilvPluginClasses* collection);
00335
00336 LILV_API
00337 unsigned
00338 lilv_plugin_classes_size(const LilvPluginClasses* collection);
00339
00340 LILV_API
00341 LilvIter*
00342 lilv_plugin_classes_begin(const LilvPluginClasses* collection);
00343
00344 LILV_API
00345 const LilvPluginClass*
00346 lilv_plugin_classes_get(const LilvPluginClasses* collection, LilvIter* i);
00347
00348 LILV_API
00349 LilvIter*
00350 lilv_plugin_classes_next(const LilvPluginClasses* collection, LilvIter* i);
00351
00352 LILV_API
00353 bool
00354 lilv_plugin_classes_is_end(const LilvPluginClasses* collection, LilvIter* i);
00355
00362 LILV_API
00363 const LilvPluginClass*
00364 lilv_plugin_classes_get_by_uri(const LilvPluginClasses* classes,
00365 const LilvNode* uri);
00366
00367
00368
00369 LILV_API
00370 void
00371 lilv_scale_points_free(LilvScalePoints* collection);
00372
00373 LILV_API
00374 unsigned
00375 lilv_scale_points_size(const LilvScalePoints* collection);
00376
00377 LILV_API
00378 LilvIter*
00379 lilv_scale_points_begin(const LilvScalePoints* collection);
00380
00381 LILV_API
00382 const LilvScalePoint*
00383 lilv_scale_points_get(const LilvScalePoints* collection, LilvIter* i);
00384
00385 LILV_API
00386 LilvIter*
00387 lilv_scale_points_next(const LilvScalePoints* collection, LilvIter* i);
00388
00389 LILV_API
00390 bool
00391 lilv_scale_points_is_end(const LilvScalePoints* collection, LilvIter* i);
00392
00393
00394
00395 LILV_API
00396 void
00397 lilv_uis_free(LilvUIs* collection);
00398
00399 LILV_API
00400 unsigned
00401 lilv_uis_size(const LilvUIs* collection);
00402
00403 LILV_API
00404 LilvIter*
00405 lilv_uis_begin(const LilvUIs* collection);
00406
00407 LILV_API
00408 const LilvUI*
00409 lilv_uis_get(const LilvUIs* collection, LilvIter* i);
00410
00411 LILV_API
00412 LilvIter*
00413 lilv_uis_next(const LilvUIs* collection, LilvIter* i);
00414
00415 LILV_API
00416 bool
00417 lilv_uis_is_end(const LilvUIs* collection, LilvIter* i);
00418
00425 LILV_API
00426 const LilvUI*
00427 lilv_uis_get_by_uri(const LilvUIs* uis,
00428 const LilvNode* uri);
00429
00430
00431
00432 LILV_API
00433 void
00434 lilv_nodes_free(LilvNodes* collection);
00435
00436 LILV_API
00437 unsigned
00438 lilv_nodes_size(const LilvNodes* collection);
00439
00440 LILV_API
00441 LilvIter*
00442 lilv_nodes_begin(const LilvNodes* collection);
00443
00444 LILV_API
00445 const LilvNode*
00446 lilv_nodes_get(const LilvNodes* collection, LilvIter* i);
00447
00448 LILV_API
00449 LilvIter*
00450 lilv_nodes_next(const LilvNodes* collection, LilvIter* i);
00451
00452 LILV_API
00453 bool
00454 lilv_nodes_is_end(const LilvNodes* collection, LilvIter* i);
00455
00456 LILV_API
00457 LilvNode*
00458 lilv_nodes_get_first(const LilvNodes* collection);
00459
00463 LILV_API
00464 bool
00465 lilv_nodes_contains(const LilvNodes* values, const LilvNode* value);
00466
00467
00468
00469 LILV_API
00470 unsigned
00471 lilv_plugins_size(const LilvPlugins* collection);
00472
00473 LILV_API
00474 LilvIter*
00475 lilv_plugins_begin(const LilvPlugins* collection);
00476
00477 LILV_API
00478 const LilvPlugin*
00479 lilv_plugins_get(const LilvPlugins* collection, LilvIter* i);
00480
00481 LILV_API
00482 LilvIter*
00483 lilv_plugins_next(const LilvPlugins* collection, LilvIter* i);
00484
00485 LILV_API
00486 bool
00487 lilv_plugins_is_end(const LilvPlugins* collection, LilvIter* i);
00488
00495 LILV_API
00496 const LilvPlugin*
00497 lilv_plugins_get_by_uri(const LilvPlugins* plugins,
00498 const LilvNode* uri);
00499
00514 LILV_API
00515 LilvWorld*
00516 lilv_world_new(void);
00517
00525 #define LILV_OPTION_FILTER_LANG "http://drobilla.net/ns/lilv#filter-lang"
00526
00531 #define LILV_OPTION_DYN_MANIFEST "http://drobilla.net/ns/lilv#dyn-manifest"
00532
00540 LILV_API
00541 void
00542 lilv_world_set_option(LilvWorld* world,
00543 const char* uri,
00544 const LilvNode* value);
00545
00553 LILV_API
00554 void
00555 lilv_world_free(LilvWorld* world);
00556
00568 LILV_API
00569 void
00570 lilv_world_load_all(LilvWorld* world);
00571
00584 LILV_API
00585 void
00586 lilv_world_load_bundle(LilvWorld* world,
00587 LilvNode* bundle_uri);
00588
00597 LILV_API
00598 int
00599 lilv_world_load_resource(LilvWorld* world,
00600 const LilvNode* resource);
00601
00605 LILV_API
00606 const LilvPluginClass*
00607 lilv_world_get_plugin_class(const LilvWorld* world);
00608
00613 LILV_API
00614 const LilvPluginClasses*
00615 lilv_world_get_plugin_classes(const LilvWorld* world);
00616
00628 LILV_API
00629 const LilvPlugins*
00630 lilv_world_get_all_plugins(const LilvWorld* world);
00631
00637 LILV_API
00638 LilvNodes*
00639 lilv_world_find_nodes(LilvWorld* world,
00640 const LilvNode* subject,
00641 const LilvNode* predicate,
00642 const LilvNode* object);
00643
00660 LILV_API
00661 bool
00662 lilv_plugin_verify(const LilvPlugin* plugin);
00663
00678 LILV_API
00679 const LilvNode*
00680 lilv_plugin_get_uri(const LilvPlugin* plugin);
00681
00693 LILV_API
00694 const LilvNode*
00695 lilv_plugin_get_bundle_uri(const LilvPlugin* plugin);
00696
00705 LILV_API
00706 const LilvNodes*
00707 lilv_plugin_get_data_uris(const LilvPlugin* plugin);
00708
00715 LILV_API
00716 const LilvNode*
00717 lilv_plugin_get_library_uri(const LilvPlugin* plugin);
00718
00726 LILV_API
00727 LilvNode*
00728 lilv_plugin_get_name(const LilvPlugin* plugin);
00729
00733 LILV_API
00734 const LilvPluginClass*
00735 lilv_plugin_get_class(const LilvPlugin* plugin);
00736
00749 LILV_API
00750 LilvNodes*
00751 lilv_plugin_get_value(const LilvPlugin* p,
00752 const LilvNode* predicate);
00753
00759 LILV_API
00760 bool
00761 lilv_plugin_has_feature(const LilvPlugin* p,
00762 const LilvNode* feature_uri);
00763
00774 LILV_API
00775 LilvNodes*
00776 lilv_plugin_get_supported_features(const LilvPlugin* p);
00777
00789 LILV_API
00790 LilvNodes*
00791 lilv_plugin_get_required_features(const LilvPlugin* p);
00792
00801 LILV_API
00802 LilvNodes*
00803 lilv_plugin_get_optional_features(const LilvPlugin* p);
00804
00808 LILV_API
00809 bool
00810 lilv_plugin_has_extension_data(const LilvPlugin* p,
00811 const LilvNode* uri);
00812
00818 LILV_API
00819 LilvNodes*
00820 lilv_plugin_get_extension_data(const LilvPlugin* p);
00821
00825 LILV_API
00826 uint32_t
00827 lilv_plugin_get_num_ports(const LilvPlugin* p);
00828
00843 LILV_API
00844 void
00845 lilv_plugin_get_port_ranges_float(const LilvPlugin* p,
00846 float* min_values,
00847 float* max_values,
00848 float* def_values);
00849
00856 LILV_API
00857 uint32_t
00858 lilv_plugin_get_num_ports_of_class(const LilvPlugin* p,
00859 const LilvNode* class_1, ...);
00860
00866 LILV_API
00867 bool
00868 lilv_plugin_has_latency(const LilvPlugin* p);
00869
00879 LILV_API
00880 uint32_t
00881 lilv_plugin_get_latency_port_index(const LilvPlugin* p);
00882
00886 LILV_API
00887 const LilvPort*
00888 lilv_plugin_get_port_by_index(const LilvPlugin* plugin,
00889 uint32_t index);
00890
00896 LILV_API
00897 const LilvPort*
00898 lilv_plugin_get_port_by_symbol(const LilvPlugin* plugin,
00899 const LilvNode* symbol);
00900
00910 LILV_API
00911 LilvPort*
00912 lilv_plugin_get_port_by_designation(const LilvPlugin* plugin,
00913 const LilvNode* port_class,
00914 const LilvNode* designation);
00915
00922 LILV_API
00923 LilvNode*
00924 lilv_plugin_get_project(const LilvPlugin* plugin);
00925
00931 LILV_API
00932 LilvNode*
00933 lilv_plugin_get_author_name(const LilvPlugin* plugin);
00934
00940 LILV_API
00941 LilvNode*
00942 lilv_plugin_get_author_email(const LilvPlugin* plugin);
00943
00949 LILV_API
00950 LilvNode*
00951 lilv_plugin_get_author_homepage(const LilvPlugin* plugin);
00952
00959 LILV_API
00960 bool
00961 lilv_plugin_is_replaced(const LilvPlugin* plugin);
00962
00969 LILV_API
00970 void
00971 lilv_plugin_write_description(LilvWorld* world,
00972 const LilvPlugin* plugin,
00973 const LilvNode* base_uri,
00974 FILE* plugin_file);
00975
00982 LILV_API
00983 void
00984 lilv_plugin_write_manifest_entry(LilvWorld* world,
00985 const LilvPlugin* plugin,
00986 const LilvNode* base_uri,
00987 FILE* manifest_file,
00988 const char* plugin_file_path);
00989
01003 LILV_API
01004 LilvNodes*
01005 lilv_plugin_get_related(const LilvPlugin* plugin, const LilvNode* type);
01006
01016 LILV_API
01017 LilvNodes*
01018 lilv_port_get_value(const LilvPlugin* plugin,
01019 const LilvPort* port,
01020 const LilvNode* predicate);
01021
01025 LILV_API
01026 LilvNodes*
01027 lilv_port_get_properties(const LilvPlugin* plugin,
01028 const LilvPort* port);
01029
01033 LILV_API
01034 bool
01035 lilv_port_has_property(const LilvPlugin* p,
01036 const LilvPort* port,
01037 const LilvNode* property_uri);
01038
01042 LILV_API
01043 bool
01044 lilv_port_supports_event(const LilvPlugin* p,
01045 const LilvPort* port,
01046 const LilvNode* event_uri);
01047
01053 LILV_API
01054 uint32_t
01055 lilv_port_get_index(const LilvPlugin* plugin,
01056 const LilvPort* port);
01057
01063 LILV_API
01064 const LilvNode*
01065 lilv_port_get_symbol(const LilvPlugin* plugin,
01066 const LilvPort* port);
01067
01074 LILV_API
01075 LilvNode*
01076 lilv_port_get_name(const LilvPlugin* plugin,
01077 const LilvPort* port);
01078
01086 LILV_API
01087 const LilvNodes*
01088 lilv_port_get_classes(const LilvPlugin* plugin,
01089 const LilvPort* port);
01090
01099 LILV_API
01100 bool
01101 lilv_port_is_a(const LilvPlugin* plugin,
01102 const LilvPort* port,
01103 const LilvNode* port_class);
01104
01113 LILV_API
01114 void
01115 lilv_port_get_range(const LilvPlugin* plugin,
01116 const LilvPort* port,
01117 LilvNode** deflt,
01118 LilvNode** min,
01119 LilvNode** max);
01120
01128 LILV_API
01129 LilvScalePoints*
01130 lilv_port_get_scale_points(const LilvPlugin* plugin,
01131 const LilvPort* port);
01132
01144 LILV_API
01145 LilvState*
01146 lilv_state_new_from_world(LilvWorld* world,
01147 LV2_URID_Map* map,
01148 const LilvNode* subject);
01149
01163 LILV_API
01164 LilvState*
01165 lilv_state_new_from_file(LilvWorld* world,
01166 LV2_URID_Map* map,
01167 const LilvNode* subject,
01168 const char* path);
01169
01173 LILV_API
01174 LilvState*
01175 lilv_state_new_from_string(LilvWorld* world,
01176 LV2_URID_Map* map,
01177 const char* str);
01178
01189 typedef const void* (*LilvGetPortValueFunc)(const char* port_symbol,
01190 void* user_data,
01191 uint32_t* size,
01192 uint32_t* type);
01193
01251 LILV_API
01252 LilvState*
01253 lilv_state_new_from_instance(const LilvPlugin* plugin,
01254 LilvInstance* instance,
01255 LV2_URID_Map* map,
01256 const char* file_dir,
01257 const char* copy_dir,
01258 const char* link_dir,
01259 const char* save_dir,
01260 LilvGetPortValueFunc get_value,
01261 void* user_data,
01262 uint32_t flags,
01263 const LV2_Feature *const * features);
01264
01268 LILV_API
01269 void
01270 lilv_state_free(LilvState* state);
01271
01275 LILV_API
01276 bool
01277 lilv_state_equals(const LilvState* a, const LilvState* b);
01278
01282 LILV_API
01283 unsigned
01284 lilv_state_get_num_properties(const LilvState* state);
01285
01289 LILV_API
01290 const LilvNode*
01291 lilv_state_get_plugin_uri(const LilvState* state);
01292
01296 LILV_API
01297 const char*
01298 lilv_state_get_label(const LilvState* state);
01299
01303 LILV_API
01304 void
01305 lilv_state_set_label(LilvState* state,
01306 const char* label);
01307
01316 typedef void (*LilvSetPortValueFunc)(const char* port_symbol,
01317 void* user_data,
01318 const void* value,
01319 uint32_t size,
01320 uint32_t type);
01321
01344 LILV_API
01345 void
01346 lilv_state_restore(const LilvState* state,
01347 LilvInstance* instance,
01348 LilvSetPortValueFunc set_value,
01349 void* user_data,
01350 uint32_t flags,
01351 const LV2_Feature *const * features);
01352
01368 LILV_API
01369 int
01370 lilv_state_save(LilvWorld* world,
01371 LV2_URID_Map* map,
01372 LV2_URID_Unmap* unmap,
01373 const LilvState* state,
01374 const char* uri,
01375 const char* dir,
01376 const char* filename);
01377
01381 LILV_API
01382 char*
01383 lilv_state_to_string(LilvWorld* world,
01384 LV2_URID_Map* map,
01385 LV2_URID_Unmap* unmap,
01386 const LilvState* state,
01387 const char* uri,
01388 const char* base_uri);
01389
01400 LILV_API
01401 const LilvNode*
01402 lilv_scale_point_get_label(const LilvScalePoint* point);
01403
01408 LILV_API
01409 const LilvNode*
01410 lilv_scale_point_get_value(const LilvScalePoint* point);
01411
01423 LILV_API
01424 const LilvNode*
01425 lilv_plugin_class_get_parent_uri(const LilvPluginClass* plugin_class);
01426
01431 LILV_API
01432 const LilvNode*
01433 lilv_plugin_class_get_uri(const LilvPluginClass* plugin_class);
01434
01439 LILV_API
01440 const LilvNode*
01441 lilv_plugin_class_get_label(const LilvPluginClass* plugin_class);
01442
01447 LILV_API
01448 LilvPluginClasses*
01449 lilv_plugin_class_get_children(const LilvPluginClass* plugin_class);
01450
01461
01462
01463
01464
01465
01466
01467
01468 struct LilvInstanceImpl {
01469 const LV2_Descriptor* lv2_descriptor;
01470 LV2_Handle lv2_handle;
01471 void* pimpl;
01472 };
01473
01487 LILV_API
01488 LilvInstance*
01489 lilv_plugin_instantiate(const LilvPlugin* plugin,
01490 double sample_rate,
01491 const LV2_Feature*const* features);
01492
01498 LILV_API
01499 void
01500 lilv_instance_free(LilvInstance* instance);
01501
01502 #ifndef LILV_INTERNAL
01503
01508 static inline const char*
01509 lilv_instance_get_uri(const LilvInstance* instance)
01510 {
01511 return instance->lv2_descriptor->URI;
01512 }
01513
01519 static inline void
01520 lilv_instance_connect_port(LilvInstance* instance,
01521 uint32_t port_index,
01522 void* data_location)
01523 {
01524 instance->lv2_descriptor->connect_port
01525 (instance->lv2_handle, port_index, data_location);
01526 }
01527
01534 static inline void
01535 lilv_instance_activate(LilvInstance* instance)
01536 {
01537 if (instance->lv2_descriptor->activate)
01538 instance->lv2_descriptor->activate(instance->lv2_handle);
01539 }
01540
01546 static inline void
01547 lilv_instance_run(LilvInstance* instance,
01548 uint32_t sample_count)
01549 {
01550 instance->lv2_descriptor->run(instance->lv2_handle, sample_count);
01551 }
01552
01558 static inline void
01559 lilv_instance_deactivate(LilvInstance* instance)
01560 {
01561 if (instance->lv2_descriptor->deactivate)
01562 instance->lv2_descriptor->deactivate(instance->lv2_handle);
01563 }
01564
01570 static inline const void*
01571 lilv_instance_get_extension_data(const LilvInstance* instance,
01572 const char* uri)
01573 {
01574 if (instance->lv2_descriptor->extension_data)
01575 return instance->lv2_descriptor->extension_data(uri);
01576 else
01577 return NULL;
01578 }
01579
01587 static inline const LV2_Descriptor*
01588 lilv_instance_get_descriptor(const LilvInstance* instance)
01589 {
01590 return instance->lv2_descriptor;
01591 }
01592
01600 static inline LV2_Handle
01601 lilv_instance_get_handle(const LilvInstance* instance)
01602 {
01603 return instance->lv2_handle;
01604 }
01605
01606 #endif
01607
01618 LILV_API
01619 LilvUIs*
01620 lilv_plugin_get_uis(const LilvPlugin* plugin);
01621
01627 LILV_API
01628 const LilvNode*
01629 lilv_ui_get_uri(const LilvUI* ui);
01630
01639 LILV_API
01640 const LilvNodes*
01641 lilv_ui_get_classes(const LilvUI* ui);
01642
01648 LILV_API
01649 bool
01650 lilv_ui_is_a(const LilvUI* ui, const LilvNode* class_uri);
01651
01658 typedef unsigned (*LilvUISupportedFunc)(const char* container_type_uri,
01659 const char* ui_type_uri);
01660
01670 LILV_API
01671 unsigned
01672 lilv_ui_is_supported(const LilvUI* ui,
01673 LilvUISupportedFunc supported_func,
01674 const LilvNode* container_type,
01675 const LilvNode** ui_type);
01676
01682 LILV_API
01683 const LilvNode*
01684 lilv_ui_get_bundle_uri(const LilvUI* ui);
01685
01691 LILV_API
01692 const LilvNode*
01693 lilv_ui_get_binary_uri(const LilvUI* ui);
01694
01700 #ifdef __cplusplus
01701 }
01702 #endif
01703
01704 #endif