type spl_vm_val_t = u64; // usize #extern(vm) fn vm_new(): *any; #extern(vm) fn vm_drop(vm: *any): void; #extern(vm) fn vm_load(vm: *any, fpath: *u8): void; #extern(vm) fn vm_load_from_buffer(vm: *any, buf: *any, len: usize): i32; #extern(vm) fn vm_push(vm: *any, val: spl_vm_val_t): void; #extern(vm) fn vm_call(vm: *any, name: *u8, nargs: u64): i32; #extern(vm) fn vm_run(vm: *any): i32; #extern(vm) fn vm_ret_val(vm: *any): spl_vm_val_t; #extern(vm) fn vm_mem_alloc(vm: *any, size: usize): spl_vm_val_t; #extern(vm) fn vm_mem_read(vm: *any, off: spl_vm_val_t, dst: *any, n: usize): i32; #extern(vm) fn vm_mem_write(vm: *any, off: spl_vm_val_t, src: *any, n: usize): i32; #extern(vm) fn vm_stack_get(vm: *any, index: usize): spl_vm_val_t; #extern(vm) fn vm_set_foreign(vm: *any, entry: []u8, ctx: u64): i32; fn main() {}