Crate lv2rs_urid

Source
Expand description

A Rust re-implementation of the LV2 URID library.

This LV2 feature enables you to map URIs to numbers and reverse.

This is a frozen prototype and therefore, development of this crate will not continue here. Further development continues as rust-lv2.

§Use

URID mapping is only possible in the instantiate function of a plugin since there is no guarantee that the required pointers live longer than the instantiate function call. Here is an example:

// import the required crates.
extern crate lv2rs_core as core;
extern crate lv2rs_urid as urid;
use std::ffi::CStr;
 
// A dummy plugin that doesn't actually do anything.
struct UridPlugin {}

impl core::Plugin for UridPlugin {
    fn instantiate(
        descriptor: &core::Descriptor,
        rate: f64,
        bundle_path: &CStr,
        features: Option<&core::FeaturesList>
    ) -> Option<Self> where Self: Sized {

        // Return `None` if there are no features.
        let features = features?;

        // Try to get the mapper and the un-mapper from the features list.
        let map = urid::Map::try_from_features(features)?;
        let unmap = urid::Unmap::try_from_features(features)?;

        // Create a URI, map it, and un-map it.
        let github_uri = CStr::from_bytes_with_nul(b"https://github.com\0").unwrap();
        let github_urid = map.map(github_uri);
        let github_uri = unmap.unmap(github_urid);

        Some(Self {})
    }

    // Blank implementations to keep the compiler quiet.
    fn connect_port(&mut self, _port: u32, _data: *mut ()) {}
    fn run(&mut self, _n_samples: u32) {}
}

Modules§

debug
Placeholder URID mapper for debugging purposes.
uris

Structs§

CachedMap
Cached version of Map
CachedUnmap
Cached version of Unmap
Map
Struct for mapping URIs to URIDs.
Unmap
Struct for mapping URIDs to URIs.

Type Aliases§

MapHandle
Type to describe pointers to map handles.
URID
Type for describing URIDs.
UnmapHandle
Type to describe pointers to unmap handles.