gary-core 0.0.1

core components shared by all things gary
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
pub mod runtime;

#[macro_export]
macro_rules! declare_plugin {
    ($plugin_type:ty, $constructor:path) => {
        #[no_mangle]
        pub extern "C" fn _plugin_create() -> *mut $crate::plugins::runtime::RuntimePlugin {
            // make sure the constructor is the correct type.
            let constructor: fn() -> $plugin_type = $constructor;

            let object = constructor();
            let boxed: Box<$crate::plugins::runtime::RuntimePlugin> = Box::new(object);
            Box::into_raw(boxed)
        }
    };
}