diff options
Diffstat (limited to 'core/plugins.rs')
-rw-r--r-- | core/plugins.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/core/plugins.rs b/core/plugins.rs new file mode 100644 index 000000000..50271d53a --- /dev/null +++ b/core/plugins.rs @@ -0,0 +1,22 @@ +use crate::libdeno::PinnedBuf; +use crate::ops::CoreOp; + +pub type PluginInitFn = fn(context: &mut dyn PluginInitContext); + +pub trait PluginInitContext { + fn register_op( + &mut self, + name: &str, + op: Box<dyn Fn(&[u8], Option<PinnedBuf>) -> CoreOp + Send + Sync + 'static>, + ); +} + +#[macro_export] +macro_rules! init_fn { + ($fn:path) => { + #[no_mangle] + pub fn deno_plugin_init(context: &mut dyn PluginInitContext) { + $fn(context) + } + }; +} |