callback
Cross-module function call bindings Allows passing function references between WASM modules via the host. The host stores (exec_env, table_index) pairs and invokes them on demand.
- AssemblyScript
- Zig
- Rust
- TinyGo
- C
- C++
// @ts-ignore
@external("callback", "callback_register")
export declare function callbackRegister(tableIdx: u32): u32;
// @ts-ignore
@external("callback", "callback_invoke")
export declare function callbackInvoke(handle: u32, argsPtr: u32, nArgs: u32): u32;
// @ts-ignore
@external("callback", "callback_unregister")
export declare function callbackUnregister(handle: u32): void;
pub extern "callback" fn callback_register(table_idx: u32) u32;
pub extern "callback" fn callback_invoke(handle: u32, args_ptr: u32, n_args: u32) u32;
pub extern "callback" fn callback_unregister(handle: u32) void;
#[link(wasm_import_module = "callback")]
extern "C" {
#[link_name = "callback_register"]
fn unsafe_callback_register(table_idx: u32) -> u32;
#[link_name = "callback_invoke"]
fn unsafe_callback_invoke(handle: u32, args_ptr: u32, n_args: u32) -> u32;
#[link_name = "callback_unregister"]
fn unsafe_callback_unregister(handle: u32);
}
pub fn callback_register(table_idx: u32) -> u32 {
unsafe {
return unsafe_callback_register(table_idx);
}
}
pub fn callback_invoke(handle: u32, args_ptr: u32, n_args: u32) -> u32 {
unsafe {
return unsafe_callback_invoke(handle, args_ptr, n_args);
}
}
pub fn callback_unregister(handle: u32) {
unsafe {
unsafe_callback_unregister(handle);
}
}
package callback
//go:wasmimport callback callback_register
func CallbackRegister(TableIdx uint32) uint32;
//go:wasmimport callback callback_invoke
func CallbackInvoke(Handle uint32, ArgsPtr uint32, NArgs uint32) uint32;
//go:wasmimport callback callback_unregister
func CallbackUnregister(Handle uint32);
__attribute__((import_module("callback")))
__attribute__((import_name("callback_register")))
extern unsigned int callback_register(unsigned int table_idx);
__attribute__((import_module("callback")))
__attribute__((import_name("callback_invoke")))
extern unsigned int callback_invoke(unsigned int handle, unsigned int args_ptr, unsigned int n_args);
__attribute__((import_module("callback")))
__attribute__((import_name("callback_unregister")))
extern void callback_unregister(unsigned int handle);
extern "C" {
__attribute__((import_module("callback")))
__attribute__((import_name("callback_register")))
extern unsigned int callback_register(unsigned int table_idx);
__attribute__((import_module("callback")))
__attribute__((import_name("callback_invoke")))
extern unsigned int callback_invoke(unsigned int handle, unsigned int args_ptr, unsigned int n_args);
__attribute__((import_module("callback")))
__attribute__((import_name("callback_unregister")))
extern void callback_unregister(unsigned int handle);
}