pub struct BinaryReader<'a> { /* private fields */ }
Expand description

A binary reader of the WebAssembly structures and types.

Implementations§

source§

impl<'a> BinaryReader<'a>

source

pub fn new(data: &[u8]) -> BinaryReader<'_>

Constructs BinaryReader type.

Examples
let fn_body = &vec![0x41, 0x00, 0x10, 0x00, 0x0B];
let mut reader = wasmparser::BinaryReader::new(fn_body);
while !reader.eof() {
    let op = reader.read_operator();
    println!("{:?}", op)
}
source

pub fn new_with_offset(data: &[u8], original_offset: usize) -> BinaryReader<'_>

Constructs a BinaryReader with an explicit starting offset.

source

pub fn original_position(&self) -> usize

Gets the original position of the binary reader.

source

pub fn allow_memarg64(&mut self, allow: bool)

Whether or not to allow 64-bit memory arguments in functions.

This is intended to be true when support for the memory64 WebAssembly proposal is also enabled.

source

pub fn range(&self) -> Range<usize>

Returns a range from the starting offset to the end of the buffer.

source

pub fn read_val_type(&mut self) -> Result<ValType, BinaryReaderError>

Reads a core WebAssembly value type from the binary reader.

source

pub fn eof(&self) -> bool

Returns whether the BinaryReader has reached the end of the file.

source

pub fn current_position(&self) -> usize

Returns the BinaryReader’s current position.

source

pub fn bytes_remaining(&self) -> usize

Returns the number of bytes remaining in the BinaryReader.

source

pub fn read_bytes(&mut self, size: usize) -> Result<&'a [u8], BinaryReaderError>

Advances the BinaryReader size bytes, and returns a slice from the current position of size length.

Errors

If size exceeds the remaining length in BinaryReader.

source

pub fn read_u32(&mut self) -> Result<u32, BinaryReaderError>

Advances the BinaryReader four bytes and returns a u32.

Errors

If BinaryReader has less than four bytes remaining.

source

pub fn read_u64(&mut self) -> Result<u64, BinaryReaderError>

Advances the BinaryReader eight bytes and returns a u64.

Errors

If BinaryReader has less than eight bytes remaining.

source

pub fn read_u8(&mut self) -> Result<u8, BinaryReaderError>

Advances the BinaryReader a single byte.

Errors

If BinaryReader has no bytes remaining.

source

pub fn read_var_u32(&mut self) -> Result<u32, BinaryReaderError>

Advances the BinaryReader up to four bytes to parse a variable length integer as a u32.

Errors

If BinaryReader has less than one or up to four bytes remaining, or the integer is larger than 32 bits.

source

pub fn read_var_u64(&mut self) -> Result<u64, BinaryReaderError>

Advances the BinaryReader up to four bytes to parse a variable length integer as a u64.

Errors

If BinaryReader has less than one or up to eight bytes remaining, or the integer is larger than 64 bits.

source

pub fn skip_bytes(&mut self, len: usize) -> Result<(), BinaryReaderError>

Advances the BinaryReader len bytes, skipping the result.

Errors

If BinaryReader has less than len bytes remaining.

source

pub fn skip_string(&mut self) -> Result<(), BinaryReaderError>

Advances the BinaryReader past a WebAssembly string. This method does not perform any utf-8 validation.

Errors

If BinaryReader has less than four bytes, the string’s length exceeds the remaining bytes, or the string length exceeds limits::MAX_WASM_STRING_SIZE.

source

pub fn read_var_i32(&mut self) -> Result<i32, BinaryReaderError>

Advances the BinaryReader up to four bytes to parse a variable length integer as a i32.

Errors

If BinaryReader has less than one or up to four bytes remaining, or the integer is larger than 32 bits.

source

pub fn read_var_s33(&mut self) -> Result<i64, BinaryReaderError>

Advances the BinaryReader up to four bytes to parse a variable length integer as a signed 33 bit integer, returned as a i64.

Errors

If BinaryReader has less than one or up to five bytes remaining, or the integer is larger than 33 bits.

source

pub fn read_var_i64(&mut self) -> Result<i64, BinaryReaderError>

Advances the BinaryReader up to eight bytes to parse a variable length integer as a 64 bit integer, returned as a i64.

Errors

If BinaryReader has less than one or up to eight bytes remaining, or the integer is larger than 64 bits.

source

pub fn read_f32(&mut self) -> Result<Ieee32, BinaryReaderError>

Advances the BinaryReader up to four bytes to parse a variable length integer as a 32 bit floating point integer, returned as Ieee32.

Errors

If BinaryReader has less than one or up to four bytes remaining, or the integer is larger than 32 bits.

source

pub fn read_f64(&mut self) -> Result<Ieee64, BinaryReaderError>

Advances the BinaryReader up to four bytes to parse a variable length integer as a 32 bit floating point integer, returned as Ieee32.

Errors

If BinaryReader has less than one or up to four bytes remaining, or the integer is larger than 32 bits.

source

pub fn read_string(&mut self) -> Result<&'a str, BinaryReaderError>

Reads a WebAssembly string from the module.

Errors

If BinaryReader has less than up to four bytes remaining, the string’s length exceeds the remaining bytes, the string’s length exceeds limits::MAX_WASM_STRING_SIZE, or the string contains invalid utf-8.

source

pub fn visit_operator<T>( &mut self, visitor: &mut T ) -> Result<<T as VisitOperator<'a>>::Output, BinaryReaderError>where T: VisitOperator<'a>,

Reads the next available Operator and calls the respective visit method.

Errors

If BinaryReader has less bytes remaining than required to parse the Operator.

source

pub fn read_operator(&mut self) -> Result<Operator<'a>, BinaryReaderError>

Reads the next available Operator.

Errors

If BinaryReader has less bytes remaining than required to parse the Operator.

Trait Implementations§

source§

impl<'a> Clone for BinaryReader<'a>

source§

fn clone(&self) -> BinaryReader<'a>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a> Debug for BinaryReader<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<'a> Hash for BinaryReader<'a>

source§

fn hash<__H>(&self, state: &mut __H)where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more

Auto Trait Implementations§

§

impl<'a> RefUnwindSafe for BinaryReader<'a>

§

impl<'a> Send for BinaryReader<'a>

§

impl<'a> Sync for BinaryReader<'a>

§

impl<'a> Unpin for BinaryReader<'a>

§

impl<'a> UnwindSafe for BinaryReader<'a>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CallHasher for Twhere T: Hash + ?Sized,

source§

default fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where H: Hash + ?Sized, B: BuildHasher,

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.