use crate::dynamic_data::{EmptyScriptResolver, ScriptResolver}; use crate::ffi::IdentifiablePointer; #[no_mangle] extern "C" fn empty_script_resolver_new() -> IdentifiablePointer> { let v: Box = Box::new(EmptyScriptResolver { identifier: Default::default(), }); let id = v.value_identifier(); let ptr = Box::into_raw(Box::new(v)); IdentifiablePointer::new(ptr, id) } #[cfg(feature = "wasm")] mod web_assembly_script_resolver { use crate::dynamic_data::ScriptResolver; use crate::ffi::{ExternPointer, IdentifiablePointer}; use crate::script_implementations::wasm::script_resolver::WebAssemblyScriptResolver; #[no_mangle] extern "C" fn webassembly_script_resolver_new() -> IdentifiablePointer> { let v: Box = WebAssemblyScriptResolver::new(); let id = v.value_identifier(); let ptr = Box::into_raw(Box::new(v)); IdentifiablePointer::new(ptr, id) } #[no_mangle] extern "C" fn webassembly_script_resolver_load_wasm_from_bytes( ptr: ExternPointer>, arr: *const u8, len: usize, ) { unsafe { ptr.as_mut().load_wasm_from_bytes(std::slice::from_raw_parts(arr, len)) } } #[no_mangle] extern "C" fn webassembly_script_resolver_finalize(ptr: ExternPointer>) { ptr.as_mut().finalize(); } }