From 0bf92c1f25a854566212e42deafe72ecd2a5f1a1 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 21 Jan 2008 15:14:53 +0000 Subject: Work on generic LV2 events. git-svn-id: http://svn.drobilla.net/lad/slv2@1090 a436a847-0d15-0410-975c-d299462d15a1 --- slv2/Makefile.am | 2 -- slv2/plugin.h | 12 --------- slv2/port.h | 33 +++++++++++++++++++++++ slv2/portsignature.h | 57 --------------------------------------- slv2/slv2.h | 2 -- slv2/template.h | 76 ---------------------------------------------------- slv2/types.h | 14 +++++++++- slv2/value.h | 8 ++++-- 8 files changed, 52 insertions(+), 152 deletions(-) delete mode 100644 slv2/portsignature.h delete mode 100644 slv2/template.h (limited to 'slv2') diff --git a/slv2/Makefile.am b/slv2/Makefile.am index 0562741..2c11b91 100644 --- a/slv2/Makefile.am +++ b/slv2/Makefile.am @@ -11,9 +11,7 @@ slv2include_HEADERS = \ pluginuiinstance.h \ pluginuis.h \ port.h \ - portsignature.h \ slv2.h \ - template.h \ types.h \ util.h \ value.h \ diff --git a/slv2/plugin.h b/slv2/plugin.h index e4e5984..3dc63a8 100644 --- a/slv2/plugin.h +++ b/slv2/plugin.h @@ -275,18 +275,6 @@ SLV2Template slv2_plugin_get_template(SLV2Plugin p); -/** Get the number of ports on this plugin of a given direction and/or type. - * - * Use SLV2_PORT_DATA_TYPE_ANY and SLV2_PORT_DIRECTION_ANY for a wildcard. - * - * Time = O(1) - */ -uint32_t -slv2_plugin_get_num_ports_of_type(SLV2Plugin p, - SLV2PortDirection dir, - SLV2PortDataType type); - - /** Return whether or not the plugin introduces (and reports) latency. * * The index of the latency port can be found with slv2_plugin_get_latency_port diff --git a/slv2/port.h b/slv2/port.h index 973d400..072417b 100644 --- a/slv2/port.h +++ b/slv2/port.h @@ -98,6 +98,38 @@ slv2_port_get_name(SLV2Plugin plugin, SLV2Port port); +/** Get all the classes of a port. + * + * This can be used to determine if a port is an input, output, audio, + * control, midi, etc, etc, though it's simpler to use slv2_port_is_a. + * The returned list does not include lv2:Port, which is implied. + * + * Returned value is shared and must not be destroyed by caller. + * + * Time = O(1) + */ +SLV2Values +slv2_port_get_classes(SLV2Plugin plugin, + SLV2Port port); + + +/** Determine if a port is of a given class (input, output, audio, etc). + * + * For convenience/performance/extensibility reasons, hosts are expected to + * create an SLV2Value for each port class they "care about". Well-known type + * URI strings are defined (e.g. SLV2_PORT_CLASS_INPUT) for convenience, but + * this function is designed so that SLV2 is usable with any port types + * without requiring explicit support in SLV2. + * + * Time = O(n) (n pointer comparisons where n is the number of classes of + * this port, so this method is suitable for realtime use on any sane port). + */ +bool +slv2_port_is_a(SLV2Plugin plugin, + SLV2Port port, + SLV2Value port_class); + +#if 0 /** Get the direction (input, output) of a port. * * Time = Query @@ -113,6 +145,7 @@ slv2_port_get_direction(SLV2Plugin plugin, SLV2PortDataType slv2_port_get_data_type(SLV2Plugin plugin, SLV2Port port); +#endif /** Get the default value of a port. diff --git a/slv2/portsignature.h b/slv2/portsignature.h deleted file mode 100644 index d35d63e..0000000 --- a/slv2/portsignature.h +++ /dev/null @@ -1,57 +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_PORTSIGNATURE_H__ -#define __SLV2_PORTSIGNATURE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/** \addtogroup slv2_data - * @{ - */ - - -/** Get the direction (input or output) of the port. - * - * Time = O(1) - */ -SLV2PortDirection -slv2_port_signature_get_direction(SLV2PortSignature sig); - - -/** Get the type (e.g. audio, midi) of the port. - * - * Time = O(1) - */ -SLV2PortDataType -slv2_port_signature_get_type(SLV2PortSignature sig); - - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* __SLV2_PORTSIGNATURE_H__ */ - diff --git a/slv2/slv2.h b/slv2/slv2.h index 9aa5c8c..6d0298b 100644 --- a/slv2/slv2.h +++ b/slv2/slv2.h @@ -31,8 +31,6 @@ extern "C" { #include #include #include -#include -#include #include #include #include diff --git a/slv2/template.h b/slv2/template.h deleted file mode 100644 index 47aac30..0000000 --- a/slv2/template.h +++ /dev/null @@ -1,76 +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_TEMPLATE_H__ -#define __SLV2_TEMPLATE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/** \addtogroup slv2_data - * @{ - */ - - -/** Free an SLV2Template. - * - * Time = O(1) + free() - */ -void -slv2_template_free(SLV2Template); - - -/** Get the signature (direction and type) of a port - * - * Time = O(1) - */ -SLV2PortSignature -slv2_template_get_port(SLV2Template t, - uint32_t index); - - -/** Get the total number of ports. - * - * Time = O(1) - */ -uint32_t -slv2_template_get_num_ports(SLV2Template t); - - -/** Get the number of ports of a given direction and type. - * - * Time = O(1) - */ -uint32_t -slv2_template_get_num_ports_of_type(SLV2Template t, - SLV2PortDirection direction, - SLV2PortDataType type); - - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* __SLV2_TEMPLATE_H__ */ - diff --git a/slv2/types.h b/slv2/types.h index d6442b3..79e7370 100644 --- a/slv2/types.h +++ b/slv2/types.h @@ -26,7 +26,17 @@ extern "C" { #include #include - +#define SLV2_NAMESPACE_LV2 "http://lv2plug.in/ns/lv2core#" +#define SLV2_PORT_CLASS_PORT "http://lv2plug.in/ns/lv2core#Port" +#define SLV2_PORT_CLASS_INPUT "http://lv2plug.in/ns/lv2core#InputPort" +#define SLV2_PORT_CLASS_OUTPUT "http://lv2plug.in/ns/lv2core#OutputPort" +#define SLV2_PORT_CLASS_CONTROL "http://lv2plug.in/ns/lv2core#ControlPort" +#define SLV2_PORT_CLASS_AUDIO "http://lv2plug.in/ns/lv2core#AudioPort" +#define SLV2_PORT_CLASS_MIDI "http://ll-plugins.nongnu.org/lv2/ext/MidiPort" +#define SLV2_PORT_CLASS_OSC "http://drobilla.net/ns/lv2ext/osc/0#OSCPort" +#define SLV2_PORT_CLASS_EVENT "http://lv2plug.in/ns/ext/event#EventPort" + +#if 0 /** (Data) Type of a port * * SLV2_PORT_DATA_TYPE_UNKNOWN means the Port is not of any type SLV2 @@ -43,6 +53,7 @@ typedef enum _SLV2PortDataType { SLV2_PORT_DATA_TYPE_EVENT, /**< Generic event port */ } SLV2PortDataType; + /** Direction (input or output) of a port * * SLV2_UNKNOWN_PORT_DIRECTION means the Port is only of type lv2:Port @@ -56,6 +67,7 @@ typedef enum _SLV2PortDirection { SLV2_PORT_DIRECTION_INPUT, /**< Plugin reads from port when run */ SLV2_PORT_DIRECTION_OUTPUT, /**< Plugin writes to port when run */ } SLV2PortDirection; +#endif /** The format of a URI string. diff --git a/slv2/value.h b/slv2/value.h index 00cd39a..94a7f95 100644 --- a/slv2/value.h +++ b/slv2/value.h @@ -31,8 +31,12 @@ extern "C" { */ -/*SLV2Value -slv2_value_new_uri(const char* uri);*/ +/** Create a new URI value. + * + * Returned value must be freed by called with slv2_value_free. + */ +SLV2Value +slv2_value_new_uri(SLV2World world, const char* uri); /** Free an SLV2Value. -- cgit v1.2.1