summaryrefslogtreecommitdiff
path: root/core/plugins.rs
blob: 53a2e706fe781aa390b322425cefdb0f17621a89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use crate::isolate::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)
    }
  };
}