clap-sys 0.5.0

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

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

pub const CLAP_EXT_CONFIGURABLE_AUDIO_PORTS: &CStr = cstr!("clap.configurable-audio-ports/1");
pub const CLAP_EXT_CONFIGURABLE_AUDIO_PORTS_COMPAT: &CStr =
    cstr!("clap.configurable-audio-ports.draft1");

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_audio_port_configuration_request {
    pub is_input: bool,
    pub port_index: u32,
    pub channel_count: u32,
    pub port_type: *const c_char,
    pub port_details: *const c_void,
}

unsafe impl Send for clap_audio_port_configuration_request {}
unsafe impl Sync for clap_audio_port_configuration_request {}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct clap_plugin_configurable_audio_ports {
    pub can_apply_configuration: Option<
        unsafe extern "C" fn(
            plugin: *const clap_plugin,
            requests: *const clap_audio_port_configuration_request,
            request_count: u32,
        ) -> bool,
    >,
    pub apply_configuration: Option<
        unsafe extern "C" fn(
            plugin: *const clap_plugin,
            requests: *const clap_audio_port_configuration_request,
            request_count: u32,
        ) -> bool,
    >,
}