Path: blob/main/crates/c-api/src/component/instance.rs
1692 views
use wasmtime::component::{Func, Instance};12use crate::WasmtimeStoreContextMut;34use super::wasmtime_component_export_index_t;56#[unsafe(no_mangle)]7pub unsafe extern "C" fn wasmtime_component_instance_get_export_index(8instance: &Instance,9context: WasmtimeStoreContextMut<'_>,10instance_export_index: *const wasmtime_component_export_index_t,11name: *const u8,12name_len: usize,13) -> Option<Box<wasmtime_component_export_index_t>> {14let name = unsafe { std::slice::from_raw_parts(name, name_len) };15let Ok(name) = std::str::from_utf8(name) else {16return None;17};1819let instance_export_index = if instance_export_index.is_null() {20None21} else {22Some((*instance_export_index).export_index)23};2425instance26.get_export_index(context, instance_export_index.as_ref(), &name)27.map(|export_index| Box::new(wasmtime_component_export_index_t { export_index }))28}2930#[unsafe(no_mangle)]31pub unsafe extern "C" fn wasmtime_component_instance_get_func(32instance: &Instance,33context: WasmtimeStoreContextMut<'_>,34export_index: &wasmtime_component_export_index_t,35func_out: &mut Func,36) -> bool {37if let Some(func) = instance.get_func(context, export_index.export_index) {38*func_out = func;39true40} else {41false42}43}444546