Collections

Lilv has several collection types for holding various types of value.

Each collection type supports a similar basic API, except LilvPlugins which is internal and thus lacks a free function:

  • void PREFIX_free (coll)

  • unsigned PREFIX_size (coll)

  • LilvIter* PREFIX_begin (coll)

The types of collection are:

LILV_FOREACH(colltype, iter, collection)

Iterate over each element of a collection.

LILV_FOREACH(plugin_classes, i, classes) {
   LilvPluginClass c = lilv_plugin_classes_get(classes, i);
   // ...
}
bool lilv_nodes_contains(const LilvNodes *nodes, const LilvNode *value)

Return whether values contains value.

LilvNodes *lilv_nodes_merge(const LilvNodes *a, const LilvNodes *b)

Return a new LilvNodes that contains all nodes from both a and b.

const LilvPluginClass *lilv_plugin_classes_get_by_uri(const LilvPluginClasses *classes, const LilvNode *uri)

Get a plugin class from classes by URI.

Return value is shared (stored in classes) and must not be freed or modified by the caller in any way.

Returns:

NULL if no plugin class with uri is found in classes.

const LilvPlugin *lilv_plugins_get_by_uri(const LilvPlugins *plugins, const LilvNode *uri)

Get a plugin from plugins by URI.

Return value is shared (stored in plugins) and must not be freed or modified by the caller in any way.

Returns:

NULL if no plugin with uri is found in plugins.

const LilvUI *lilv_uis_get_by_uri(const LilvUIs *uis, const LilvNode *uri)

Get a UI from uis by URI.

Return value is shared (stored in uis) and must not be freed or modified by the caller in any way.

Returns:

NULL if no UI with uri is found in list.