Skip to content

Commit

Permalink
feat(c-api) Implement wasm_module_name and wasm_module_set_name.
Browse files Browse the repository at this point in the history
I submited a proposal to the official `wasm.h` by the way,
WebAssembly/wasm-c-api#157. For the moment,
let's keep that as a vendor specific implementation.
  • Loading branch information
Hywan committed Oct 12, 2020
1 parent bb9149b commit 750a1c3
Showing 1 changed file with 27 additions and 1 deletion.
28 changes: 27 additions & 1 deletion lib/c-api/src/wasm_c_api/wasmer.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,35 @@
//! Wasmer-specific extensions to the Wasm C API.
use crate::wasm_c_api::instance::wasm_instance_t;
use super::instance::wasm_instance_t;
use super::module::wasm_module_t;
use super::types::wasm_name_t;
use std::ffi::c_void;
use std::str;

#[no_mangle]
pub unsafe extern "C" fn wasm_instance_get_vmctx_ptr(instance: &wasm_instance_t) -> *mut c_void {
instance.inner.vmctx_ptr() as _
}

#[no_mangle]
pub unsafe extern "C" fn wasm_module_name(module: &wasm_module_t, out: &mut wasm_name_t) {
let name = match module.inner.name() {
Some(name) => name,
None => return,
};

*out = name.as_bytes().to_vec().into();
}

#[no_mangle]
pub unsafe extern "C" fn wasm_module_set_name(module: &wasm_module_t, name: &wasm_name_t) -> bool {
let name = match name.into_slice() {
Some(name) => match str::from_utf8(name) {
Ok(name) => name,
Err(_) => return false, // not ideal!
},
None => return false,
};

module.inner.set_name(name)
}

0 comments on commit 750a1c3

Please sign in to comment.