Skip to main content

clap_sys/factory/draft/
plugin_state_converter.rs

1use std::ffi::{c_char, c_void, CStr};
2
3use crate::{
4    cstr,
5    id::clap_id,
6    stream::{clap_istream, clap_ostream},
7    universal_plugin_id::clap_universal_plugin_id,
8    version::clap_version,
9};
10
11pub const CLAP_PLUGIN_STATE_CONVERTER_FACTORY_ID: &CStr =
12    cstr!("clap.plugin-state-converter-factory/1");
13
14#[repr(C)]
15#[derive(Debug, Copy, Clone)]
16pub struct clap_plugin_state_converter_descriptor {
17    pub clap_version: clap_version,
18    pub src_plugin_id: clap_universal_plugin_id,
19    pub dst_plugin_id: clap_universal_plugin_id,
20    pub id: *const c_char,
21    pub name: *const c_char,
22    pub vendor: *const c_char,
23    pub version: *const c_char,
24    pub description: *const c_char,
25}
26
27unsafe impl Send for clap_plugin_state_converter_descriptor {}
28unsafe impl Sync for clap_plugin_state_converter_descriptor {}
29
30#[repr(C)]
31#[derive(Debug, Copy, Clone)]
32pub struct clap_plugin_state_converter {
33    pub desc: *const clap_plugin_state_converter_descriptor,
34    pub converter_data: *mut c_void,
35    pub destroy: Option<unsafe extern "C" fn(converter: *mut clap_plugin_state_converter)>,
36    pub convert_state: Option<
37        unsafe extern "C" fn(
38            converter: *mut clap_plugin_state_converter,
39            src: *const clap_istream,
40            dst: *const clap_ostream,
41            error_buffer: *mut c_char,
42            error_buffer_size: usize,
43        ) -> bool,
44    >,
45    pub convert_normalized_value: Option<
46        unsafe extern "C" fn(
47            converter: *mut clap_plugin_state_converter,
48            src_param_id: clap_id,
49            src_normalized_value: f64,
50            dst_param_id: *mut clap_id,
51            dst_normalized_value: *mut f64,
52        ) -> bool,
53    >,
54    pub convert_plain_value: Option<
55        unsafe extern "C" fn(
56            converter: *mut clap_plugin_state_converter,
57            src_param_id: clap_id,
58            src_plain_value: f64,
59            dst_param_id: *mut clap_id,
60            dst_plain_value: *mut f64,
61        ) -> bool,
62    >,
63}
64
65unsafe impl Send for clap_plugin_state_converter {}
66unsafe impl Sync for clap_plugin_state_converter {}
67
68#[repr(C)]
69#[derive(Debug, Copy, Clone)]
70pub struct clap_plugin_state_converter_factory {
71    pub count:
72        Option<unsafe extern "C" fn(factory: *const clap_plugin_state_converter_factory) -> u32>,
73    pub get_descriptor: Option<
74        unsafe extern "C" fn(
75            factory: *const clap_plugin_state_converter_factory,
76            index: u32,
77        ) -> *const clap_plugin_state_converter_descriptor,
78    >,
79    pub create: Option<
80        unsafe extern "C" fn(
81            factory: *const clap_plugin_state_converter_factory,
82            converter_id: *const c_char,
83        ) -> *mut clap_plugin_state_converter,
84    >,
85}