aboutsummaryrefslogtreecommitdiff
path: root/crates/sloth_vm/src/native.rs
blob: fbd2626006c525a364972561238ab666c45a2de6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use crate::value::Primitive;
use crate::VM;

pub type NativeFunctionResult = Result<Primitive, Error>;
pub type NativeFunctionInput = fn(&mut VM, &[Primitive]) -> NativeFunctionResult;

pub enum Error {
    InvalidArgument,
    Unknown(String),
}

#[allow(clippy::type_complexity)]
pub struct NativeFunction {
    pub name: &'static str,
    pub function: NativeFunctionInput,
    pub arity: u8,
    pub returns_value: bool,
    pub doc: Option<&'static str>,
}