1
2#[macro_export]
3macro_rules! export {
4 ($plugin_type:ty) => {
5 #[unsafe(no_mangle)]
6 pub extern "C" fn create_plugin() -> *mut dyn aiway_plugin::Plugin {
7 let plugin = Box::new(<$plugin_type>::new());
8 Box::into_raw(plugin)
9 }
10
11 #[unsafe(no_mangle)]
12 pub extern "C" fn destroy_plugin(plugin: *mut dyn aiway_plugin::Plugin) {
13 if !plugin.is_null() {
14 unsafe {
15 let _ = Box::from_raw(plugin as *mut $plugin_type);
16 }
17 }
18 }
19 };
20}
21
22#[macro_export]
23macro_rules! plugin_version {
24 () => {
25 Version::new(
26 env!("CARGO_PKG_VERSION_MAJOR").parse().unwrap(),
27 env!("CARGO_PKG_VERSION_MINOR").parse().unwrap(),
28 env!("CARGO_PKG_VERSION_PATCH").parse().unwrap(),
29 )
30 };
31}