1#[macro_export]
2macro_rules! impl_plugin {
3 ($plugin:ty, $proxy:ident, [$($evt:ty => $pri:expr),*]) => {
4 impl $crate::plugin::Plugin for $plugin {
5 fn get_proxy(&mut self) -> &mut $crate::plugin::PluginProxy {
6 &mut self.$proxy
7 }
8 }
9
10 #[allow(unused_variables)]
11 impl $crate::plugin::PluginInit for $plugin {
12 fn init( dispatcher: &mut $crate::event::Dispatcher
13 , me: ::std::sync::Arc<Box<$crate::plugin::Plugin>>) {
14 $(
15 dispatcher.register($pri, unsafe {
16 $crate::event::EventProxy::new::<$plugin>(me.clone())
17 });
18 )*
19 }
20 }
21 };
22
23 ($plugin:ty, $proxy:ident, [$($evt:ty => $pri:expr),*,]) => {
24 impl_plugin!($plugin, $proxy, [$($evt => $pri),*]);
25 };
26}