# LV2

An open and extensible audio plugin standard

Version | 1.18.10

Data Structures | Macros | Typedefs
URID
LV2

## Detailed Description

Features for mapping URIs to and from integers.

See http://lv2plug.in/ns/ext/urid for details.

## Data Structures
struct | LV2_URID_Map
struct | LV2_URID_Unmap

## Macros
#define | LV2_URID_URI "http://lv2plug.in/ns/ext/urid"
#define | LV2_URID_PREFIX LV2_URID_URI "#"
#define | LV2_URID__map LV2_URID_PREFIX "map"
#define | LV2_URID__unmap LV2_URID_PREFIX "unmap"
#define | LV2_URID_MAP_URI LV2_URID__map
#define | LV2_URID_UNMAP_URI LV2_URID__unmap

## Typedefs
typedef void * | LV2_URID_Map_Handle
typedef void * | LV2_URID_Unmap_Handle
typedef uint32_t | LV2_URID

## Data Structure Documentation

## ◆ LV2_URID_Map

struct LV2_URID_Map

URID Map Feature (LV2_URID__map)

Data Fields
LV2_URID_Map_Handle | handle | 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(*)(LV2_URID_Map_Handle handle, const char *uri) | map | 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). Parameters
  handle | Must be the callback_data member of this struct.
  uri | The URI to be mapped to an integer ID.

## ◆ LV2_URID_Unmap

struct LV2_URID_Unmap

URI Unmap Feature (LV2_URID__unmap)

Data Fields
LV2_URID_Unmap_Handle | handle | Opaque pointer to host data. This MUST be passed to unmap() whenever it is called. Otherwise, it must not be interpreted in any way.
  const char *(*)(LV2_URID_Unmap_Handle handle, LV2_URID urid) | unmap | 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(). Parameters
  handle | Must be the callback_data member of this struct.
  urid | The ID to be mapped back to the URI string.

## Macro Definition Documentation

## ◆ LV2_URID_URI

#define LV2_URID_URI "http://lv2plug.in/ns/ext/urid"

http://lv2plug.in/ns/ext/urid

## ◆ LV2_URID_PREFIX

#define LV2_URID_PREFIX LV2_URID_URI "#"

http://lv2plug.in/ns/ext/urid#

## ◆ LV2_URID__map

#define LV2_URID__map LV2_URID_PREFIX "map"

http://lv2plug.in/ns/ext/urid#map

## ◆ LV2_URID__unmap

#define LV2_URID__unmap LV2_URID_PREFIX "unmap"

http://lv2plug.in/ns/ext/urid#unmap

## ◆ LV2_URID_MAP_URI

#define LV2_URID_MAP_URI LV2_URID__map

Legacy.

## ◆ LV2_URID_UNMAP_URI

#define LV2_URID_UNMAP_URI LV2_URID__unmap

Legacy.

## Typedef Documentation

## ◆ LV2_URID_Map_Handle

typedef void* LV2_URID_Map_Handle

Opaque pointer to host data for LV2_URID_Map.

## ◆ LV2_URID_Unmap_Handle

typedef void* LV2_URID_Unmap_Handle

Opaque pointer to host data for LV2_URID_Unmap.

## ◆ LV2_URID

typedef uint32_t LV2_URID

URI mapped to an integer.