Skip to main content

aiway_plugin/
macros.rs

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}