summaryrefslogtreecommitdiffstats
path: root/slv2
diff options
context:
space:
mode:
Diffstat (limited to 'slv2')
-rw-r--r--slv2/pluginclass.h22
-rw-r--r--slv2/pluginclasses.h3
-rw-r--r--slv2/types.h4
-rw-r--r--slv2/world.h8
4 files changed, 33 insertions, 4 deletions
diff --git a/slv2/pluginclass.h b/slv2/pluginclass.h
index 1124bd8..7260d7d 100644
--- a/slv2/pluginclass.h
+++ b/slv2/pluginclass.h
@@ -30,6 +30,15 @@ extern "C" {
*/
+/** Get the URI of this class' superclass.
+ *
+ * Returned value is owned by \a plugin_class and must not be freed by caller.
+ *
+ * Time = O(1)
+ */
+const char* slv2_plugin_class_get_parent_uri(SLV2PluginClass plugin_class);
+
+
/** Get the URI of this plugin class.
*
* Returned value is owned by \a plugin_class and must not be freed by caller.
@@ -39,7 +48,7 @@ extern "C" {
const char* slv2_plugin_class_get_uri(SLV2PluginClass plugin_class);
-/** Get the label of this plugin_class, ie "Oscillators".
+/** Get the label of this plugin class, ie "Oscillators".
*
* Returned value is owned by \a plugin_class and must not be freed by caller.
*
@@ -47,6 +56,17 @@ const char* slv2_plugin_class_get_uri(SLV2PluginClass plugin_class);
*/
const char* slv2_plugin_class_get_label(SLV2PluginClass plugin_class);
+
+/** Get the subclasses of this plugin class.
+ *
+ * Returned value must be freed by caller with slv2_plugin_classes_free.
+ *
+ * Time = O(nclasses)
+ */
+SLV2PluginClasses
+slv2_plugin_class_get_children(SLV2PluginClass plugin_class);
+
+
#if 0
/** Get the path of this plugin_class, ie "Plugins/Generators/Oscillators".
*
diff --git a/slv2/pluginclasses.h b/slv2/pluginclasses.h
index 39177b8..a9dbdc5 100644
--- a/slv2/pluginclasses.h
+++ b/slv2/pluginclasses.h
@@ -26,9 +26,6 @@ extern "C" {
#endif
-typedef void* SLV2PluginClasses;
-
-
/** \defgroup plugin_classes Plugin classes (categories)
*
* @{
diff --git a/slv2/types.h b/slv2/types.h
index 42f2e59..7e965be 100644
--- a/slv2/types.h
+++ b/slv2/types.h
@@ -60,6 +60,10 @@ typedef struct _World* SLV2World;
typedef struct _PluginClass* SLV2PluginClass;
+/** A collection of plugin classes. Opaque, but valid to compare to NULL. */
+typedef void* SLV2PluginClasses;
+
+
#ifdef __cplusplus
}
#endif
diff --git a/slv2/world.h b/slv2/world.h
index 59b0adc..08acd2b 100644
--- a/slv2/world.h
+++ b/slv2/world.h
@@ -103,6 +103,14 @@ slv2_world_load_bundle(SLV2World world,
const char* bundle_uri);
+/** Get the parent of all other plugin classes, lv2:Plugin.
+ *
+ * Time = O(1)
+ */
+SLV2PluginClass
+slv2_world_get_plugin_class(SLV2World world);
+
+
/** Return a list of all found plugin classes.
*
* Returned list is owned by world and must not be freed by the caller.