#[macro_export]
macro_rules! register_kernels {
($name:expr, $kernel_ty:ty, $(($kname:expr, $func:expr, $supported:expr, $prio:expr)),+ $(,)?) => {{
let mut reg = $crate::plugin::PluginRegistry::<$kernel_ty>::new();
$(
reg.register($kname, $func, $supported, $prio);
)+
$crate::plugin::register_plugin_registry(reg);
}};
}
#[macro_export]
macro_rules! plugin_impl {
($plugin_name:ident, $kernel_ty:ty, $(($kname:expr, $func:expr, $supported:expr, $prio:expr)),+ $(,)?) => {
struct $plugin_name;
impl $crate::plugin::KernelPlugin<$kernel_ty> for $plugin_name {
fn register(&self, registry: &mut $crate::plugin::PluginRegistry<$kernel_ty>) {
$(
registry.register($kname, $func, $supported, $prio);
)+
}
}
$crate::register_kernels!(stringify!($plugin_name), $kernel_ty,
$(($kname, $func, $supported, $prio)),+
);
};
}