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§
Structs§
- Cached
Map - Cached version of Map
- Cached
Unmap - 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.
- Unmap
Handle - Type to describe pointers to unmap handles.