clap-sys 0.5.0

Rust bindings for the CLAP audio plugin API
Documentation
use crate::{cstr, timestamp::*, universal_plugin_id::*, version::*};

use std::ffi::{c_char, c_void, CStr};

pub const CLAP_PRESET_DISCOVERY_FACTORY_ID: &CStr = cstr!("clap.preset-discovery-factory/2");
pub const CLAP_PRESET_DISCOVERY_FACTORY_ID_COMPAT: &CStr =
    cstr!("clap.preset-discovery-factory/draft-2");

pub const CLAP_PRESET_DISCOVERY_LOCATION_FILE: clap_preset_discovery_location_kind = 0;
pub const CLAP_PRESET_DISCOVERY_LOCATION_PLUGIN: clap_preset_discovery_location_kind = 1;

pub type clap_preset_discovery_location_kind = u32;

pub const CLAP_PRESET_DISCOVERY_IS_FACTORY_CONTENT: u32 = 1 << 0;
pub const CLAP_PRESET_DISCOVERY_IS_USER_CONTENT: u32 = 1 << 1;
pub const CLAP_PRESET_DISCOVERY_IS_DEMO_CONTENT: u32 = 1 << 2;
pub const CLAP_PRESET_DISCOVERY_IS_FAVORITE: u32 = 1 << 3;

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_preset_discovery_metadata_receiver {
    pub receiver_data: *mut c_void,
    pub on_error: Option<
        unsafe extern "C" fn(
            receiver: *const clap_preset_discovery_metadata_receiver,
            os_error: i32,
            error_message: *const c_char,
        ),
    >,
    pub begin_preset: Option<
        unsafe extern "C" fn(
            receiver: *const clap_preset_discovery_metadata_receiver,
            name: *const c_char,
            load_key: *const c_char,
        ) -> bool,
    >,
    pub add_plugin_id: Option<
        unsafe extern "C" fn(
            receiver: *const clap_preset_discovery_metadata_receiver,
            plugin_id: *const clap_universal_plugin_id,
        ),
    >,
    pub set_soundpack_id: Option<
        unsafe extern "C" fn(
            receiver: *const clap_preset_discovery_metadata_receiver,
            soundpack_id: *const c_char,
        ),
    >,
    pub set_flags: Option<
        unsafe extern "C" fn(receiver: *const clap_preset_discovery_metadata_receiver, flags: u32),
    >,
    pub add_creator: Option<
        unsafe extern "C" fn(
            receiver: *const clap_preset_discovery_metadata_receiver,
            creator: *const c_char,
        ),
    >,
    pub set_description: Option<
        unsafe extern "C" fn(
            receiver: *const clap_preset_discovery_metadata_receiver,
            description: *const c_char,
        ),
    >,
    pub set_timestamps: Option<
        unsafe extern "C" fn(
            receiver: *const clap_preset_discovery_metadata_receiver,
            creation_time: clap_timestamp,
            modification_time: clap_timestamp,
        ),
    >,
    pub add_feature: Option<
        unsafe extern "C" fn(
            receiver: *const clap_preset_discovery_metadata_receiver,
            feature: *const c_char,
        ),
    >,
    pub add_extra_info: Option<
        unsafe extern "C" fn(
            receiver: *const clap_preset_discovery_metadata_receiver,
            key: *const c_char,
            value: *const c_char,
        ),
    >,
}

unsafe impl Send for clap_preset_discovery_metadata_receiver {}
unsafe impl Sync for clap_preset_discovery_metadata_receiver {}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_preset_discovery_filetype {
    pub name: *const c_char,
    pub description: *const c_char,
    pub file_extension: *const c_char,
}

unsafe impl Send for clap_preset_discovery_filetype {}
unsafe impl Sync for clap_preset_discovery_filetype {}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_preset_discovery_location {
    pub flags: u32,
    pub name: *const c_char,
    pub kind: clap_preset_discovery_location_kind,
    pub location: *const c_char,
}

unsafe impl Send for clap_preset_discovery_location {}
unsafe impl Sync for clap_preset_discovery_location {}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_preset_discovery_soundpack {
    pub flags: u32,
    pub id: *const c_char,
    pub name: *const c_char,
    pub description: *const c_char,
    pub homepage_url: *const c_char,
    pub vendor: *const c_char,
    pub image_path: *const c_char,
    pub release_timestamp: clap_timestamp,
}

unsafe impl Send for clap_preset_discovery_soundpack {}
unsafe impl Sync for clap_preset_discovery_soundpack {}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_preset_discovery_provider_descriptor {
    pub clap_version: clap_version,
    pub id: *const c_char,
    pub name: *const c_char,
    pub vendor: *const c_char,
}

unsafe impl Send for clap_preset_discovery_provider_descriptor {}
unsafe impl Sync for clap_preset_discovery_provider_descriptor {}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_preset_discovery_provider {
    pub desc: *const clap_preset_discovery_provider_descriptor,
    pub provider_data: *mut c_void,
    pub init: Option<unsafe extern "C" fn(provider: *const clap_preset_discovery_provider) -> bool>,
    pub destroy: Option<unsafe extern "C" fn(provider: *const clap_preset_discovery_provider)>,
    pub get_metadata: Option<
        unsafe extern "C" fn(
            provider: *const clap_preset_discovery_provider,
            location_kind: clap_preset_discovery_location_kind,
            location: *const c_char,
            metadata_receiver: *const clap_preset_discovery_metadata_receiver,
        ) -> bool,
    >,
    pub get_extension: Option<
        unsafe extern "C" fn(
            provider: *const clap_preset_discovery_provider,
            extension_id: *const c_char,
        ) -> *const c_void,
    >,
}

unsafe impl Send for clap_preset_discovery_provider {}
unsafe impl Sync for clap_preset_discovery_provider {}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_preset_discovery_indexer {
    pub clap_version: clap_version,
    pub name: *const c_char,
    pub vendor: *const c_char,
    pub url: *const c_char,
    pub version: *const c_char,
    pub indexer_data: *mut c_void,
    pub declare_filetype: Option<
        unsafe extern "C" fn(
            indexer: *const clap_preset_discovery_indexer,
            filetype: *const clap_preset_discovery_filetype,
        ) -> bool,
    >,
    pub declare_location: Option<
        unsafe extern "C" fn(
            indexer: *const clap_preset_discovery_indexer,
            location: *const clap_preset_discovery_location,
        ) -> bool,
    >,
    pub declare_soundpack: Option<
        unsafe extern "C" fn(
            indexer: *const clap_preset_discovery_indexer,
            soundpack: *const clap_preset_discovery_soundpack,
        ) -> bool,
    >,
    pub get_extension: Option<
        unsafe extern "C" fn(
            indexer: *const clap_preset_discovery_indexer,
            extension_id: *const c_char,
        ) -> *const c_void,
    >,
}

unsafe impl Send for clap_preset_discovery_indexer {}
unsafe impl Sync for clap_preset_discovery_indexer {}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_preset_discovery_factory {
    pub count: Option<unsafe extern "C" fn(factory: *const clap_preset_discovery_factory) -> u32>,
    pub get_descriptor: Option<
        unsafe extern "C" fn(
            factory: *const clap_preset_discovery_factory,
            index: u32,
        ) -> *const clap_preset_discovery_provider_descriptor,
    >,
    pub create: Option<
        unsafe extern "C" fn(
            factory: *const clap_preset_discovery_factory,
            indexer: *const clap_preset_discovery_indexer,
            provider_id: *const c_char,
        ) -> *const clap_preset_discovery_provider,
    >,
}