Type Alias wasmer::ptr::WasmPtr64

source ·
pub type WasmPtr64<T> = WasmPtr<T, Memory64>;
Expand description

Alias for `WasmPtr<T, Memory64>.

Aliased Type§

struct WasmPtr64<T> {
    offset: u64,
    _phantom: PhantomData<T>,
}

Fields§

§offset: u64§_phantom: PhantomData<T>

Implementations§

source§

impl<T, M: MemorySize> WasmPtr<T, M>

source

pub fn new(offset: M::Offset) -> Self

Create a new WasmPtr at the given offset.

source

pub fn offset(&self) -> M::Offset

Get the offset into Wasm linear memory for this WasmPtr.

source

pub fn cast<U>(self) -> WasmPtr<U, M>

Casts this WasmPtr to a WasmPtr of a different type.

source

pub fn null() -> Self

Returns a null UserPtr.

source

pub fn is_null(&self) -> bool

Checks whether the WasmPtr is null.

source

pub fn add_offset(self, offset: M::Offset) -> Result<Self, MemoryAccessError>

Calculates an offset from the current pointer address. The argument is in units of T.

This method returns an error if an address overflow occurs.

source

pub fn sub_offset(self, offset: M::Offset) -> Result<Self, MemoryAccessError>

Calculates an offset from the current pointer address. The argument is in units of T.

This method returns an error if an address underflow occurs.

source§

impl<T: ValueType, M: MemorySize> WasmPtr<T, M>

source

pub fn deref<'a>(&self, view: &'a MemoryView<'_>) -> WasmRef<'a, T>

Creates a WasmRef from this WasmPtr which allows reading and mutating of the value being pointed to.

source

pub fn read(&self, view: &MemoryView<'_>) -> Result<T, MemoryAccessError>

Reads the address pointed to by this WasmPtr in a memory.

source

pub fn write( &self, view: &MemoryView<'_>, val: T ) -> Result<(), MemoryAccessError>

Writes to the address pointed to by this WasmPtr in a memory.

source

pub fn slice<'a>( &self, view: &'a MemoryView<'_>, len: M::Offset ) -> Result<WasmSlice<'a, T>, MemoryAccessError>

Creates a WasmSlice starting at this WasmPtr which allows reading and mutating of an array of value being pointed to.

Returns a MemoryAccessError if the slice length overflows a 64-bit address.

source

pub fn read_until( &self, view: &MemoryView<'_>, end: impl FnMut(&T) -> bool ) -> Result<Vec<T>, MemoryAccessError>

Reads a sequence of values from this WasmPtr until a value that matches the given condition is found.

This last value is not included in the returned vector.

source

pub fn access<'a>( &self, view: &'a MemoryView<'_> ) -> Result<WasmRefAccess<'a, T>, MemoryAccessError>

Creates a WasmAccess

source§

impl<M: MemorySize> WasmPtr<u8, M>

source

pub fn read_utf8_string( &self, view: &MemoryView<'_>, len: M::Offset ) -> Result<String, MemoryAccessError>

Reads a UTF-8 string from the WasmPtr with the given length.

This method is safe to call even if the memory is being concurrently modified.

source

pub fn read_utf8_string_with_nul( &self, view: &MemoryView<'_> ) -> Result<String, MemoryAccessError>

Reads a null-terminated UTF-8 string from the WasmPtr.

This method is safe to call even if the memory is being concurrently modified.

Trait Implementations§

source§

impl<T: ValueType, M: MemorySize> Clone for WasmPtr<T, M>

source§

fn clone(&self) -> Self

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<T: ValueType, M: MemorySize> Debug for WasmPtr<T, M>

source§

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

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

impl<T: ValueType, M: MemorySize> FromToNativeWasmType for WasmPtr<T, M>where <M as MemorySize>::Native: NativeWasmTypeInto,

§

type Native = <M as MemorySize>::Native

Native Wasm type.
source§

fn to_native(self) -> Self::Native

Convert self to Self::Native. Read more
source§

fn from_native(n: Self::Native) -> Self

Convert a value of kind Self::Native to Self. Read more
source§

fn is_from_store(&self, _store: &impl AsStoreRef) -> bool

Returns whether the given value is from the given store. Read more
source§

impl<T: ValueType, M: MemorySize> PartialEq<WasmPtr<T, M>> for WasmPtr<T, M>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T: ValueType, M: MemorySize> ValueType for WasmPtr<T, M>

source§

fn zero_padding_bytes(&self, _bytes: &mut [MaybeUninit<u8>])

This method is passed a byte slice which contains the byte representation of self. It must zero out any bytes which are uninitialized (e.g. padding bytes).
source§

impl<T: ValueType, M: MemorySize> Copy for WasmPtr<T, M>

source§

impl<T: ValueType, M: MemorySize> Eq for WasmPtr<T, M>