Struct tetsy_wasm::builder::ModuleBuilder[][src]

pub struct ModuleBuilder<F = Identity> { /* fields omitted */ }

Module builder

Implementations

impl ModuleBuilder[src]

pub fn new() -> Self[src]

New empty module builder

impl<F> ModuleBuilder<F> where
    F: Invoke<Module>, 
[src]

pub fn with_callback(callback: F) -> Self[src]

New module builder with bound callback

pub fn with_module(mut self: Self, module: Module) -> Self[src]

Builder from raw module

pub fn with_sections<I>(mut self: Self, sections: I) -> Self where
    I: IntoIterator<Item = Section>, 
[src]

Fill module with sections from iterator

pub fn with_section(mut self: Self, section: Section) -> Self[src]

Add additional section

pub fn with_signatures(mut self: Self, bindings: Vec<Signature>) -> Self[src]

Binds to the type section, creates additional types when required

pub fn push_function(&mut self, func: FunctionDefinition) -> CodeLocation[src]

Push stand-alone function definition, creating sections, signature and code blocks in corresponding sections. FunctionDefinition can be build using builder::function builder

pub fn push_memory(&mut self, mut memory: MemoryDefinition) -> u32[src]

Push linear memory region

pub fn push_table(&mut self, mut table: TableDefinition) -> u32[src]

Push table

pub fn push_global(&mut self, global: GlobalEntry) -> u32[src]

Push global.

pub fn push_signature(&mut self, signature: Signature) -> u32[src]

Push one function signature, returning it's calling index. Can create corresponding type in type section.

pub fn push_signatures(&mut self, signatures: Vec<Signature>) -> Vec<u32>[src]

Push signatures in the module, returning corresponding indices of pushed signatures

pub fn push_import(&mut self, import: ImportEntry) -> u32[src]

Push import entry to module. Note that this does not update calling indices in function bodies.

pub fn push_export(&mut self, export: ExportEntry) -> u32[src]

Push export entry to module.

pub fn function(self) -> FunctionBuilder<Self>[src]

Add new function using dedicated builder

pub fn memory(self) -> MemoryBuilder<Self>[src]

Add new linear memory using dedicated builder

pub fn table(self) -> TableBuilder<Self>[src]

Add new table using dedicated builder

pub fn functions(self) -> SignaturesBuilder<Self>[src]

Define functions section

pub fn with_export(mut self: Self, entry: ExportEntry) -> Self[src]

With inserted export entry

pub fn with_import(mut self: Self, entry: ImportEntry) -> Self[src]

With inserted import entry

pub fn import(self) -> ImportBuilder<Self>[src]

Import entry builder

Examples

use tetsy_wasm::builder::module;

let module = module()
   .import()
       .module("env")
       .field("memory")
       .external().memory(256, Some(256))
       .build()
   .build();

assert_eq!(module.import_section().expect("import section to exist").entries().len(), 1);

pub fn with_global(mut self: Self, global: GlobalEntry) -> Self[src]

With global variable

pub fn with_table(mut self: Self, table: TableType) -> Self[src]

With table

pub fn export(self) -> ExportBuilder<Self>[src]

Export entry builder

Examples

use tetsy_wasm::builder::module;
use tetsy_wasm::elements::Instruction::*;

let module = module()
   .global()
        .value_type().i32()
        .init_expr(I32Const(0))
        .build()
   .export()
       .field("_zero")
       .internal().global(0)
       .build()
   .build();

assert_eq!(module.export_section().expect("export section to exist").entries().len(), 1);

pub fn global(self) -> GlobalBuilder<Self>[src]

Glboal entry builder

Examples

use tetsy_wasm::builder::module;
use tetsy_wasm::elements::Instruction::*;

let module = module()
   .global()
        .value_type().i32()
        .init_expr(I32Const(0))
        .build()
   .build();

assert_eq!(module.global_section().expect("global section to exist").entries().len(), 1);

pub fn with_data_segment(mut self: Self, segment: DataSegment) -> Self[src]

Add data segment to the builder

pub fn data(self) -> DataSegmentBuilder<Self>[src]

Data entry builder

pub fn build(self) -> F::Result[src]

Build module (final step)

Auto Trait Implementations

impl<F> RefUnwindSafe for ModuleBuilder<F> where
    F: RefUnwindSafe
[src]

impl<F> Send for ModuleBuilder<F> where
    F: Send
[src]

impl<F> Sync for ModuleBuilder<F> where
    F: Sync
[src]

impl<F> Unpin for ModuleBuilder<F> where
    F: Unpin
[src]

impl<F> UnwindSafe for ModuleBuilder<F> where
    F: UnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.