1use crate::vmcontext::{VMFunctionImport, VMGlobalImport, VMMemoryImport, VMTableImport};
5use crate::VMTagImport;
6use wasmer_types::entity::{BoxedSlice, PrimaryMap};
7use wasmer_types::{FunctionIndex, GlobalIndex, MemoryIndex, TableIndex, TagIndex};
8
9#[derive(Clone)]
11pub struct Imports {
12 pub functions: BoxedSlice<FunctionIndex, VMFunctionImport>,
14
15 pub tables: BoxedSlice<TableIndex, VMTableImport>,
17
18 pub memories: BoxedSlice<MemoryIndex, VMMemoryImport>,
20
21 pub tags: BoxedSlice<TagIndex, VMTagImport>,
23
24 pub globals: BoxedSlice<GlobalIndex, VMGlobalImport>,
26}
27
28impl Imports {
29 pub fn new(
31 function_imports: PrimaryMap<FunctionIndex, VMFunctionImport>,
32 table_imports: PrimaryMap<TableIndex, VMTableImport>,
33 memory_imports: PrimaryMap<MemoryIndex, VMMemoryImport>,
34 tag_imports: PrimaryMap<TagIndex, VMTagImport>,
35 global_imports: PrimaryMap<GlobalIndex, VMGlobalImport>,
36 ) -> Self {
37 Self {
38 functions: function_imports.into_boxed_slice(),
39 tables: table_imports.into_boxed_slice(),
40 memories: memory_imports.into_boxed_slice(),
41 tags: tag_imports.into_boxed_slice(),
42 globals: global_imports.into_boxed_slice(),
43 }
44 }
45
46 pub fn none() -> Self {
48 Self {
49 functions: PrimaryMap::new().into_boxed_slice(),
50 tables: PrimaryMap::new().into_boxed_slice(),
51 memories: PrimaryMap::new().into_boxed_slice(),
52 globals: PrimaryMap::new().into_boxed_slice(),
53 tags: PrimaryMap::new().into_boxed_slice(),
54 }
55 }
56}