#[macro_export]
macro_rules! register_apo {
($t:ty) => {
#[doc(hidden)]
fn __tympan_apo_create() -> ::std::sync::Arc<dyn $crate::instance::AnyApoInstance> {
::std::sync::Arc::new($crate::instance::ApoInstance::<$t>::new())
}
#[doc(hidden)]
pub static __TYMPAN_APO_VTABLE: $crate::raw::class_factory::ApoVTable =
$crate::raw::class_factory::ApoVTable {
clsid: <$t as $crate::ProcessingObject>::CLSID,
name: <$t as $crate::ProcessingObject>::NAME,
copyright: <$t as $crate::ProcessingObject>::COPYRIGHT,
category: <$t as $crate::ProcessingObject>::CATEGORY,
create: __tympan_apo_create,
};
#[doc(hidden)]
static __TYMPAN_APO_REGISTRY: [&'static $crate::raw::class_factory::ApoVTable; 1] =
[&__TYMPAN_APO_VTABLE];
#[no_mangle]
pub unsafe extern "system" fn DllGetClassObject(
rclsid: *const $crate::GUID,
riid: *const $crate::GUID,
ppv: *mut *mut ::core::ffi::c_void,
) -> $crate::HRESULT {
unsafe {
$crate::raw::exports::dll_get_class_object_dispatch(
rclsid,
riid,
ppv,
&__TYMPAN_APO_REGISTRY,
)
}
}
#[no_mangle]
pub unsafe extern "system" fn DllCanUnloadNow() -> $crate::HRESULT {
$crate::raw::exports::dll_can_unload_now_dispatch()
}
#[no_mangle]
pub unsafe extern "system" fn DllRegisterServer() -> $crate::HRESULT {
$crate::raw::exports::dll_register_server_dispatch(&__TYMPAN_APO_REGISTRY)
}
#[no_mangle]
pub unsafe extern "system" fn DllUnregisterServer() -> $crate::HRESULT {
$crate::raw::exports::dll_unregister_server_dispatch(&__TYMPAN_APO_REGISTRY)
}
};
}
#[cfg(feature = "aec")]
#[macro_export]
macro_rules! register_aec_apo {
($t:ty) => {
#[doc(hidden)]
fn __tympan_aec_apo_create() -> ::std::sync::Arc<dyn $crate::aec::AnyAecApoInstance> {
::std::sync::Arc::new($crate::aec::AecApoInstance::<$t>::new())
}
#[doc(hidden)]
pub static __TYMPAN_AEC_APO_VTABLE: $crate::aec::class_factory::AecApoVTable =
$crate::aec::class_factory::AecApoVTable {
clsid: <$t as $crate::ProcessingObject>::CLSID,
name: <$t as $crate::ProcessingObject>::NAME,
copyright: <$t as $crate::ProcessingObject>::COPYRIGHT,
category: <$t as $crate::ProcessingObject>::CATEGORY,
create: __tympan_aec_apo_create,
};
#[doc(hidden)]
static __TYMPAN_AEC_APO_REGISTRY: [&'static $crate::aec::class_factory::AecApoVTable; 1] =
[&__TYMPAN_AEC_APO_VTABLE];
#[no_mangle]
pub unsafe extern "system" fn DllGetClassObject(
rclsid: *const $crate::GUID,
riid: *const $crate::GUID,
ppv: *mut *mut ::core::ffi::c_void,
) -> $crate::HRESULT {
unsafe {
$crate::aec::exports::aec_dll_get_class_object_dispatch(
rclsid,
riid,
ppv,
&__TYMPAN_AEC_APO_REGISTRY,
)
}
}
#[no_mangle]
pub unsafe extern "system" fn DllCanUnloadNow() -> $crate::HRESULT {
$crate::raw::exports::dll_can_unload_now_dispatch()
}
#[no_mangle]
pub unsafe extern "system" fn DllRegisterServer() -> $crate::HRESULT {
$crate::aec::exports::aec_dll_register_server_dispatch(&__TYMPAN_AEC_APO_REGISTRY)
}
#[no_mangle]
pub unsafe extern "system" fn DllUnregisterServer() -> $crate::HRESULT {
$crate::aec::exports::aec_dll_unregister_server_dispatch(&__TYMPAN_AEC_APO_REGISTRY)
}
};
}