1use crate::vmcontext::{VMFunctionImport, VMGlobalImport, VMMemoryImport, VMTableImport};
5use wasmer_types::entity::{BoxedSlice, PrimaryMap};
6use wasmer_types::{FunctionIndex, GlobalIndex, MemoryIndex, TableIndex};
7
8#[derive(Clone)]
10pub struct Imports {
11 pub functions: BoxedSlice<FunctionIndex, VMFunctionImport>,
13
14 pub tables: BoxedSlice<TableIndex, VMTableImport>,
16
17 pub memories: BoxedSlice<MemoryIndex, VMMemoryImport>,
19
20 pub globals: BoxedSlice<GlobalIndex, VMGlobalImport>,
22}
23
24impl Imports {
25 pub fn new(
27 function_imports: PrimaryMap<FunctionIndex, VMFunctionImport>,
28 table_imports: PrimaryMap<TableIndex, VMTableImport>,
29 memory_imports: PrimaryMap<MemoryIndex, VMMemoryImport>,
30 global_imports: PrimaryMap<GlobalIndex, VMGlobalImport>,
31 ) -> Self {
32 Self {
33 functions: function_imports.into_boxed_slice(),
34 tables: table_imports.into_boxed_slice(),
35 memories: memory_imports.into_boxed_slice(),
36 globals: global_imports.into_boxed_slice(),
37 }
38 }
39
40 pub fn none() -> Self {
42 Self {
43 functions: PrimaryMap::new().into_boxed_slice(),
44 tables: PrimaryMap::new().into_boxed_slice(),
45 memories: PrimaryMap::new().into_boxed_slice(),
46 globals: PrimaryMap::new().into_boxed_slice(),
47 }
48 }
49}