From ac3f3ffe14e0e01710e0ded24914d5ca1f31f55d Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 21 Apr 2007 07:13:35 +0000 Subject: Plugin classes (categories) progress. git-svn-id: http://svn.drobilla.net/lad/slv2@467 a436a847-0d15-0410-975c-d299462d15a1 --- slv2/pluginclass.h | 22 +++++++++++++++++++++- slv2/pluginclasses.h | 3 --- slv2/types.h | 4 ++++ slv2/world.h | 8 ++++++++ 4 files changed, 33 insertions(+), 4 deletions(-) (limited to 'slv2') 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. -- cgit v1.2.1