wasmtime_c_api/component/types/
module.rs1use crate::{CExternType, wasm_engine_t, wasm_exporttype_t, wasm_importtype_t};
2use wasmtime::component::types::Module;
3
4type_wrapper! {
5 pub struct wasmtime_module_type_t {
6 pub(crate) ty: Module,
7 }
8
9 clone: wasmtime_module_type_clone,
10 delete: wasmtime_module_type_delete,
11}
12
13#[unsafe(no_mangle)]
14pub extern "C" fn wasmtime_module_type_import_count(
15 ty: &wasmtime_module_type_t,
16 engine: &wasm_engine_t,
17) -> usize {
18 ty.ty.imports(&engine.engine).len()
19}
20
21#[unsafe(no_mangle)]
22pub extern "C" fn wasmtime_module_type_import_nth<'a>(
23 ty: &'a wasmtime_module_type_t,
24 engine: &wasm_engine_t,
25 nth: usize,
26) -> Option<Box<wasm_importtype_t>> {
27 let ((module, field), item) = ty.ty.imports(&engine.engine).nth(nth)?;
28 Some(Box::new(wasm_importtype_t::new(
29 module.to_string(),
30 field.to_string(),
31 CExternType::new(item),
32 )))
33}
34
35#[unsafe(no_mangle)]
36pub extern "C" fn wasmtime_module_type_export_count(
37 ty: &wasmtime_module_type_t,
38 engine: &wasm_engine_t,
39) -> usize {
40 ty.ty.exports(&engine.engine).len()
41}
42
43#[unsafe(no_mangle)]
44pub extern "C" fn wasmtime_module_type_export_nth<'a>(
45 ty: &'a wasmtime_module_type_t,
46 engine: &wasm_engine_t,
47 nth: usize,
48) -> Option<Box<wasm_exporttype_t>> {
49 let (name, item) = ty.ty.exports(&engine.engine).nth(nth)?;
50 Some(Box::new(wasm_exporttype_t::new(
51 name.to_string(),
52 CExternType::new(item),
53 )))
54}