#[cfg(not(feature = "std"))]
use crate::wasmi as e;
#[cfg(feature = "std")]
use crate::wasmtime as e;
use crate::{builder::Builder, derive, Result, Value};
pub struct Instance<T>(e::Instance<T>);
impl<T> Instance<T> {
pub fn new(code: &[u8], builder: &Builder<T>, state: &mut T) -> Result<Self> {
Ok(Instance(<e::Instance<T> as derive::Instance<T>>::new(
code, builder, state,
)?))
}
pub fn invoke(&mut self, name: &str, args: &[Value], state: &mut T) -> Result<Value> {
derive::Instance::invoke(&mut self.0, name, args, state)
}
pub fn get_global_val(&self, name: &str) -> Option<Value> {
derive::Instance::get_global_val(&self.0, name)
}
}