Data Structures | Macros | Typedefs
URID

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
 
LV2_URID(* map )(LV2_URID_Map_Handle handle, const char *uri)
 

Field Documentation

◆ handle

LV2_URID_Map_Handle LV2_URID_Map::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.

◆ map

LV2_URID(* LV2_URID_Map::map) (LV2_URID_Map_Handle handle, const char *uri)

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
handleMust be the callback_data member of this struct.
uriThe 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
 
const char *(* unmap )(LV2_URID_Unmap_Handle handle, LV2_URID urid)
 

Field Documentation

◆ handle

LV2_URID_Unmap_Handle LV2_URID_Unmap::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.

◆ unmap

const char *(* LV2_URID_Unmap::unmap) (LV2_URID_Unmap_Handle handle, LV2_URID urid)

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
handleMust be the callback_data member of this struct.
uridThe 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"

◆ LV2_URID_PREFIX

#define LV2_URID_PREFIX   LV2_URID_URI "#"

◆ LV2_URID__map

#define LV2_URID__map   LV2_URID_PREFIX "map"

◆ LV2_URID__unmap

#define LV2_URID__unmap   LV2_URID_PREFIX "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.