diff DPF-Prymula-audioplugins/dpf/distrho/src/lv2/urid.h @ 3:84e66ea83026

DPF-Prymula-audioplugins-0.231015-2
author prymula <prymula76@outlook.com>
date Mon, 16 Oct 2023 21:53:34 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DPF-Prymula-audioplugins/dpf/distrho/src/lv2/urid.h	Mon Oct 16 21:53:34 2023 +0200
@@ -0,0 +1,136 @@
+/*
+  Copyright 2008-2016 David Robillard <http://drobilla.net>
+  Copyright 2011 Gabriel M. Beddingfield <gabrbedd@gmail.com>
+
+  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 urid URID
+
+   Features for mapping URIs to and from integers, see
+   <http://lv2plug.in/ns/ext/urid> for details.
+
+   @{
+*/
+
+#ifndef LV2_URID_H
+#define LV2_URID_H
+
+#define LV2_URID_URI    "http://lv2plug.in/ns/ext/urid"  ///< http://lv2plug.in/ns/ext/urid
+#define LV2_URID_PREFIX LV2_URID_URI "#"                 ///< http://lv2plug.in/ns/ext/urid#
+
+#define LV2_URID__map   LV2_URID_PREFIX "map"    ///< http://lv2plug.in/ns/ext/urid#map
+#define LV2_URID__unmap LV2_URID_PREFIX "unmap"  ///< http://lv2plug.in/ns/ext/urid#unmap
+
+#define LV2_URID_MAP_URI   LV2_URID__map    ///< Legacy
+#define LV2_URID_UNMAP_URI LV2_URID__unmap  ///< Legacy
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+   Opaque pointer to host data for LV2_URID_Map.
+*/
+typedef void* LV2_URID_Map_Handle;
+
+/**
+   Opaque pointer to host data for LV2_URID_Unmap.
+*/
+typedef void* LV2_URID_Unmap_Handle;
+
+/**
+   URI mapped to an integer.
+*/
+typedef uint32_t LV2_URID;
+
+/**
+   URID Map Feature (LV2_URID__map)
+*/
+typedef struct _LV2_URID_Map {
+	/**
+	   Opaque pointer to host data.
+
+	   This MUST be passed to map_uri() whenever it is called.
+	   Otherwise, it must not be interpreted in any way.
+	*/
+	LV2_URID_Map_Handle handle;
+
+	/**
+	   Get the numeric ID of a URI.
+
+	   If the ID does not already exist, it will be created.
+
+	   This function is referentially transparent; any number of calls with the
+	   same arguments is guaranteed to return the same value over the life of a
+	   plugin instance.  Note, however, that several URIs MAY resolve to the
+	   same ID if the host considers those URIs equivalent.
+
+	   This function is not necessarily very fast or RT-safe: plugins SHOULD
+	   cache any IDs they might need in performance critical situations.
+
+	   The return value 0 is reserved and indicates that an ID for that URI
+	   could not be created for whatever reason.  However, hosts SHOULD NOT
+	   return 0 from this function in non-exceptional circumstances (i.e. the
+	   URI map SHOULD be dynamic).
+
+	   @param handle Must be the callback_data member of this struct.
+	   @param uri The URI to be mapped to an integer ID.
+	*/
+	LV2_URID (*map)(LV2_URID_Map_Handle handle,
+	                const char*         uri);
+} LV2_URID_Map;
+
+/**
+   URI Unmap Feature (LV2_URID__unmap)
+*/
+typedef struct _LV2_URID_Unmap {
+	/**
+	   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_Unmap_Handle handle;
+
+	/**
+	   Get the URI for a previously mapped numeric ID.
+
+	   Returns NULL if `urid` is not yet mapped.  Otherwise, the corresponding
+	   URI is returned in a canonical form.  This MAY not be the exact same
+	   string that was originally passed to LV2_URID_Map::map(), but it MUST be
+	   an identical URI according to the URI syntax specification (RFC3986).  A
+	   non-NULL return for a given `urid` will always be the same for the life
+	   of the plugin.  Plugins that intend to perform string comparison on
+	   unmapped URIs SHOULD first canonicalise URI strings with a call to
+	   map_uri() followed by a call to unmap_uri().
+
+	   @param handle Must be the callback_data member of this struct.
+	   @param urid The ID to be mapped back to the URI string.
+	*/
+	const char* (*unmap)(LV2_URID_Unmap_Handle handle,
+	                     LV2_URID              urid);
+} LV2_URID_Unmap;
+
+#ifdef __cplusplus
+}  /* extern "C" */
+#endif
+
+#endif /* LV2_URID_H */
+
+/**
+   @}
+*/