From cedf1a1f9e1e007aaf72757d896ed3455da10f69 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 28 Apr 2007 00:44:32 +0000 Subject: Reworked query/value system to expose data type. git-svn-id: http://svn.drobilla.net/lad/slv2@475 a436a847-0d15-0410-975c-d299462d15a1 --- slv2/Makefile.am | 18 ++++++------ slv2/plugin.h | 26 +++++++++--------- slv2/port.h | 6 ++-- slv2/slv2.h | 2 +- slv2/strings.h | 83 -------------------------------------------------------- slv2/types.h | 8 ++++++ slv2/values.h | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 115 insertions(+), 109 deletions(-) delete mode 100644 slv2/strings.h create mode 100644 slv2/values.h (limited to 'slv2') diff --git a/slv2/Makefile.am b/slv2/Makefile.am index 05fc432..8e57eb1 100644 --- a/slv2/Makefile.am +++ b/slv2/Makefile.am @@ -2,15 +2,15 @@ slv2includedir = $(includedir)/slv2 slv2include_HEADERS = \ lv2.h \ - types.h \ - slv2.h \ - world.h \ + plugin.h \ pluginclass.h \ pluginclasses.h \ - plugin.h \ - port.h \ - plugins.h \ plugininstance.h \ - strings.h \ - util.h - + plugins.h \ + port.h \ + slv2.h \ + types.h \ + util.h \ + value.h \ + values.h \ + world.h diff --git a/slv2/plugin.h b/slv2/plugin.h index 7ec073b..c6090a6 100644 --- a/slv2/plugin.h +++ b/slv2/plugin.h @@ -90,7 +90,7 @@ slv2_plugin_get_uri(SLV2Plugin plugin); * * Time = O(1) */ -SLV2Strings +SLV2Values slv2_plugin_get_data_uris(SLV2Plugin plugin); @@ -133,13 +133,13 @@ slv2_plugin_get_class(SLV2Plugin plugin); * <plugin-uri> predicate ?object * * May return NULL if the property was not found, or if object is not - * sensibly represented as an SLV2Strings (e.g. blank nodes). + * sensibly represented as an SLV2Values (e.g. blank nodes). * - * Return value must be freed by caller with slv2_strings_free. + * Return value must be freed by caller with slv2_values_free. * * Time = Query */ -SLV2Strings +SLV2Values slv2_plugin_get_value(SLV2Plugin p, const char* predicate); @@ -154,13 +154,13 @@ slv2_plugin_get_value(SLV2Plugin p, * (if information about it is contained in the plugin's data files). * * May return NULL if the property was not found, or if object is not - * sensibly represented as an SLV2Strings (e.g. blank nodes). + * sensibly represented as an SLV2Values (e.g. blank nodes). * - * Return value must be freed by caller with slv2_strings_free. + * Return value must be freed by caller with slv2_values_free. * * Time = Query */ -SLV2Strings +SLV2Values slv2_plugin_get_value_for_subject(SLV2Plugin p, const char* subject, const char* predicate); @@ -176,7 +176,7 @@ slv2_plugin_get_value_for_subject(SLV2Plugin p, * * Time = Query */ -SLV2Strings +SLV2Values slv2_plugin_get_properties(SLV2Plugin p); @@ -189,7 +189,7 @@ slv2_plugin_get_properties(SLV2Plugin p); * * Time = Query */ -SLV2Strings +SLV2Values slv2_plugin_get_hints(SLV2Plugin p); @@ -234,7 +234,7 @@ slv2_plugin_get_latency_port(SLV2Plugin p); * * Time = Query */ -SLV2Strings +SLV2Values slv2_plugin_get_supported_features(SLV2Plugin p); @@ -245,7 +245,7 @@ slv2_plugin_get_supported_features(SLV2Plugin p); * * Time = Query */ -SLV2Strings +SLV2Values slv2_plugin_get_required_features(SLV2Plugin p); @@ -257,7 +257,7 @@ slv2_plugin_get_required_features(SLV2Plugin p); * * Time = Query */ -SLV2Strings +SLV2Values slv2_plugin_get_optional_features(SLV2Plugin p); @@ -270,7 +270,7 @@ slv2_plugin_get_optional_features(SLV2Plugin p); * * Time = Query */ -SLV2Strings +SLV2Values slv2_plugin_simple_query(SLV2Plugin plugin, const char* sparql_str, const char* variable); diff --git a/slv2/port.h b/slv2/port.h index 165c1f1..10a2f3f 100644 --- a/slv2/port.h +++ b/slv2/port.h @@ -37,7 +37,7 @@ extern "C" { * * Time = Query */ -SLV2Strings +SLV2Values slv2_port_get_value(SLV2Plugin plugin, SLV2Port port, const char* property); @@ -47,7 +47,7 @@ slv2_port_get_value(SLV2Plugin plugin, * * Time = Query */ -SLV2Strings +SLV2Values slv2_port_get_properties(SLV2Plugin plugin, SLV2Port port); @@ -56,7 +56,7 @@ slv2_port_get_properties(SLV2Plugin plugin, * * Time = Query */ -SLV2Strings +SLV2Values slv2_port_get_hints(SLV2Plugin plugin, SLV2Port port); diff --git a/slv2/slv2.h b/slv2/slv2.h index ee0bcfa..f3a4a0d 100644 --- a/slv2/slv2.h +++ b/slv2/slv2.h @@ -30,7 +30,7 @@ extern "C" { #include #include #include -#include +#include #ifdef __cplusplus } diff --git a/slv2/strings.h b/slv2/strings.h deleted file mode 100644 index 20667ef..0000000 --- a/slv2/strings.h +++ /dev/null @@ -1,83 +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_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 7e965be..d55b81d 100644 --- a/slv2/types.h +++ b/slv2/types.h @@ -64,6 +64,14 @@ typedef struct _PluginClass* SLV2PluginClass; typedef void* SLV2PluginClasses; +/** A typed value */ +typedef struct _Value* SLV2Value; + + +/** A collection of typed values. */ +typedef void* SLV2Values; + + #ifdef __cplusplus } #endif diff --git a/slv2/values.h b/slv2/values.h new file mode 100644 index 0000000..a8381cd --- /dev/null +++ b/slv2/values.h @@ -0,0 +1,81 @@ +/* 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_VALUES_H__ +#define __SLV2_VALUES_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup strings Collections of strings + * + * SLV2Values is an ordered collection of strings which is fast for random + * access by index (i.e. a fancy array). + * + * @{ + */ + + +/** Allocate a new, empty SLV2Values + */ +SLV2Values +slv2_values_new(); + + +/** Get the number of elements in a string list. + */ +unsigned +slv2_values_size(SLV2Values 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) + */ +SLV2Value +slv2_values_get_at(SLV2Values list, unsigned index); + + +/** Return whether \a list contains \a string. + * + * Time = O(n) + */ +bool +slv2_values_contains(SLV2Values list, SLV2Value value); + + +/** Free a string list. + */ +void +slv2_values_free(SLV2Values); + + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* __SLV2_VALUES_H__ */ + -- cgit v1.2.1