LV2: Dynamic Manifest

# LV2

An open and extensible audio plugin standard

Version | 1.18.10

Macros | Typedefs | Functions
Dynamic Manifest
LV2

## Detailed Description

Support for dynamic data generation.

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

## Macros
#define | LV2_DYN_MANIFEST_URI "http://lv2plug.in/ns/ext/dynmanifest"
#define | LV2_DYN_MANIFEST_PREFIX LV2_DYN_MANIFEST_URI "#"

## Typedefs
typedef void * | LV2_Dyn_Manifest_Handle

## Functions
int | lv2_dyn_manifest_open (LV2_Dyn_Manifest_Handle *handle, const LV2_Feature *const *features)
int | lv2_dyn_manifest_get_subjects (LV2_Dyn_Manifest_Handle handle, FILE *fp)
int | lv2_dyn_manifest_get_data (LV2_Dyn_Manifest_Handle handle, FILE *fp, const char *uri)
void | lv2_dyn_manifest_close (LV2_Dyn_Manifest_Handle handle)

## Macro Definition Documentation

## ◆ LV2_DYN_MANIFEST_URI

#define LV2_DYN_MANIFEST_URI "http://lv2plug.in/ns/ext/dynmanifest"

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

## ◆ LV2_DYN_MANIFEST_PREFIX

#define LV2_DYN_MANIFEST_PREFIX LV2_DYN_MANIFEST_URI "#"

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

## Typedef Documentation

## ◆ LV2_Dyn_Manifest_Handle

typedef void* LV2_Dyn_Manifest_Handle

Dynamic manifest generator handle.

This handle indicates a particular status of a dynamic manifest generator. The host MUST NOT attempt to interpret it and, unlikely LV2_Handle, it is NOT even valid to compare this to NULL. The dynamic manifest generator MAY use it to reference internal data.

## Function Documentation

## ◆ lv2_dyn_manifest_open()

int lv2_dyn_manifest_open | ( | LV2_Dyn_Manifest_Handle * | handle,
|  | const LV2_Feature *const * | features )

Generate the dynamic manifest.

Parameters

  handle | Pointer to an uninitialized dynamic manifest generator handle.
  features | NULL terminated array of LV2_Feature structs which represent the features the host supports. The dynamic manifest generator may refuse to (re)generate the dynamic manifest if required features are not found here (however hosts SHOULD NOT use this as a discovery mechanism, instead of reading the static manifest file). This array must always exist; if a host has no features, it MUST pass a single element array containing NULL.

Returns
  0 on success, otherwise a non-zero error code. The host SHOULD evaluate the result of the operation by examining the returned value and MUST NOT try to interpret the value of handle.

## ◆ lv2_dyn_manifest_get_subjects()

int lv2_dyn_manifest_get_subjects | ( | LV2_Dyn_Manifest_Handle | handle,
|  | FILE * | fp )

Fetch a "list" of subject URIs described in the dynamic manifest.

The dynamic manifest generator has to fill the resource only with the needed triples to make the host aware of the "objects" it wants to expose. For example, if the plugin library exposes a regular LV2 plugin, it should output only a triple like the following:

http://example.org/plugin a lv2:Plugin .

The objects that are eligible for exposure are those that would need to be represented by a subject node in a static manifest.

Parameters

  handle | Dynamic manifest generator handle.
  fp | FILE * identifying the resource the host has to set up for the dynamic manifest generator. The host MUST pass a writable, empty resource to this function, and the dynamic manifest generator MUST ONLY perform write operations on it at the end of the stream (for example, using only fprintf(), fwrite() and similar).

Returns
  0 on success, otherwise a non-zero error code.

## ◆ lv2_dyn_manifest_get_data()

int lv2_dyn_manifest_get_data | ( | LV2_Dyn_Manifest_Handle | handle,
|  | FILE * | fp,
|  | const char * | uri )

Function that fetches data related to a specific URI.

The dynamic manifest generator has to fill the resource with data related to object represented by the given URI. For example, if the library exposes a regular LV2 plugin whose URI, as retrieved by the host using lv2_dyn_manifest_get_subjects() is http://example.org/plugin then it should output something like:

    http://example.org/plugin
        a lv2:Plugin ;
        doap:name "My Plugin" ;
        lv2:binary <mylib.so> ;
        etc:etc "..." .

Parameters

  handle | Dynamic manifest generator handle.
  fp | FILE * identifying the resource the host has to set up for the dynamic manifest generator. The host MUST pass a writable resource to this function, and the dynamic manifest generator MUST ONLY perform write operations on it at the current position of the stream (for example, using only fprintf(), fwrite() and similar).
  uri | URI to get data about (in the "plain" form, i.e., absolute URI without Turtle prefixes).

Returns
  0 on success, otherwise a non-zero error code.

## ◆ lv2_dyn_manifest_close()

void lv2_dyn_manifest_close | ( | LV2_Dyn_Manifest_Handle | handle | ) |

Function that ends the operations on the dynamic manifest generator.

This function SHOULD be used by the dynamic manifest generator to perform cleanup operations, etc.

Once this function is called, referring to handle will cause undefined behavior.

Parameters

  handle | Dynamic manifest generator handle.