clap-sys 0.5.0

Rust bindings for the CLAP audio plugin API
Documentation
use std::ffi::{c_char, c_void, CStr};

use crate::{
    cstr,
    id::clap_id,
    stream::{clap_istream, clap_ostream},
    universal_plugin_id::clap_universal_plugin_id,
    version::clap_version,
};

pub const CLAP_PLUGIN_STATE_CONVERTER_FACTORY_ID: &CStr =
    cstr!("clap.plugin-state-converter-factory/1");

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_plugin_state_converter_descriptor {
    pub clap_version: clap_version,
    pub src_plugin_id: clap_universal_plugin_id,
    pub dst_plugin_id: clap_universal_plugin_id,
    pub id: *const c_char,
    pub name: *const c_char,
    pub vendor: *const c_char,
    pub version: *const c_char,
    pub description: *const c_char,
}

unsafe impl Send for clap_plugin_state_converter_descriptor {}
unsafe impl Sync for clap_plugin_state_converter_descriptor {}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_plugin_state_converter {
    pub desc: *const clap_plugin_state_converter_descriptor,
    pub converter_data: *mut c_void,
    pub destroy: Option<unsafe extern "C" fn(converter: *mut clap_plugin_state_converter)>,
    pub convert_state: Option<
        unsafe extern "C" fn(
            converter: *mut clap_plugin_state_converter,
            src: *const clap_istream,
            dst: *const clap_ostream,
            error_buffer: *mut c_char,
            error_buffer_size: usize,
        ) -> bool,
    >,
    pub convert_normalized_value: Option<
        unsafe extern "C" fn(
            converter: *mut clap_plugin_state_converter,
            src_param_id: clap_id,
            src_normalized_value: f64,
            dst_param_id: *mut clap_id,
            dst_normalized_value: *mut f64,
        ) -> bool,
    >,
    pub convert_plain_value: Option<
        unsafe extern "C" fn(
            converter: *mut clap_plugin_state_converter,
            src_param_id: clap_id,
            src_plain_value: f64,
            dst_param_id: *mut clap_id,
            dst_plain_value: *mut f64,
        ) -> bool,
    >,
}

unsafe impl Send for clap_plugin_state_converter {}
unsafe impl Sync for clap_plugin_state_converter {}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_plugin_state_converter_factory {
    pub count:
        Option<unsafe extern "C" fn(factory: *const clap_plugin_state_converter_factory) -> u32>,
    pub get_descriptor: Option<
        unsafe extern "C" fn(
            factory: *const clap_plugin_state_converter_factory,
            index: u32,
        ) -> *const clap_plugin_state_converter_descriptor,
    >,
    pub create: Option<
        unsafe extern "C" fn(
            factory: *const clap_plugin_state_converter_factory,
            converter_id: *const c_char,
        ) -> *mut clap_plugin_state_converter,
    >,
}