diff options
Diffstat (limited to 'lv2')
-rw-r--r-- | lv2/urid/check-static-ids.c | 135 | ||||
-rw-r--r-- | lv2/urid/sid.h | 927 | ||||
-rw-r--r-- | lv2/urid/urid.h | 17 |
3 files changed, 1079 insertions, 0 deletions
diff --git a/lv2/urid/check-static-ids.c b/lv2/urid/check-static-ids.c new file mode 100644 index 0000000..d87e12a --- /dev/null +++ b/lv2/urid/check-static-ids.c @@ -0,0 +1,135 @@ +/* + Copyright 2012-2015 David Robillard <http://drobilla.net> + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#include "lv2/core/lv2.h" +#include "lv2/urid/sid.h" + +#include <serd/serd.h> + +#include <assert.h> + +int n_errors = 0; + +static int +on_node(const SerdEnv* env, const SerdNode* node) +{ + const SerdNode* base_uri = serd_env_get_base_uri(env); + const char* base_uri_str = serd_node_get_string(base_uri); + const size_t base_uri_len = serd_node_get_length(base_uri); + + if (serd_node_get_type(node) == SERD_URI || + serd_node_get_type(node) == SERD_CURIE) { + + SerdNode* expanded = serd_env_expand(env, node); + if (!expanded) { + fprintf(stderr, + "error: Failed to expand <%s>\n", + serd_node_get_string(node)); + return 1; + } + + assert(serd_node_get_type(expanded) == SERD_URI); + + const char* uri = serd_node_get_string(expanded); + if (!strcmp(uri, base_uri_str)) { + return 0; // Ignore ontology itself + } else if (strncmp(uri, base_uri_str, base_uri_len)) { + fprintf(stderr, + "warning: Subject <%s> not within prefix <%s>\n", + uri, + serd_node_get_string(base_uri)); + return 0; + } + + const LV2_URID id = lv2_urid_static_map(uri); + const char* out = lv2_urid_static_unmap(id); + + if (!id) { + fprintf(stderr, "error: Failed to map <%s>\n", uri); + return 1; // SERD_ERR_INTERNAL; + } + + assert(out); + if (strcmp(uri, out)) { + fprintf(stderr, + "error: <%s> (%d) unmapped to <%s>\n", + uri, + id, + out); + return 1; // SERD_ERR_INTERNAL; + } + + printf("OK %s %s\n", uri, out); + serd_node_free(expanded); + } + + return 0; +} + +static SerdStatus +on_statement(void* handle, + SerdStatementFlags flags, + const SerdStatement* statement) +{ + (void)flags; + + const SerdEnv* env = (const SerdEnv*)handle; + + n_errors += on_node(env, serd_statement_get_subject(statement)); + /* on_node(env, serd_statement_get_predicate(statement)); */ + /* on_node(env, serd_statement_get_object(statement)); */ + + return SERD_SUCCESS; +} + +int +main(int argc, char** argv) +{ + if (argc != 3) { + fprintf(stderr, "Usage: %s SCHEMA SCHEMA_URI\n", argv[0]); + return 1; + } + + const char* const filename = argv[1]; + const char* const schema_uri = argv[2]; + + SerdWorld* world = serd_world_new(); + SerdNode* base_uri = serd_new_uri(schema_uri); + SerdEnv* env = serd_env_new(base_uri); + SerdSink* sink = serd_sink_new(env, env); + SerdReader* reader = serd_reader_new(world, SERD_TURTLE, sink, 1 << 20); + + serd_env_set_base_uri(env, base_uri); + serd_sink_set_statement_func(sink, on_statement); + + SerdStatus st = SERD_SUCCESS; + if ((st = serd_reader_start_file(reader, filename, true))) { + fprintf(stderr, "error: %s\n", serd_strerror(st)); + return st; + } else if ((st = serd_reader_read_document(reader))) { + fprintf(stderr, "error: %s\n", serd_strerror(st)); + return st; + } + + serd_node_free(base_uri); + serd_reader_free(reader); + serd_sink_free(sink); + serd_env_free(env); + serd_node_free(base_uri); + serd_world_free(world); + + return n_errors; +} diff --git a/lv2/urid/sid.h b/lv2/urid/sid.h new file mode 100644 index 0000000..536b965 --- /dev/null +++ b/lv2/urid/sid.h @@ -0,0 +1,927 @@ +/* + Copyright 2019 David Robillard <http://drobilla.net> + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +/** + @defgroup sid Static URIDs + @ingroup URID + @{ +*/ + +#ifndef LV2_URID_SID_H +#define LV2_URID_SID_H + +#include "lv2/urid/urid.h" + +#include <assert.h> +#include <stdlib.h> +#include <string.h> + +#ifdef __cplusplus +extern "C" { +#endif + +static const char* const lv2_urid_static_uris[] = { + NULL, + "http://lv2plug.in/ns/ext/atom#Atom", + "http://lv2plug.in/ns/ext/atom#AtomPort", + "http://lv2plug.in/ns/ext/atom#Blank", + "http://lv2plug.in/ns/ext/atom#Bool", + "http://lv2plug.in/ns/ext/atom#Chunk", + "http://lv2plug.in/ns/ext/atom#Double", + "http://lv2plug.in/ns/ext/atom#Event", + "http://lv2plug.in/ns/ext/atom#Float", + "http://lv2plug.in/ns/ext/atom#Int", + "http://lv2plug.in/ns/ext/atom#Literal", + "http://lv2plug.in/ns/ext/atom#Long", + "http://lv2plug.in/ns/ext/atom#Number", + "http://lv2plug.in/ns/ext/atom#Object", + "http://lv2plug.in/ns/ext/atom#Path", + "http://lv2plug.in/ns/ext/atom#Property", + "http://lv2plug.in/ns/ext/atom#Resource", + "http://lv2plug.in/ns/ext/atom#Sequence", + "http://lv2plug.in/ns/ext/atom#Sound", + "http://lv2plug.in/ns/ext/atom#String", + "http://lv2plug.in/ns/ext/atom#Tuple", + "http://lv2plug.in/ns/ext/atom#URI", + "http://lv2plug.in/ns/ext/atom#URID", + "http://lv2plug.in/ns/ext/atom#Vector", + "http://lv2plug.in/ns/ext/atom#atomTransfer", + "http://lv2plug.in/ns/ext/atom#beatTime", + "http://lv2plug.in/ns/ext/atom#bufferType", + "http://lv2plug.in/ns/ext/atom#cType", + "http://lv2plug.in/ns/ext/atom#childType", + "http://lv2plug.in/ns/ext/atom#eventTransfer", + "http://lv2plug.in/ns/ext/atom#frameTime", + "http://lv2plug.in/ns/ext/atom#supports", + "http://lv2plug.in/ns/ext/atom#timeUnit", + "http://lv2plug.in/ns/ext/buf-size#boundedBlockLength", + "http://lv2plug.in/ns/ext/buf-size#coarseBlockLength", + "http://lv2plug.in/ns/ext/buf-size#fixedBlockLength", + "http://lv2plug.in/ns/ext/buf-size#maxBlockLength", + "http://lv2plug.in/ns/ext/buf-size#minBlockLength", + "http://lv2plug.in/ns/ext/buf-size#nominalBlockLength", + "http://lv2plug.in/ns/ext/buf-size#powerOf2BlockLength", + "http://lv2plug.in/ns/ext/buf-size#sequenceSize", + "http://lv2plug.in/ns/ext/dynmanifest#DynManifest", + "http://lv2plug.in/ns/ext/event#Event", + "http://lv2plug.in/ns/ext/event#EventPort", + "http://lv2plug.in/ns/ext/event#FrameStamp", + "http://lv2plug.in/ns/ext/event#TimeStamp", + "http://lv2plug.in/ns/ext/event#generatesTimeStamp", + "http://lv2plug.in/ns/ext/event#generic", + "http://lv2plug.in/ns/ext/event#inheritsEvent", + "http://lv2plug.in/ns/ext/event#inheritsTimeStamp", + "http://lv2plug.in/ns/ext/event#supportsEvent", + "http://lv2plug.in/ns/ext/event#supportsTimeStamp", + "http://lv2plug.in/ns/ext/log#Entry", + "http://lv2plug.in/ns/ext/log#Error", + "http://lv2plug.in/ns/ext/log#Note", + "http://lv2plug.in/ns/ext/log#Trace", + "http://lv2plug.in/ns/ext/log#Warning", + "http://lv2plug.in/ns/ext/log#log", + "http://lv2plug.in/ns/ext/midi#ActiveSense", + "http://lv2plug.in/ns/ext/midi#Aftertouch", + "http://lv2plug.in/ns/ext/midi#Bender", + "http://lv2plug.in/ns/ext/midi#ChannelPressure", + "http://lv2plug.in/ns/ext/midi#Chunk", + "http://lv2plug.in/ns/ext/midi#Clock", + "http://lv2plug.in/ns/ext/midi#Continue", + "http://lv2plug.in/ns/ext/midi#Controller", + "http://lv2plug.in/ns/ext/midi#HexByte", + "http://lv2plug.in/ns/ext/midi#MidiEvent", + "http://lv2plug.in/ns/ext/midi#NoteOff", + "http://lv2plug.in/ns/ext/midi#NoteOn", + "http://lv2plug.in/ns/ext/midi#ProgramChange", + "http://lv2plug.in/ns/ext/midi#QuarterFrame", + "http://lv2plug.in/ns/ext/midi#Reset", + "http://lv2plug.in/ns/ext/midi#SongPosition", + "http://lv2plug.in/ns/ext/midi#SongSelect", + "http://lv2plug.in/ns/ext/midi#Start", + "http://lv2plug.in/ns/ext/midi#Stop", + "http://lv2plug.in/ns/ext/midi#SystemCommon", + "http://lv2plug.in/ns/ext/midi#SystemExclusive", + "http://lv2plug.in/ns/ext/midi#SystemMessage", + "http://lv2plug.in/ns/ext/midi#SystemRealtime", + "http://lv2plug.in/ns/ext/midi#Tick", + "http://lv2plug.in/ns/ext/midi#TuneRequest", + "http://lv2plug.in/ns/ext/midi#VoiceMessage", + "http://lv2plug.in/ns/ext/midi#benderValue", + "http://lv2plug.in/ns/ext/midi#binding", + "http://lv2plug.in/ns/ext/midi#byteNumber", + "http://lv2plug.in/ns/ext/midi#channel", + "http://lv2plug.in/ns/ext/midi#chunk", + "http://lv2plug.in/ns/ext/midi#controllerNumber", + "http://lv2plug.in/ns/ext/midi#controllerValue", + "http://lv2plug.in/ns/ext/midi#noteNumber", + "http://lv2plug.in/ns/ext/midi#pressure", + "http://lv2plug.in/ns/ext/midi#programNumber", + "http://lv2plug.in/ns/ext/midi#property", + "http://lv2plug.in/ns/ext/midi#songNumber", + "http://lv2plug.in/ns/ext/midi#songPosition", + "http://lv2plug.in/ns/ext/midi#status", + "http://lv2plug.in/ns/ext/midi#statusMask", + "http://lv2plug.in/ns/ext/midi#velocity", + "http://lv2plug.in/ns/ext/morph#AutoMorphPort", + "http://lv2plug.in/ns/ext/morph#MorphPort", + "http://lv2plug.in/ns/ext/morph#currentType", + "http://lv2plug.in/ns/ext/morph#interface", + "http://lv2plug.in/ns/ext/morph#supportsType", + "http://lv2plug.in/ns/ext/options#Option", + "http://lv2plug.in/ns/ext/options#interface", + "http://lv2plug.in/ns/ext/options#options", + "http://lv2plug.in/ns/ext/options#requiredOption", + "http://lv2plug.in/ns/ext/options#supportedOption", + "http://lv2plug.in/ns/ext/parameters#CompressorControls", + "http://lv2plug.in/ns/ext/parameters#ControlGroup", + "http://lv2plug.in/ns/ext/parameters#EnvelopeControls", + "http://lv2plug.in/ns/ext/parameters#FilterControls", + "http://lv2plug.in/ns/ext/parameters#OscillatorControls", + "http://lv2plug.in/ns/ext/parameters#amplitude", + "http://lv2plug.in/ns/ext/parameters#attack", + "http://lv2plug.in/ns/ext/parameters#bypass", + "http://lv2plug.in/ns/ext/parameters#cutoffFrequency", + "http://lv2plug.in/ns/ext/parameters#decay", + "http://lv2plug.in/ns/ext/parameters#delay", + "http://lv2plug.in/ns/ext/parameters#dryLevel", + "http://lv2plug.in/ns/ext/parameters#frequency", + "http://lv2plug.in/ns/ext/parameters#gain", + "http://lv2plug.in/ns/ext/parameters#hold", + "http://lv2plug.in/ns/ext/parameters#pulseWidth", + "http://lv2plug.in/ns/ext/parameters#ratio", + "http://lv2plug.in/ns/ext/parameters#release", + "http://lv2plug.in/ns/ext/parameters#resonance", + "http://lv2plug.in/ns/ext/parameters#sampleRate", + "http://lv2plug.in/ns/ext/parameters#sustain", + "http://lv2plug.in/ns/ext/parameters#threshold", + "http://lv2plug.in/ns/ext/parameters#waveform", + "http://lv2plug.in/ns/ext/parameters#wetDryRatio", + "http://lv2plug.in/ns/ext/parameters#wetLevel", + "http://lv2plug.in/ns/ext/patch#Ack", + "http://lv2plug.in/ns/ext/patch#Copy", + "http://lv2plug.in/ns/ext/patch#Delete", + "http://lv2plug.in/ns/ext/patch#Error", + "http://lv2plug.in/ns/ext/patch#Get", + "http://lv2plug.in/ns/ext/patch#Insert", + "http://lv2plug.in/ns/ext/patch#Message", + "http://lv2plug.in/ns/ext/patch#Move", + "http://lv2plug.in/ns/ext/patch#Patch", + "http://lv2plug.in/ns/ext/patch#Post", + "http://lv2plug.in/ns/ext/patch#Put", + "http://lv2plug.in/ns/ext/patch#Request", + "http://lv2plug.in/ns/ext/patch#Response", + "http://lv2plug.in/ns/ext/patch#Set", + "http://lv2plug.in/ns/ext/patch#accept", + "http://lv2plug.in/ns/ext/patch#add", + "http://lv2plug.in/ns/ext/patch#body", + "http://lv2plug.in/ns/ext/patch#context", + "http://lv2plug.in/ns/ext/patch#destination", + "http://lv2plug.in/ns/ext/patch#property", + "http://lv2plug.in/ns/ext/patch#readable", + "http://lv2plug.in/ns/ext/patch#remove", + "http://lv2plug.in/ns/ext/patch#request", + "http://lv2plug.in/ns/ext/patch#sequenceNumber", + "http://lv2plug.in/ns/ext/patch#subject", + "http://lv2plug.in/ns/ext/patch#value", + "http://lv2plug.in/ns/ext/patch#wildcard", + "http://lv2plug.in/ns/ext/patch#writable", + "http://lv2plug.in/ns/ext/port-groups#AmbisonicBH1P0Group", + "http://lv2plug.in/ns/ext/port-groups#AmbisonicBH1P1Group", + "http://lv2plug.in/ns/ext/port-groups#AmbisonicBH2P0Group", + "http://lv2plug.in/ns/ext/port-groups#AmbisonicBH2P1Group", + "http://lv2plug.in/ns/ext/port-groups#AmbisonicBH2P2Group", + "http://lv2plug.in/ns/ext/port-groups#AmbisonicBH3P0Group", + "http://lv2plug.in/ns/ext/port-groups#AmbisonicBH3P1Group", + "http://lv2plug.in/ns/ext/port-groups#AmbisonicBH3P2Group", + "http://lv2plug.in/ns/ext/port-groups#AmbisonicBH3P3Group", + "http://lv2plug.in/ns/ext/port-groups#AmbisonicGroup", + "http://lv2plug.in/ns/ext/port-groups#DiscreteGroup", + "http://lv2plug.in/ns/ext/port-groups#Element", + "http://lv2plug.in/ns/ext/port-groups#FivePointOneGroup", + "http://lv2plug.in/ns/ext/port-groups#FivePointZeroGroup", + "http://lv2plug.in/ns/ext/port-groups#FourPointZeroGroup", + "http://lv2plug.in/ns/ext/port-groups#Group", + "http://lv2plug.in/ns/ext/port-groups#InputGroup", + "http://lv2plug.in/ns/ext/port-groups#MidSideGroup", + "http://lv2plug.in/ns/ext/port-groups#MonoGroup", + "http://lv2plug.in/ns/ext/port-groups#OutputGroup", + "http://lv2plug.in/ns/ext/port-groups#SevenPointOneGroup", + "http://lv2plug.in/ns/ext/port-groups#SevenPointOneWideGroup", + "http://lv2plug.in/ns/ext/port-groups#SixPointOneGroup", + "http://lv2plug.in/ns/ext/port-groups#StereoGroup", + "http://lv2plug.in/ns/ext/port-groups#ThreePointZeroGroup", + "http://lv2plug.in/ns/ext/port-groups#center", + "http://lv2plug.in/ns/ext/port-groups#centerLeft", + "http://lv2plug.in/ns/ext/port-groups#centerRight", + "http://lv2plug.in/ns/ext/port-groups#element", + "http://lv2plug.in/ns/ext/port-groups#group", + "http://lv2plug.in/ns/ext/port-groups#left", + "http://lv2plug.in/ns/ext/port-groups#lowFrequencyEffects", + "http://lv2plug.in/ns/ext/port-groups#mainInput", + "http://lv2plug.in/ns/ext/port-groups#mainOutput", + "http://lv2plug.in/ns/ext/port-groups#rearCenter", + "http://lv2plug.in/ns/ext/port-groups#rearLeft", + "http://lv2plug.in/ns/ext/port-groups#rearRight", + "http://lv2plug.in/ns/ext/port-groups#right", + "http://lv2plug.in/ns/ext/port-groups#side", + "http://lv2plug.in/ns/ext/port-groups#sideChainOf", + "http://lv2plug.in/ns/ext/port-groups#sideLeft", + "http://lv2plug.in/ns/ext/port-groups#sideRight", + "http://lv2plug.in/ns/ext/port-groups#source", + "http://lv2plug.in/ns/ext/port-groups#subGroupOf", + "http://lv2plug.in/ns/ext/port-props#causesArtifacts", + "http://lv2plug.in/ns/ext/port-props#continuousCV", + "http://lv2plug.in/ns/ext/port-props#discreteCV", + "http://lv2plug.in/ns/ext/port-props#displayPriority", + "http://lv2plug.in/ns/ext/port-props#expensive", + "http://lv2plug.in/ns/ext/port-props#hasStrictBounds", + "http://lv2plug.in/ns/ext/port-props#logarithmic", + "http://lv2plug.in/ns/ext/port-props#notAutomatic", + "http://lv2plug.in/ns/ext/port-props#notOnGUI", + "http://lv2plug.in/ns/ext/port-props#rangeSteps", + "http://lv2plug.in/ns/ext/port-props#supportsStrictBounds", + "http://lv2plug.in/ns/ext/port-props#trigger", + "http://lv2plug.in/ns/ext/presets#Bank", + "http://lv2plug.in/ns/ext/presets#Preset", + "http://lv2plug.in/ns/ext/presets#bank", + "http://lv2plug.in/ns/ext/presets#preset", + "http://lv2plug.in/ns/ext/presets#value", + "http://lv2plug.in/ns/ext/resize-port#asLargeAs", + "http://lv2plug.in/ns/ext/resize-port#minimumSize", + "http://lv2plug.in/ns/ext/resize-port#resize", + "http://lv2plug.in/ns/ext/state#Changed", + "http://lv2plug.in/ns/ext/state#State", + "http://lv2plug.in/ns/ext/state#interface", + "http://lv2plug.in/ns/ext/state#loadDefaultState", + "http://lv2plug.in/ns/ext/state#makePath", + "http://lv2plug.in/ns/ext/state#mapPath", + "http://lv2plug.in/ns/ext/state#state", + "http://lv2plug.in/ns/ext/state#threadSafeRestore", + "http://lv2plug.in/ns/ext/time#Position", + "http://lv2plug.in/ns/ext/time#Rate", + "http://lv2plug.in/ns/ext/time#Time", + "http://lv2plug.in/ns/ext/time#bar", + "http://lv2plug.in/ns/ext/time#barBeat", + "http://lv2plug.in/ns/ext/time#beat", + "http://lv2plug.in/ns/ext/time#beatUnit", + "http://lv2plug.in/ns/ext/time#beatsPerBar", + "http://lv2plug.in/ns/ext/time#beatsPerMinute", + "http://lv2plug.in/ns/ext/time#frame", + "http://lv2plug.in/ns/ext/time#framesPerSecond", + "http://lv2plug.in/ns/ext/time#position", + "http://lv2plug.in/ns/ext/time#speed", + "http://lv2plug.in/ns/ext/urid#map", + "http://lv2plug.in/ns/ext/urid#unmap", + "http://lv2plug.in/ns/ext/worker#interface", + "http://lv2plug.in/ns/ext/worker#schedule", + "http://lv2plug.in/ns/extensions/ui#CocoaUI", + "http://lv2plug.in/ns/extensions/ui#Gtk3UI", + "http://lv2plug.in/ns/extensions/ui#GtkUI", + "http://lv2plug.in/ns/extensions/ui#PortNotification", + "http://lv2plug.in/ns/extensions/ui#PortProtocol", + "http://lv2plug.in/ns/extensions/ui#Qt4UI", + "http://lv2plug.in/ns/extensions/ui#Qt5UI", + "http://lv2plug.in/ns/extensions/ui#UI", + "http://lv2plug.in/ns/extensions/ui#WindowsUI", + "http://lv2plug.in/ns/extensions/ui#X11UI", + "http://lv2plug.in/ns/extensions/ui#binary", + "http://lv2plug.in/ns/extensions/ui#fixedSize", + "http://lv2plug.in/ns/extensions/ui#floatProtocol", + "http://lv2plug.in/ns/extensions/ui#idleInterface", + "http://lv2plug.in/ns/extensions/ui#makeSONameResident", + "http://lv2plug.in/ns/extensions/ui#noUserResize", + "http://lv2plug.in/ns/extensions/ui#notifyType", + "http://lv2plug.in/ns/extensions/ui#parent", + "http://lv2plug.in/ns/extensions/ui#peakProtocol", + "http://lv2plug.in/ns/extensions/ui#plugin", + "http://lv2plug.in/ns/extensions/ui#portIndex", + "http://lv2plug.in/ns/extensions/ui#portMap", + "http://lv2plug.in/ns/extensions/ui#portNotification", + "http://lv2plug.in/ns/extensions/ui#portSubscribe", + "http://lv2plug.in/ns/extensions/ui#protocol", + "http://lv2plug.in/ns/extensions/ui#resize", + "http://lv2plug.in/ns/extensions/ui#showInterface", + "http://lv2plug.in/ns/extensions/ui#touch", + "http://lv2plug.in/ns/extensions/ui#ui", + "http://lv2plug.in/ns/extensions/ui#updateRate", + "http://lv2plug.in/ns/extensions/ui#windowTitle", + "http://lv2plug.in/ns/extensions/units#Conversion", + "http://lv2plug.in/ns/extensions/units#Unit", + "http://lv2plug.in/ns/extensions/units#bar", + "http://lv2plug.in/ns/extensions/units#beat", + "http://lv2plug.in/ns/extensions/units#bpm", + "http://lv2plug.in/ns/extensions/units#cent", + "http://lv2plug.in/ns/extensions/units#cm", + "http://lv2plug.in/ns/extensions/units#coef", + "http://lv2plug.in/ns/extensions/units#conversion", + "http://lv2plug.in/ns/extensions/units#db", + "http://lv2plug.in/ns/extensions/units#degree", + "http://lv2plug.in/ns/extensions/units#factor", + "http://lv2plug.in/ns/extensions/units#frame", + "http://lv2plug.in/ns/extensions/units#hz", + "http://lv2plug.in/ns/extensions/units#inch", + "http://lv2plug.in/ns/extensions/units#khz", + "http://lv2plug.in/ns/extensions/units#km", + "http://lv2plug.in/ns/extensions/units#m", + "http://lv2plug.in/ns/extensions/units#mhz", + "http://lv2plug.in/ns/extensions/units#midiNote", + "http://lv2plug.in/ns/extensions/units#mile", + "http://lv2plug.in/ns/extensions/units#min", + "http://lv2plug.in/ns/extensions/units#mm", + "http://lv2plug.in/ns/extensions/units#ms", + "http://lv2plug.in/ns/extensions/units#name", + "http://lv2plug.in/ns/extensions/units#oct", + "http://lv2plug.in/ns/extensions/units#pc", + "http://lv2plug.in/ns/extensions/units#prefixConversion", + "http://lv2plug.in/ns/extensions/units#render", + "http://lv2plug.in/ns/extensions/units#s", + "http://lv2plug.in/ns/extensions/units#semitone12TET", + "http://lv2plug.in/ns/extensions/units#symbol", + "http://lv2plug.in/ns/extensions/units#to", + "http://lv2plug.in/ns/extensions/units#unit", + "http://lv2plug.in/ns/lv2core#AllpassPlugin", + "http://lv2plug.in/ns/lv2core#AmplifierPlugin", + "http://lv2plug.in/ns/lv2core#AnalyserPlugin", + "http://lv2plug.in/ns/lv2core#AudioPort", + "http://lv2plug.in/ns/lv2core#BandpassPlugin", + "http://lv2plug.in/ns/lv2core#CVPort", + "http://lv2plug.in/ns/lv2core#Channel", + "http://lv2plug.in/ns/lv2core#ChorusPlugin", + "http://lv2plug.in/ns/lv2core#CombPlugin", + "http://lv2plug.in/ns/lv2core#CompressorPlugin", + "http://lv2plug.in/ns/lv2core#ConstantPlugin", + "http://lv2plug.in/ns/lv2core#ControlPort", + "http://lv2plug.in/ns/lv2core#ConverterPlugin", + "http://lv2plug.in/ns/lv2core#DelayPlugin", + "http://lv2plug.in/ns/lv2core#Designation", + "http://lv2plug.in/ns/lv2core#DistortionPlugin", + "http://lv2plug.in/ns/lv2core#DynamicsPlugin", + "http://lv2plug.in/ns/lv2core#EQPlugin", + "http://lv2plug.in/ns/lv2core#EnvelopePlugin", + "http://lv2plug.in/ns/lv2core#ExpanderPlugin", + "http://lv2plug.in/ns/lv2core#ExtensionData", + "http://lv2plug.in/ns/lv2core#Feature", + "http://lv2plug.in/ns/lv2core#FilterPlugin", + "http://lv2plug.in/ns/lv2core#FlangerPlugin", + "http://lv2plug.in/ns/lv2core#FunctionPlugin", + "http://lv2plug.in/ns/lv2core#GatePlugin", + "http://lv2plug.in/ns/lv2core#GeneratorPlugin", + "http://lv2plug.in/ns/lv2core#HighpassPlugin", + "http://lv2plug.in/ns/lv2core#InputPort", + "http://lv2plug.in/ns/lv2core#InstrumentPlugin", + "http://lv2plug.in/ns/lv2core#LimiterPlugin", + "http://lv2plug.in/ns/lv2core#LowpassPlugin", + "http://lv2plug.in/ns/lv2core#MIDIPlugin", + "http://lv2plug.in/ns/lv2core#MixerPlugin", + "http://lv2plug.in/ns/lv2core#ModulatorPlugin", + "http://lv2plug.in/ns/lv2core#MultiEQPlugin", + "http://lv2plug.in/ns/lv2core#OscillatorPlugin", + "http://lv2plug.in/ns/lv2core#OutputPort", + "http://lv2plug.in/ns/lv2core#ParaEQPlugin", + "http://lv2plug.in/ns/lv2core#Parameter", + "http://lv2plug.in/ns/lv2core#PhaserPlugin", + "http://lv2plug.in/ns/lv2core#PitchPlugin", + "http://lv2plug.in/ns/lv2core#Plugin", + "http://lv2plug.in/ns/lv2core#PluginBase", + "http://lv2plug.in/ns/lv2core#Point", + "http://lv2plug.in/ns/lv2core#Port", + "http://lv2plug.in/ns/lv2core#PortBase", + "http://lv2plug.in/ns/lv2core#PortProperty", + "http://lv2plug.in/ns/lv2core#Resource", + "http://lv2plug.in/ns/lv2core#ReverbPlugin", + "http://lv2plug.in/ns/lv2core#ScalePoint", + "http://lv2plug.in/ns/lv2core#ShortName", + "http://lv2plug.in/ns/lv2core#SimulatorPlugin", + "http://lv2plug.in/ns/lv2core#SpatialPlugin", + "http://lv2plug.in/ns/lv2core#Specification", + "http://lv2plug.in/ns/lv2core#SpectralPlugin", + "http://lv2plug.in/ns/lv2core#Symbol", + "http://lv2plug.in/ns/lv2core#UtilityPlugin", + "http://lv2plug.in/ns/lv2core#WaveshaperPlugin", + "http://lv2plug.in/ns/lv2core#appliesTo", + "http://lv2plug.in/ns/lv2core#binary", + "http://lv2plug.in/ns/lv2core#connectionOptional", + "http://lv2plug.in/ns/lv2core#control", + "http://lv2plug.in/ns/lv2core#default", + "http://lv2plug.in/ns/lv2core#designation", + "http://lv2plug.in/ns/lv2core#documentation", + "http://lv2plug.in/ns/lv2core#enabled", + "http://lv2plug.in/ns/lv2core#enumeration", + "http://lv2plug.in/ns/lv2core#extensionData", + "http://lv2plug.in/ns/lv2core#freeWheeling", + "http://lv2plug.in/ns/lv2core#hardRTCapable", + "http://lv2plug.in/ns/lv2core#inPlaceBroken", + "http://lv2plug.in/ns/lv2core#index", + "http://lv2plug.in/ns/lv2core#integer", + "http://lv2plug.in/ns/lv2core#isLive", + "http://lv2plug.in/ns/lv2core#isSideChain", + "http://lv2plug.in/ns/lv2core#latency", + "http://lv2plug.in/ns/lv2core#maximum", + "http://lv2plug.in/ns/lv2core#microVersion", + "http://lv2plug.in/ns/lv2core#minimum", + "http://lv2plug.in/ns/lv2core#minorVersion", + "http://lv2plug.in/ns/lv2core#name", + "http://lv2plug.in/ns/lv2core#optionalFeature", + "http://lv2plug.in/ns/lv2core#port", + "http://lv2plug.in/ns/lv2core#portProperty", + "http://lv2plug.in/ns/lv2core#project", + "http://lv2plug.in/ns/lv2core#prototype", + "http://lv2plug.in/ns/lv2core#reportsLatency", + "http://lv2plug.in/ns/lv2core#requiredFeature", + "http://lv2plug.in/ns/lv2core#sampleRate", + "http://lv2plug.in/ns/lv2core#scalePoint", + "http://lv2plug.in/ns/lv2core#shortName", + "http://lv2plug.in/ns/lv2core#symbol", + "http://lv2plug.in/ns/lv2core#toggled", + NULL +}; + +enum LV2_URID_ID { + LV2_URID_ATOM_Atom = 1, + LV2_URID_ATOM_AtomPort, + LV2_URID_ATOM_Blank, + LV2_URID_ATOM_Bool, + LV2_URID_ATOM_Chunk, + LV2_URID_ATOM_Double, + LV2_URID_ATOM_Event, + LV2_URID_ATOM_Float, + LV2_URID_ATOM_Int, + LV2_URID_ATOM_Literal, + LV2_URID_ATOM_Long, + LV2_URID_ATOM_Number, + LV2_URID_ATOM_Object, + LV2_URID_ATOM_Path, + LV2_URID_ATOM_Property, + LV2_URID_ATOM_Resource, + LV2_URID_ATOM_Sequence, + LV2_URID_ATOM_Sound, + LV2_URID_ATOM_String, + LV2_URID_ATOM_Tuple, + LV2_URID_ATOM_URI, + LV2_URID_ATOM_URID, + LV2_URID_ATOM_Vector, + LV2_URID_ATOM_atomTransfer, + LV2_URID_ATOM_beatTime, + LV2_URID_ATOM_bufferType, + LV2_URID_ATOM_cType, + LV2_URID_ATOM_childType, + LV2_URID_ATOM_eventTransfer, + LV2_URID_ATOM_frameTime, + LV2_URID_ATOM_supports, + LV2_URID_ATOM_timeUnit, + + LV2_URID_BUFSZ_boundedBlockLength, + LV2_URID_BUFSZ_coarseBlockLength, + LV2_URID_BUFSZ_fixedBlockLength, + LV2_URID_BUFSZ_maxBlockLength, + LV2_URID_BUFSZ_minBlockLength, + LV2_URID_BUFSZ_nominalBlockLength, + LV2_URID_BUFSZ_powerOf2BlockLength, + LV2_URID_BUFSZ_sequenceSize, + + LV2_URID_DMAN_DynManifest, + + LV2_URID_EVENT_Event, + LV2_URID_EVENT_EventPort, + LV2_URID_EVENT_FrameStamp, + LV2_URID_EVENT_TimeStamp, + LV2_URID_EVENT_generatesTimeStamp, + LV2_URID_EVENT_generic, + LV2_URID_EVENT_inheritsEvent, + LV2_URID_EVENT_inheritsTimeStamp, + LV2_URID_EVENT_supportsEvent, + LV2_URID_EVENT_supportsTimeStamp, + + LV2_URID_LOG_Entry, + LV2_URID_LOG_Error, + LV2_URID_LOG_Note, + LV2_URID_LOG_Trace, + LV2_URID_LOG_Warning, + LV2_URID_LOG_log, + + LV2_URID_MIDI_ActiveSense, + LV2_URID_MIDI_Aftertouch, + LV2_URID_MIDI_Bender, + LV2_URID_MIDI_ChannelPressure, + LV2_URID_MIDI_Chunk, + LV2_URID_MIDI_Clock, + LV2_URID_MIDI_Continue, + LV2_URID_MIDI_Controller, + LV2_URID_MIDI_HexByte, + LV2_URID_MIDI_MidiEvent, + LV2_URID_MIDI_NoteOff, + LV2_URID_MIDI_NoteOn, + LV2_URID_MIDI_ProgramChange, + LV2_URID_MIDI_QuarterFrame, + LV2_URID_MIDI_Reset, + LV2_URID_MIDI_SongPosition, + LV2_URID_MIDI_SongSelect, + LV2_URID_MIDI_Start, + LV2_URID_MIDI_Stop, + LV2_URID_MIDI_SystemCommon, + LV2_URID_MIDI_SystemExclusive, + LV2_URID_MIDI_SystemMessage, + LV2_URID_MIDI_SystemRealtime, + LV2_URID_MIDI_Tick, + LV2_URID_MIDI_TuneRequest, + LV2_URID_MIDI_VoiceMessage, + LV2_URID_MIDI_benderValue, + LV2_URID_MIDI_binding, + LV2_URID_MIDI_byteNumber, + LV2_URID_MIDI_channel, + LV2_URID_MIDI_chunk, + LV2_URID_MIDI_controllerNumber, + LV2_URID_MIDI_controllerValue, + LV2_URID_MIDI_noteNumber, + LV2_URID_MIDI_pressure, + LV2_URID_MIDI_programNumber, + LV2_URID_MIDI_property, + LV2_URID_MIDI_songNumber, + LV2_URID_MIDI_songPosition, + LV2_URID_MIDI_status, + LV2_URID_MIDI_statusMask, + LV2_URID_MIDI_velocity, + + LV2_URID_MORPH_AutoMorphPort, + LV2_URID_MORPH_MorphPort, + LV2_URID_MORPH_currentType, + LV2_URID_MORPH_interface, + LV2_URID_MORPH_supportsType, + + LV2_URID_OPTIONS_Option, + LV2_URID_OPTIONS_interface, + LV2_URID_OPTIONS_options, + LV2_URID_OPTIONS_requiredOption, + LV2_URID_OPTIONS_supportedOption, + + LV2_URID_PARAMETERS_CompressorControls, + LV2_URID_PARAMETERS_ControlGroup, + LV2_URID_PARAMETERS_EnvelopeControls, + LV2_URID_PARAMETERS_FilterControls, + LV2_URID_PARAMETERS_OscillatorControls, + LV2_URID_PARAMETERS_amplitude, + LV2_URID_PARAMETERS_attack, + LV2_URID_PARAMETERS_bypass, + LV2_URID_PARAMETERS_cutoffFrequency, + LV2_URID_PARAMETERS_decay, + LV2_URID_PARAMETERS_delay, + LV2_URID_PARAMETERS_dryLevel, + LV2_URID_PARAMETERS_frequency, + LV2_URID_PARAMETERS_gain, + LV2_URID_PARAMETERS_hold, + LV2_URID_PARAMETERS_pulseWidth, + LV2_URID_PARAMETERS_ratio, + LV2_URID_PARAMETERS_release, + LV2_URID_PARAMETERS_resonance, + LV2_URID_PARAMETERS_sampleRate, + LV2_URID_PARAMETERS_sustain, + LV2_URID_PARAMETERS_threshold, + LV2_URID_PARAMETERS_waveform, + LV2_URID_PARAMETERS_wetDryRatio, + LV2_URID_PARAMETERS_wetLevel, + + LV2_URID_PATCH_Ack, + LV2_URID_PATCH_Copy, + LV2_URID_PATCH_Delete, + LV2_URID_PATCH_Error, + LV2_URID_PATCH_Get, + LV2_URID_PATCH_Insert, + LV2_URID_PATCH_Message, + LV2_URID_PATCH_Move, + LV2_URID_PATCH_Patch, + LV2_URID_PATCH_Post, + LV2_URID_PATCH_Put, + LV2_URID_PATCH_Request, + LV2_URID_PATCH_Response, + LV2_URID_PATCH_Set, + LV2_URID_PATCH_accept, + LV2_URID_PATCH_add, + LV2_URID_PATCH_body, + LV2_URID_PATCH_context, + LV2_URID_PATCH_destination, + LV2_URID_PATCH_property, + LV2_URID_PATCH_readable, + LV2_URID_PATCH_remove, + LV2_URID_PATCH_request, + LV2_URID_PATCH_sequenceNumber, + LV2_URID_PATCH_subject, + LV2_URID_PATCH_value, + LV2_URID_PATCH_wildcard, + LV2_URID_PATCH_writable, + + LV2_URID_PORT_GROUPS_AmbisonicBH1P0Group, + LV2_URID_PORT_GROUPS_AmbisonicBH1P1Group, + LV2_URID_PORT_GROUPS_AmbisonicBH2P0Group, + LV2_URID_PORT_GROUPS_AmbisonicBH2P1Group, + LV2_URID_PORT_GROUPS_AmbisonicBH2P2Group, + LV2_URID_PORT_GROUPS_AmbisonicBH3P0Group, + LV2_URID_PORT_GROUPS_AmbisonicBH3P1Group, + LV2_URID_PORT_GROUPS_AmbisonicBH3P2Group, + LV2_URID_PORT_GROUPS_AmbisonicBH3P3Group, + LV2_URID_PORT_GROUPS_DiscreteGroup, + LV2_URID_PORT_GROUPS_Element, + LV2_URID_PORT_GROUPS_FivePointOneGroup, + LV2_URID_PORT_GROUPS_FivePointZeroGroup, + LV2_URID_PORT_GROUPS_FourPointZeroGroup, + LV2_URID_PORT_GROUPS_Group, + LV2_URID_PORT_GROUPS_InputGroup, + LV2_URID_PORT_GROUPS_MidSideGroup, + LV2_URID_PORT_GROUPS_MonoGroup, + LV2_URID_PORT_GROUPS_OutputGroup, + LV2_URID_PORT_GROUPS_SevenPointOneGroup, + LV2_URID_PORT_GROUPS_SevenPointOneWideGroup, + LV2_URID_PORT_GROUPS_SixPointOneGroup, + LV2_URID_PORT_GROUPS_StereoGroup, + LV2_URID_PORT_GROUPS_ThreePointZeroGroup, + LV2_URID_PORT_GROUPS_center, + LV2_URID_PORT_GROUPS_centerLeft, + LV2_URID_PORT_GROUPS_centerRight, + LV2_URID_PORT_GROUPS_element, + LV2_URID_PORT_GROUPS_group, + LV2_URID_PORT_GROUPS_left, + LV2_URID_PORT_GROUPS_lowFrequencyEffects, + LV2_URID_PORT_GROUPS_mainInput, + LV2_URID_PORT_GROUPS_mainOutput, + LV2_URID_PORT_GROUPS_rearCenter, + LV2_URID_PORT_GROUPS_rearLeft, + LV2_URID_PORT_GROUPS_rearRight, + LV2_URID_PORT_GROUPS_right, + LV2_URID_PORT_GROUPS_side, + LV2_URID_PORT_GROUPS_sideChainOf, + LV2_URID_PORT_GROUPS_sideLeft, + LV2_URID_PORT_GROUPS_sideRight, + LV2_URID_PORT_GROUPS_source, + LV2_URID_PORT_GROUPS_subGroupOf, + + LV2_URID_PORT_PROPS_causesArtifacts, + LV2_URID_PORT_PROPS_continuousCV, + LV2_URID_PORT_PROPS_discreteCV, + LV2_URID_PORT_PROPS_displayPriority, + LV2_URID_PORT_PROPS_expensive, + LV2_URID_PORT_PROPS_hasStrictBounds, + LV2_URID_PORT_PROPS_logarithmic, + LV2_URID_PORT_PROPS_notAutomatic, + LV2_URID_PORT_PROPS_notOnGUI, + LV2_URID_PORT_PROPS_rangeSteps, + LV2_URID_PORT_PROPS_supportsStrictBounds, + LV2_URID_PORT_PROPS_trigger, + + LV2_URID_PRESETS_Bank, + LV2_URID_PRESETS_Preset, + LV2_URID_PRESETS_bank, + LV2_URID_PRESETS_preset, + LV2_URID_PRESETS_value, + + LV2_URID_RSZ_asLargeAs, + LV2_URID_RSZ_minimumSize, + LV2_URID_RSZ_resize, + + LV2_URID_STATE_Changed, + LV2_URID_STATE_State, + LV2_URID_STATE_interface, + LV2_URID_STATE_loadDefaultState, + LV2_URID_STATE_makePath, + LV2_URID_STATE_mapPath, + LV2_URID_STATE_state, + LV2_URID_STATE_threadSafeRestore, + + LV2_URID_TIME_Position, + LV2_URID_TIME_Rate, + LV2_URID_TIME_Time, + LV2_URID_TIME_bar, + LV2_URID_TIME_barBeat, + LV2_URID_TIME_beat, + LV2_URID_TIME_beatUnit, + LV2_URID_TIME_beatsPerBar, + LV2_URID_TIME_beatsPerMinute, + LV2_URID_TIME_frame, + LV2_URID_TIME_framesPerSecond, + LV2_URID_TIME_position, + LV2_URID_TIME_speed, + + LV2_URID_URID_map, + LV2_URID_URID_unmap, + + LV2_URID_WORKER_interface, + LV2_URID_WORKER_schedule, + + LV2_URID_UI_CocoaUI, + LV2_URID_UI_Gtk3UI, + LV2_URID_UI_GtkUI, + LV2_URID_UI_PortNotification, + LV2_URID_UI_PortProtocol, + LV2_URID_UI_Qt4UI, + LV2_URID_UI_Qt5UI, + LV2_URID_UI_UI, + LV2_URID_UI_WindowsUI, + LV2_URID_UI_X11UI, + LV2_URID_UI_binary, + LV2_URID_UI_fixedSize, + LV2_URID_UI_floatProtocol, + LV2_URID_UI_idleInterface, + LV2_URID_UI_makeSONameResident, + LV2_URID_UI_noUserResize, + LV2_URID_UI_notifyType, + LV2_URID_UI_parent, + LV2_URID_UI_peakProtocol, + LV2_URID_UI_plugin, + LV2_URID_UI_portIndex, + LV2_URID_UI_portMap, + LV2_URID_UI_portNotification, + LV2_URID_UI_portSubscribe, + LV2_URID_UI_protocol, + LV2_URID_UI_resize, + LV2_URID_UI_showInterface, + LV2_URID_UI_touch, + LV2_URID_UI_ui, + LV2_URID_UI_updateRate, + LV2_URID_UI_windowTitle, + + LV2_URID_UNITS_Conversion, + LV2_URID_UNITS_Unit, + LV2_URID_UNITS_bar, + LV2_URID_UNITS_beat, + LV2_URID_UNITS_bpm, + LV2_URID_UNITS_cent, + LV2_URID_UNITS_cm, + LV2_URID_UNITS_coef, + LV2_URID_UNITS_conversion, + LV2_URID_UNITS_db, + LV2_URID_UNITS_degree, + LV2_URID_UNITS_factor, + LV2_URID_UNITS_frame, + LV2_URID_UNITS_hz, + LV2_URID_UNITS_inch, + LV2_URID_UNITS_khz, + LV2_URID_UNITS_km, + LV2_URID_UNITS_m, + LV2_URID_UNITS_mhz, + LV2_URID_UNITS_midiNote, + LV2_URID_UNITS_mile, + LV2_URID_UNITS_min, + LV2_URID_UNITS_mm, + LV2_URID_UNITS_ms, + LV2_URID_UNITS_name, + LV2_URID_UNITS_oct, + LV2_URID_UNITS_pc, + LV2_URID_UNITS_prefixConversion, + LV2_URID_UNITS_render, + LV2_URID_UNITS_s, + LV2_URID_UNITS_semitone12TET, + LV2_URID_UNITS_symbol, + LV2_URID_UNITS_to, + LV2_URID_UNITS_unit, + + LV2_URID_LV2_AllpassPlugin, + LV2_URID_LV2_AmplifierPlugin, + LV2_URID_LV2_AnalyserPlugin, + LV2_URID_LV2_AudioPort, + LV2_URID_LV2_BandpassPlugin, + LV2_URID_LV2_CVPort, + LV2_URID_LV2_Channel, + LV2_URID_LV2_ChorusPlugin, + LV2_URID_LV2_CombPlugin, + LV2_URID_LV2_CompressorPlugin, + LV2_URID_LV2_ConstantPlugin, + LV2_URID_LV2_ControlPort, + LV2_URID_LV2_ConverterPlugin, + LV2_URID_LV2_DelayPlugin, + LV2_URID_LV2_Designation, + LV2_URID_LV2_DistortionPlugin, + LV2_URID_LV2_DynamicsPlugin, + LV2_URID_LV2_EQPlugin, + LV2_URID_LV2_EnvelopePlugin, + LV2_URID_LV2_ExpanderPlugin, + LV2_URID_LV2_ExtensionData, + LV2_URID_LV2_Feature, + LV2_URID_LV2_FilterPlugin, + LV2_URID_LV2_FlangerPlugin, + LV2_URID_LV2_FunctionPlugin, + LV2_URID_LV2_GatePlugin, + LV2_URID_LV2_GeneratorPlugin, + LV2_URID_LV2_HighpassPlugin, + LV2_URID_LV2_InputPort, + LV2_URID_LV2_InstrumentPlugin, + LV2_URID_LV2_LimiterPlugin, + LV2_URID_LV2_LowpassPlugin, + LV2_URID_LV2_MIDIPlugin, + LV2_URID_LV2_MixerPlugin, + LV2_URID_LV2_ModulatorPlugin, + LV2_URID_LV2_MultiEQPlugin, + LV2_URID_LV2_OscillatorPlugin, + LV2_URID_LV2_OutputPort, + LV2_URID_LV2_ParaEQPlugin, + LV2_URID_LV2_Parameter, + LV2_URID_LV2_PhaserPlugin, + LV2_URID_LV2_PitchPlugin, + LV2_URID_LV2_Plugin, + LV2_URID_LV2_PluginBase, + LV2_URID_LV2_Point, + LV2_URID_LV2_Port, + LV2_URID_LV2_PortBase, + LV2_URID_LV2_PortProperty, + LV2_URID_LV2_Resource, + LV2_URID_LV2_ReverbPlugin, + LV2_URID_LV2_ScalePoint, + LV2_URID_LV2_ShortName, + LV2_URID_LV2_SimulatorPlugin, + LV2_URID_LV2_SpatialPlugin, + LV2_URID_LV2_Specification, + LV2_URID_LV2_SpectralPlugin, + LV2_URID_LV2_Symbol, + LV2_URID_LV2_UtilityPlugin, + LV2_URID_LV2_WaveshaperPlugin, + LV2_URID_LV2_appliesTo, + LV2_URID_LV2_binary, + LV2_URID_LV2_connectionOptional, + LV2_URID_LV2_control, + LV2_URID_LV2_default, + LV2_URID_LV2_designation, + LV2_URID_LV2_documentation, + LV2_URID_LV2_enabled, + LV2_URID_LV2_enumeration, + LV2_URID_LV2_extensionData, + LV2_URID_LV2_freeWheeling, + LV2_URID_LV2_hardRTCapable, + LV2_URID_LV2_inPlaceBroken, + LV2_URID_LV2_index, + LV2_URID_LV2_integer, + LV2_URID_LV2_isLive, + LV2_URID_LV2_isSideChain, + LV2_URID_LV2_latency, + LV2_URID_LV2_maximum, + LV2_URID_LV2_microVersion, + LV2_URID_LV2_minimum, + LV2_URID_LV2_minorVersion, + LV2_URID_LV2_name, + LV2_URID_LV2_optionalFeature, + LV2_URID_LV2_port, + LV2_URID_LV2_portProperty, + LV2_URID_LV2_project, + LV2_URID_LV2_prototype, + LV2_URID_LV2_reportsLatency, + LV2_URID_LV2_requiredFeature, + LV2_URID_LV2_sampleRate, + LV2_URID_LV2_scalePoint, + LV2_URID_LV2_shortName, + LV2_URID_LV2_symbol, + LV2_URID_LV2_toggled, + + LV2_URID_STATIC_END, +}; + +#define LV2_URID_NUM_STATIC_IDS (LV2_URID_STATIC_END - 1) + +static inline int +lv2_urid_static_cmp(const void* lhs, const void* rhs) +{ + const char* key = *(const char**)lhs; + const char* element = *(const char**)rhs; + + return strcmp(key, element); +} + +static inline LV2_URID +lv2_urid_static_map(const char* const uri) +{ + const char** p = (const char**)bsearch(&uri, + lv2_urid_static_uris + 1, + LV2_URID_STATIC_END, + sizeof(char*), + lv2_urid_static_cmp); + + assert(!p || (!strcmp(uri, *p) && p >= lv2_urid_static_uris && + p <= lv2_urid_static_uris + LV2_URID_STATIC_END)); + + return p ? (p - lv2_urid_static_uris) : 0; +} + +static inline const char* +lv2_urid_static_unmap(const LV2_URID urid) +{ + assert(urid <= LV2_URID_STATIC_END); + return urid && urid <= LV2_URID_STATIC_END ? lv2_urid_static_uris[urid] + : NULL; +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif // LV2_URID_SID_H + +/** + @} +*/ diff --git a/lv2/urid/urid.h b/lv2/urid/urid.h index c9ee2e0..3706007 100644 --- a/lv2/urid/urid.h +++ b/lv2/urid/urid.h @@ -125,6 +125,23 @@ typedef struct _LV2_URID_Unmap { LV2_URID urid); } LV2_URID_Unmap; +#if 0 +/** + Static URIDs Feature (LV2_URID__staticURIDs) +*/ +typedef struct _LV2_URID_Static_URIDs { + /** + Opaque pointer to host data. + + This MUST be passed to unmap() whenever it is called. + Otherwise, it must not be interpreted in any way. + */ + LV2_URID_Static_URIDs_Handle handle; + + int max_static_id; +} LV2_URID_Static_URIDs; +#endif + #ifdef __cplusplus } /* extern "C" */ #endif |