iree_embedded/
instance.rs1use crate::{Arena, Result, check};
4use iree_embedded_sys as sys;
5
6pub struct Instance {
8 raw: *mut sys::iree_vm_instance_t,
9}
10
11impl Instance {
12 pub fn new(arena: &Arena) -> Result<Self> {
14 let mut raw = core::ptr::null_mut();
15 unsafe {
17 check(sys::iree_vm_instance_create(
18 sys::IREE_VM_TYPE_CAPACITY_DEFAULT as sys::iree_host_size_t,
19 arena.as_iree_allocator(),
20 &mut raw,
21 ))?;
22 check(sys::iree_hal_module_register_all_types(raw))?;
24 }
25 Ok(Instance { raw })
26 }
27
28 pub(crate) fn raw(&self) -> *mut sys::iree_vm_instance_t {
29 self.raw
30 }
31}
32
33impl Drop for Instance {
34 fn drop(&mut self) {
35 unsafe { sys::iree_vm_instance_release(self.raw) };
37 }
38}