#[macro_export]
macro_rules! export_vst3 {
($config:expr, $plugin:ty, $presets:ty) => {
#[cfg(target_os = "windows")]
#[no_mangle]
extern "system" fn InitDll() -> bool {
true
}
#[cfg(target_os = "windows")]
#[no_mangle]
extern "system" fn ExitDll() -> bool {
true
}
#[cfg(target_os = "macos")]
#[no_mangle]
extern "system" fn bundleEntry(_bundle_ref: *mut std::ffi::c_void) -> bool {
true
}
#[cfg(target_os = "macos")]
#[no_mangle]
extern "system" fn bundleExit() -> bool {
true
}
#[no_mangle]
extern "system" fn GetPluginFactory() -> *mut std::ffi::c_void {
use $crate::vst3::ComWrapper;
use $crate::Factory;
let factory = Factory::<$crate::Vst3Processor<$plugin, $presets>>::new(&$config);
let wrapper = ComWrapper::new(factory);
wrapper
.to_com_ptr::<$crate::vst3::Steinberg::IPluginFactory>()
.unwrap()
.into_raw() as *mut std::ffi::c_void
}
};
($config:expr, $plugin:ty) => {
$crate::export_vst3!($config, $plugin, $crate::NoPresets<<$plugin as $crate::HasParameters>::Parameters>);
};
}