Skip to main content

pipa/object/
native.rs

1use crate::runtime::context::JSContext;
2use crate::value::JSValue;
3
4pub type NativeFunc = fn(&mut JSContext, &[JSValue]) -> JSValue;
5
6pub struct NativeFunction {
7    pub func: NativeFunc,
8    pub name: &'static str,
9    pub arity: u32,
10}
11
12impl NativeFunction {
13    pub fn new(name: &'static str, arity: u32, func: NativeFunc) -> Self {
14        NativeFunction { name, arity, func }
15    }
16
17    pub fn call(&self, ctx: &mut JSContext, args: &[JSValue]) -> JSValue {
18        (self.func)(ctx, args)
19    }
20}