pub trait WasmModuleResources {
Show 17 methods // Required methods fn table_at(&self, at: u32) -> Option<TableType>; fn memory_at(&self, at: u32) -> Option<MemoryType>; fn tag_at(&self, at: u32) -> Option<&FuncType>; fn global_at(&self, at: u32) -> Option<GlobalType>; fn sub_type_at(&self, type_index: u32) -> Option<&SubType>; fn type_id_of_function(&self, func_idx: u32) -> Option<CoreTypeId>; fn type_index_of_function(&self, func_index: u32) -> Option<u32>; fn element_type_at(&self, at: u32) -> Option<RefType>; fn is_subtype(&self, a: ValType, b: ValType) -> bool; fn is_shared(&self, ty: RefType) -> bool; fn check_heap_type( &self, heap_type: &mut HeapType, offset: usize, ) -> Result<(), BinaryReaderError>; fn top_type(&self, heap_type: &HeapType) -> HeapType; fn element_count(&self) -> u32; fn data_count(&self) -> Option<u32>; fn is_function_referenced(&self, idx: u32) -> bool; // Provided methods fn check_value_type( &self, t: &mut ValType, features: &WasmFeatures, offset: usize, ) -> Result<(), BinaryReaderError> { ... } fn check_ref_type( &self, ref_type: &mut RefType, offset: usize, ) -> Result<(), BinaryReaderError> { ... }
}
Expand description

Types that qualify as Wasm validation database.

§Note

The wasmparser crate provides a builtin validation framework but allows users of this crate to also feed the parsed Wasm into their own data structure while parsing and also validate at the same time without the need of an additional parsing or validation step or copying data around.

Required Methods§

fn table_at(&self, at: u32) -> Option<TableType>

Returns the table at given index if any.

The table element type must be canonicalized.

fn memory_at(&self, at: u32) -> Option<MemoryType>

Returns the linear memory at given index.

fn tag_at(&self, at: u32) -> Option<&FuncType>

Returns the tag at given index.

The tag’s function type must be canonicalized.

fn global_at(&self, at: u32) -> Option<GlobalType>

Returns the global variable at given index.

The global’s value type must be canonicalized.

fn sub_type_at(&self, type_index: u32) -> Option<&SubType>

Returns the SubType associated with the given type index.

The sub type must be canonicalized.

fn type_id_of_function(&self, func_idx: u32) -> Option<CoreTypeId>

Returns the type ID associated with the given function index.

fn type_index_of_function(&self, func_index: u32) -> Option<u32>

Returns the type index associated with the given function index.

fn element_type_at(&self, at: u32) -> Option<RefType>

Returns the element type at the given index.

The RefType must be canonicalized.

fn is_subtype(&self, a: ValType, b: ValType) -> bool

Is a a subtype of b?

fn is_shared(&self, ty: RefType) -> bool

Is the given reference type shared?

While abstract heap types do carry along a shared flag, concrete heap types do not. This function resolves those concrete heap types to determine shared-ness.

fn check_heap_type( &self, heap_type: &mut HeapType, offset: usize, ) -> Result<(), BinaryReaderError>

Checks that a HeapType is valid and then additionally place it in its canonical form.

Similar to check_value_type but for heap types.

fn top_type(&self, heap_type: &HeapType) -> HeapType

Get the top type for the given heap type.

fn element_count(&self) -> u32

Returns the number of elements.

fn data_count(&self) -> Option<u32>

Returns the number of bytes in the Wasm data section.

fn is_function_referenced(&self, idx: u32) -> bool

Returns whether the function index is referenced in the module anywhere outside of the start/function sections.

Provided Methods§

fn check_value_type( &self, t: &mut ValType, features: &WasmFeatures, offset: usize, ) -> Result<(), BinaryReaderError>

Check and canonicalize a value type.

This will validate that t is valid under the features provided and then additionally validate the structure of t. For example any type references that t makes are validated and canonicalized.

fn check_ref_type( &self, ref_type: &mut RefType, offset: usize, ) -> Result<(), BinaryReaderError>

Check and canonicalize a reference type.

Implementations on Foreign Types§

§

impl<T> WasmModuleResources for &T

§

fn table_at(&self, at: u32) -> Option<TableType>

§

fn memory_at(&self, at: u32) -> Option<MemoryType>

§

fn tag_at(&self, at: u32) -> Option<&FuncType>

§

fn global_at(&self, at: u32) -> Option<GlobalType>

§

fn sub_type_at(&self, at: u32) -> Option<&SubType>

§

fn type_id_of_function(&self, func_idx: u32) -> Option<CoreTypeId>

§

fn type_index_of_function(&self, func_idx: u32) -> Option<u32>

§

fn check_heap_type( &self, t: &mut HeapType, offset: usize, ) -> Result<(), BinaryReaderError>

§

fn top_type(&self, heap_type: &HeapType) -> HeapType

§

fn element_type_at(&self, at: u32) -> Option<RefType>

§

fn is_subtype(&self, a: ValType, b: ValType) -> bool

§

fn is_shared(&self, ty: RefType) -> bool

§

fn element_count(&self) -> u32

§

fn data_count(&self) -> Option<u32>

§

fn is_function_referenced(&self, idx: u32) -> bool

§

impl<T> WasmModuleResources for Arc<T>

§

fn table_at(&self, at: u32) -> Option<TableType>

§

fn memory_at(&self, at: u32) -> Option<MemoryType>

§

fn tag_at(&self, at: u32) -> Option<&FuncType>

§

fn global_at(&self, at: u32) -> Option<GlobalType>

§

fn sub_type_at(&self, type_idx: u32) -> Option<&SubType>

§

fn type_id_of_function(&self, func_idx: u32) -> Option<CoreTypeId>

§

fn type_index_of_function(&self, func_idx: u32) -> Option<u32>

§

fn check_heap_type( &self, t: &mut HeapType, offset: usize, ) -> Result<(), BinaryReaderError>

§

fn top_type(&self, heap_type: &HeapType) -> HeapType

§

fn element_type_at(&self, at: u32) -> Option<RefType>

§

fn is_subtype(&self, a: ValType, b: ValType) -> bool

§

fn is_shared(&self, ty: RefType) -> bool

§

fn element_count(&self) -> u32

§

fn data_count(&self) -> Option<u32>

§

fn is_function_referenced(&self, idx: u32) -> bool

Implementors§