From 081352a14c7c4f73113d9a491280e327eec14c83 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 21 Apr 2007 01:23:59 +0000 Subject: Changed "categories" to "plugin classes" to better match RDF. Renamed files to match API. git-svn-id: http://svn.drobilla.net/lad/slv2@466 a436a847-0d15-0410-975c-d299462d15a1 --- slv2/Makefile.am | 8 ++--- slv2/categories.h | 80 ------------------------------------------- slv2/category.h | 70 -------------------------------------- slv2/plugin.h | 8 ++--- slv2/pluginclass.h | 70 ++++++++++++++++++++++++++++++++++++++ slv2/pluginclasses.h | 80 +++++++++++++++++++++++++++++++++++++++++++ slv2/pluginlist.h | 95 ---------------------------------------------------- slv2/plugins.h | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++ slv2/port.h | 2 +- slv2/slv2.h | 6 ++-- slv2/stringlist.h | 84 ---------------------------------------------- slv2/strings.h | 84 ++++++++++++++++++++++++++++++++++++++++++++++ slv2/types.h | 4 +-- slv2/world.h | 33 +++++++++++++++--- 14 files changed, 371 insertions(+), 348 deletions(-) delete mode 100644 slv2/categories.h delete mode 100644 slv2/category.h create mode 100644 slv2/pluginclass.h create mode 100644 slv2/pluginclasses.h delete mode 100644 slv2/pluginlist.h create mode 100644 slv2/plugins.h delete mode 100644 slv2/stringlist.h create mode 100644 slv2/strings.h (limited to 'slv2') diff --git a/slv2/Makefile.am b/slv2/Makefile.am index 8e1b827..05fc432 100644 --- a/slv2/Makefile.am +++ b/slv2/Makefile.am @@ -5,12 +5,12 @@ slv2include_HEADERS = \ types.h \ slv2.h \ world.h \ - category.h \ - categories.h \ + pluginclass.h \ + pluginclasses.h \ plugin.h \ port.h \ - pluginlist.h \ + plugins.h \ plugininstance.h \ - stringlist.h \ + strings.h \ util.h diff --git a/slv2/categories.h b/slv2/categories.h deleted file mode 100644 index 44b9aee..0000000 --- a/slv2/categories.h +++ /dev/null @@ -1,80 +0,0 @@ -/* SLV2 - * Copyright (C) 2007 Dave Robillard - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef __SLV2_CATEGORIES_H__ -#define __SLV2_CATEGORIES_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -typedef void* SLV2Categories; - - -/** \defgroup categories Categories - * - * @{ - */ - -/** Get the number of plugins in the list. - */ -unsigned -slv2_categories_size(SLV2Categories list); - - -/** Get a category from the list by URI. - * - * Return value is shared (stored in \a list) and must not be freed or - * modified by the caller in any way. - * - * Time = O(log2(n)) - * - * \return NULL if plugin with \a url not found in \a list. - */ -SLV2Category -slv2_categories_get_by_uri(SLV2Categories list, - const char* uri); - - -/** Get a plugin from the list by index. - * - * \a index has no significance other than as an index into this list. - * Any \a index not less than slv2_categories_get_length(list) will return NULL, - * so all categories in a list can be enumerated by repeated calls - * to this function starting with \a index = 0. - * - * Time = O(1) - * - * \return NULL if \a index out of range. - */ -SLV2Category -slv2_categories_get_at(SLV2Categories list, - unsigned index); - - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* __SLV2_CATEGORIES_H__ */ - diff --git a/slv2/category.h b/slv2/category.h deleted file mode 100644 index 1d0159f..0000000 --- a/slv2/category.h +++ /dev/null @@ -1,70 +0,0 @@ -/* SLV2 - * Copyright (C) 2007 Dave Robillard - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef __SLV2_CATEGORY_H__ -#define __SLV2_CATEGORY_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/** \addtogroup data - * @{ - */ - - -/** Get the URI of this category. - * - * Returned value is owned by \a category and must not be freed by caller. - * - * Time = O(1) - */ -const char* slv2_category_get_uri(SLV2Category category); - - -/** Get the label of this category, ie "Oscillators". - * - * Returned value is owned by \a category and must not be freed by caller. - * - * Time = O(1) - */ -const char* slv2_category_get_label(SLV2Category category); - -#if 0 -/** Get the path of this category, ie "Plugins/Generators/Oscillators". - * - * SLV2 automatically generates an ideal category heirarchy given the plugins - * present. The last fragment of the path is the category's label, - * as returned by slv2_category_get_label. - * - * Returned value is owned by \a category and must not be freed by caller. - * - * Time = O(1) - */ -const char* slv2_category_get_path(SLV2Category category); -#endif - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* __SLV2_CATEGORY_H__ */ diff --git a/slv2/plugin.h b/slv2/plugin.h index 4db5130..c8f4be0 100644 --- a/slv2/plugin.h +++ b/slv2/plugin.h @@ -27,7 +27,7 @@ extern "C" { #include #include #include -#include +#include /** \defgroup data Plugin data access * @@ -134,10 +134,10 @@ char* slv2_plugin_get_name(SLV2Plugin plugin); -/** Get the category this plugin belongs to. +/** Get the class this plugin belongs to (ie Filters). */ -SLV2Category -slv2_plugin_get_category(SLV2Plugin plugin); +SLV2PluginClass +slv2_plugin_get_class(SLV2Plugin plugin); /** Get a value associated with the plugin in a plugin's data files. diff --git a/slv2/pluginclass.h b/slv2/pluginclass.h new file mode 100644 index 0000000..1124bd8 --- /dev/null +++ b/slv2/pluginclass.h @@ -0,0 +1,70 @@ +/* SLV2 + * Copyright (C) 2007 Dave Robillard + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef __SLV2_PLUGIN_CLASS_H__ +#define __SLV2_PLUGIN_CLASS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/** \addtogroup data + * @{ + */ + + +/** Get the URI of this plugin class. + * + * Returned value is owned by \a plugin_class and must not be freed by caller. + * + * Time = O(1) + */ +const char* slv2_plugin_class_get_uri(SLV2PluginClass plugin_class); + + +/** Get the label of this plugin_class, ie "Oscillators". + * + * Returned value is owned by \a plugin_class and must not be freed by caller. + * + * Time = O(1) + */ +const char* slv2_plugin_class_get_label(SLV2PluginClass plugin_class); + +#if 0 +/** Get the path of this plugin_class, ie "Plugins/Generators/Oscillators". + * + * SLV2 automatically generates an ideal plugin_class heirarchy given the plugins + * present. The last fragment of the path is the plugin_class's label, + * as returned by slv2_plugin_class_get_label. + * + * Returned value is owned by \a plugin_class and must not be freed by caller. + * + * Time = O(1) + */ +const char* slv2_plugin_class_get_path(SLV2PluginClass plugin_class); +#endif + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* __SLV2_PLUGIN_CLASS_H__ */ diff --git a/slv2/pluginclasses.h b/slv2/pluginclasses.h new file mode 100644 index 0000000..39177b8 --- /dev/null +++ b/slv2/pluginclasses.h @@ -0,0 +1,80 @@ +/* SLV2 + * Copyright (C) 2007 Dave Robillard + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef __SLV2_PLUGIN_CLASSES_H__ +#define __SLV2_PLUGIN_CLASSES_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef void* SLV2PluginClasses; + + +/** \defgroup plugin_classes Plugin classes (categories) + * + * @{ + */ + +/** Get the number of plugins in the list. + */ +unsigned +slv2_plugin_classes_size(SLV2PluginClasses list); + + +/** Get a plugin class from the list by URI. + * + * Return value is shared (stored in \a list) and must not be freed or + * modified by the caller in any way. + * + * Time = O(log2(n)) + * + * \return NULL if plugin with \a url not found in \a list. + */ +SLV2PluginClass +slv2_plugin_classes_get_by_uri(SLV2PluginClasses list, + const char* uri); + + +/** Get a plugin from the list by index. + * + * \a index has no significance other than as an index into this list. + * Any \a index not less than slv2_plugin_classes_get_length(list) will return NULL, + * so all plugin_classes in a list can be enumerated by repeated calls + * to this function starting with \a index = 0. + * + * Time = O(1) + * + * \return NULL if \a index out of range. + */ +SLV2PluginClass +slv2_plugin_classes_get_at(SLV2PluginClasses list, + unsigned index); + + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* __SLV2_PLUGIN_CLASSES_H__ */ + diff --git a/slv2/pluginlist.h b/slv2/pluginlist.h deleted file mode 100644 index a2978e1..0000000 --- a/slv2/pluginlist.h +++ /dev/null @@ -1,95 +0,0 @@ -/* SLV2 - * Copyright (C) 2007 Dave Robillard - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef __SLV2_PLUGINLIST_H__ -#define __SLV2_PLUGINLIST_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -typedef void* SLV2Plugins; - - -/** \defgroup plugins Plugin lists - * - * These functions work with lists of plugins which come from an - * SLV2World. These lists contain only a weak reference to an LV2 plugin - * in the Model. - * - * @{ - */ - - -/** Free a plugin list. - * - * Freeing a plugin list does not destroy the plugins it contains (plugins - * are owned by the world). \a list is invalid after this call. - */ -void -slv2_plugins_free(SLV2World world, - SLV2Plugins list); - - -/** Get the number of plugins in the list. - */ -unsigned -slv2_plugins_size(SLV2Plugins list); - - -/** Get a plugin from the list by URI. - * - * Return value is shared (stored in \a list) and must not be freed or - * modified by the caller in any way. - * - * Time = O(log2(n)) - * - * \return NULL if plugin with \a url not found in \a list. - */ -SLV2Plugin -slv2_plugins_get_by_uri(SLV2Plugins list, - const char* uri); - - -/** Get a plugin from the list by index. - * - * \a index has no significance other than as an index into this list. - * Any \a index not less than slv2_list_get_length(list) will return NULL, - * so all plugins in a list can be enumerated by repeated calls - * to this function starting with \a index = 0. - * - * Time = O(1) - * - * \return NULL if \a index out of range. - */ -SLV2Plugin -slv2_plugins_get_at(SLV2Plugins list, - unsigned index); - - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* __SLV2_PLUGINLIST_H__ */ - diff --git a/slv2/plugins.h b/slv2/plugins.h new file mode 100644 index 0000000..7b9a5a3 --- /dev/null +++ b/slv2/plugins.h @@ -0,0 +1,95 @@ +/* SLV2 + * Copyright (C) 2007 Dave Robillard + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef __SLV2_PLUGINS_H__ +#define __SLV2_PLUGINS_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef void* SLV2Plugins; + + +/** \defgroup plugins Plugin lists + * + * These functions work with lists of plugins which come from an + * SLV2World. These lists contain only a weak reference to an LV2 plugin + * in the Model. + * + * @{ + */ + + +/** Free a plugin list. + * + * Freeing a plugin list does not destroy the plugins it contains (plugins + * are owned by the world). \a list is invalid after this call. + */ +void +slv2_plugins_free(SLV2World world, + SLV2Plugins list); + + +/** Get the number of plugins in the list. + */ +unsigned +slv2_plugins_size(SLV2Plugins list); + + +/** Get a plugin from the list by URI. + * + * Return value is shared (stored in \a list) and must not be freed or + * modified by the caller in any way. + * + * Time = O(log2(n)) + * + * \return NULL if plugin with \a url not found in \a list. + */ +SLV2Plugin +slv2_plugins_get_by_uri(SLV2Plugins list, + const char* uri); + + +/** Get a plugin from the list by index. + * + * \a index has no significance other than as an index into this list. + * Any \a index not less than slv2_list_get_length(list) will return NULL, + * so all plugins in a list can be enumerated by repeated calls + * to this function starting with \a index = 0. + * + * Time = O(1) + * + * \return NULL if \a index out of range. + */ +SLV2Plugin +slv2_plugins_get_at(SLV2Plugins list, + unsigned index); + + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* __SLV2_PLUGINS_H__ */ + diff --git a/slv2/port.h b/slv2/port.h index d415f84..165c1f1 100644 --- a/slv2/port.h +++ b/slv2/port.h @@ -26,7 +26,7 @@ extern "C" { #include #include #include -#include +#include /** \addtogroup data * @{ diff --git a/slv2/slv2.h b/slv2/slv2.h index a052e56..2d89e4e 100644 --- a/slv2/slv2.h +++ b/slv2/slv2.h @@ -25,12 +25,12 @@ extern "C" { #include #include -#include +#include #include #include -#include +#include #include -#include +#include #ifdef __cplusplus diff --git a/slv2/stringlist.h b/slv2/stringlist.h deleted file mode 100644 index eb613d6..0000000 --- a/slv2/stringlist.h +++ /dev/null @@ -1,84 +0,0 @@ -/* SLV2 - * Copyright (C) 2007 Dave Robillard - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef __SLV2_STRINGLIST_H__ -#define __SLV2_STRINGLIST_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -/** \defgroup strings Collections of strings - * - * SLV2Strings is an ordered collection of strings which is fast for random - * access by index (i.e. a fancy array). - * - * @{ - */ - - -typedef void* SLV2Strings; - - -/** Allocate a new, empty SLV2Strings - */ -SLV2Strings -slv2_strings_new(); - - -/** Get the number of elements in a string list. - */ -unsigned -slv2_strings_size(SLV2Strings list); - - -/** Get a string from a string list at the given index. - * - * @return the element at \a index, or NULL if index is out of range. - * - * Time = O(1) - */ -const char* -slv2_strings_get_at(SLV2Strings list, unsigned index); - - -/** Return whether \a list contains \a string. - * - * Time = O(n) - */ -bool -slv2_strings_contains(SLV2Strings list, const char* string); - - -/** Free a string list. - */ -void -slv2_strings_free(SLV2Strings); - - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* __SLV2_STRINGLIST_H__ */ - diff --git a/slv2/strings.h b/slv2/strings.h new file mode 100644 index 0000000..5a16025 --- /dev/null +++ b/slv2/strings.h @@ -0,0 +1,84 @@ +/* SLV2 + * Copyright (C) 2007 Dave Robillard + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef __SLV2_STRINGS_H__ +#define __SLV2_STRINGS_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup strings Collections of strings + * + * SLV2Strings is an ordered collection of strings which is fast for random + * access by index (i.e. a fancy array). + * + * @{ + */ + + +typedef void* SLV2Strings; + + +/** Allocate a new, empty SLV2Strings + */ +SLV2Strings +slv2_strings_new(); + + +/** Get the number of elements in a string list. + */ +unsigned +slv2_strings_size(SLV2Strings list); + + +/** Get a string from a string list at the given index. + * + * @return the element at \a index, or NULL if index is out of range. + * + * Time = O(1) + */ +const char* +slv2_strings_get_at(SLV2Strings list, unsigned index); + + +/** Return whether \a list contains \a string. + * + * Time = O(n) + */ +bool +slv2_strings_contains(SLV2Strings list, const char* string); + + +/** Free a string list. + */ +void +slv2_strings_free(SLV2Strings); + + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* __SLV2_STRINGS_H__ */ + diff --git a/slv2/types.h b/slv2/types.h index f595dd1..42f2e59 100644 --- a/slv2/types.h +++ b/slv2/types.h @@ -56,8 +56,8 @@ typedef struct _Plugin* SLV2Plugin; typedef struct _World* SLV2World; -/** A plugin category. Opaque, but valid to compare to NULL. */ -typedef struct _Category* SLV2Category; +/** A plugin class. Opaque, but valid to compare to NULL. */ +typedef struct _PluginClass* SLV2PluginClass; #ifdef __cplusplus diff --git a/slv2/world.h b/slv2/world.h index 64f0fc2..59b0adc 100644 --- a/slv2/world.h +++ b/slv2/world.h @@ -19,7 +19,8 @@ #ifndef __SLV2_WORLD_H__ #define __SLV2_WORLD_H__ -#include +#include +#include #ifdef __cplusplus extern "C" { @@ -102,6 +103,16 @@ slv2_world_load_bundle(SLV2World world, const char* bundle_uri); +/** Return a list of all found plugin classes. + * + * Returned list is owned by world and must not be freed by the caller. + * + * Time = O(1) + */ +SLV2PluginClasses +slv2_world_get_plugin_classes(SLV2World world); + + /** Return a list of all found plugins. * * The returned list contains just enough references to query @@ -110,8 +121,8 @@ slv2_world_load_bundle(SLV2World world, * a query (at which time the data is cached with the SLV2Plugin so future * queries are very fast). * - * Returned plugins contain a reference to this world, world must not be - * destroyed until plugins are finished with. + * Returned list must be freed by user with slv2_plugins_free. The contained + * plugins are owned by \a world and must not be freed by caller. * * Time = O(1) */ @@ -125,8 +136,8 @@ slv2_world_get_all_plugins(SLV2World world); * \a include (a pointer to a function which takes an SLV2Plugin and returns * a bool) will be in the returned list. * - * Returned plugins contain a reference to this world, world must not be - * destroyed until plugins are finished with. + * Returned list must be freed by user with slv2_plugins_free. The contained + * plugins are owned by \a world and must not be freed by caller. * * Time = O(n * Time(include)) */ @@ -135,6 +146,18 @@ slv2_world_get_plugins_by_filter(SLV2World world, bool (*include)(SLV2Plugin)); +/** Return a list of found plugins in a given class. + * + * Returned list must be freed by user with slv2_plugins_free. The contained + * plugins are owned by \a world and must not be freed by caller. + * + * Time = O(n) + */ +SLV2Plugins +slv2_world_get_plugins_by_class(SLV2World world, + SLV2PluginClass plugin_class); + + #if 0 /** Get plugins filtered by a user-defined SPARQL query. * -- cgit v1.2.1