Struct parity_wasm::builder::ModuleBuilder[][src]

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

Module builder

Methods

impl ModuleBuilder
[src]

New empty module builder

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

New module builder with bound callback

Builder from raw module

Fill module with sections from iterator

Add additional section

Binds to the type section, creates additional types when required

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

Push linear memory region

Push table

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

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

Push import entry to module. Not that it does not update calling indices in function bodies.

Push export entry to module.

Add new function using dedicated builder

Add new linear memory using dedicated builder

Add new table using dedicated builder

Define functions section

With inserted export entry

With inserted import entry

Import entry builder

Examples

use parity_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);

With global variable

With table

Export entry builder

Examples

use parity_wasm::builder::module;
use parity_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);

Glboal entry builder

Examples

use parity_wasm::builder::module;
use parity_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);

Add data segment to the builder

Data entry builder

Build module (final step)

Auto Trait Implementations

impl<F> Send for ModuleBuilder<F> where
    F: Send

impl<F> Sync for ModuleBuilder<F> where
    F: Sync