clap_sys/factory/draft/
plugin_state_converter.rs1use 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}