Show / Hide Table of Contents

Class Memory

Represents a WebAssembly memory.

Inheritance
System.Object
Memory
Namespace: Wasmtime
Assembly: Wasmtime.Dotnet.dll
Syntax
public class Memory : object

Constructors

| Improve this Doc View Source

Memory(Store, Int64, Nullable<Int64>, Boolean)

Creates a new WebAssembly memory.

Declaration
public Memory(Store store, long minimum = null, long? maximum = null, bool is64Bit = false)
Parameters
Type Name Description
Store store

The store to create the memory in.

System.Int64 minimum

The minimum number of WebAssembly pages.

System.Nullable<System.Int64> maximum

The maximum number of WebAssembly pages, or null to not specify a maximum.

System.Boolean is64Bit

true when memory type represents a 64-bit memory, false when it represents a 32-bit memory.

Fields

| Improve this Doc View Source

PageSize

The size, in bytes, of a WebAssembly memory page.

Declaration
public const int PageSize = null
Field Value
Type Description
System.Int32

Properties

| Improve this Doc View Source

Is64Bit

Gets a value that indicates whether this type of memory represents a 64-bit memory.

Declaration
public bool Is64Bit { get; }
Property Value
Type Description
System.Boolean

true if this type of memory represents a 64-bit memory, false otherwise.

| Improve this Doc View Source

Maximum

Gets the maximum memory size (in WebAssembly page units).

Declaration
public long? Maximum { get; }
Property Value
Type Description
System.Nullable<System.Int64>

The maximum memory size (in WebAssembly page units), or null if no maximum is specified.

| Improve this Doc View Source

Minimum

Gets the minimum memory size (in WebAssembly page units).

Declaration
public long Minimum { get; }
Property Value
Type Description
System.Int64

The minimum memory size (in WebAssembly page units).

Methods

| Improve this Doc View Source

GetLength()

Gets the current length of the memory, in bytes.

Declaration
public long GetLength()
Returns
Type Description
System.Int64

Returns the current length of the memory, in bytes.

| Improve this Doc View Source

GetPointer()

Returns a pointer to the start of the memory. The length for which the pointer is valid can be retrieved with GetLength().

Declaration
public IntPtr GetPointer()
Returns
Type Description
IntPtr

Returns a pointer to the start of the memory.

Remarks

The pointer may become invalid if the memory grows.

This may happen if the memory is explicitly requested to grow or grows as a result of WebAssembly execution.

Therefore, the returned pointer should not be used after calling the grow method or after calling into WebAssembly code.

| Improve this Doc View Source

GetSize()

Gets the current size of the memory, in WebAssembly page units.

Declaration
public long GetSize()
Returns
Type Description
System.Int64

Returns the current size of the memory, in WebAssembly page units.

| Improve this Doc View Source

GetSpan()

Gets the span of the memory.

Declaration
public Span<byte> GetSpan()
Returns
Type Description
Span<System.Byte>

Returns the span of the memory.

Remarks

The span may become invalid if the memory grows.

This may happen if the memory is explicitly requested to grow or grows as a result of WebAssembly execution.

Therefore, the returned span should not be used after calling the grow method or after calling into WebAssembly code.

| Improve this Doc View Source

GetSpan(Int64, Int32)

Gets a span of a section of the memory.

Declaration
public Span<byte> GetSpan(long address, int length)
Parameters
Type Name Description
System.Int64 address

The zero-based address of the start of the span.

System.Int32 length

The length of the span.

Returns
Type Description
Span<System.Byte>

Returns the span of a section of the memory.

Remarks

The span may become invalid if the memory grows.

This may happen if the memory is explicitly requested to grow or grows as a result of WebAssembly execution.

Therefore, the returned span should not be used after calling the grow method or after calling into WebAssembly code.

| Improve this Doc View Source

GetSpan<T>(Int32)

Gets the span of the memory viewed as a specific type, starting at a given address.

Declaration
public Span<T> GetSpan<T>(int address)
    where T : struct
Parameters
Type Name Description
System.Int32 address

The zero-based address of the start of the span.

Returns
Type Description
Span<T>

Returns the span of the memory.

Type Parameters
Name Description
T
Remarks

The span may become invalid if the memory grows.

This may happen if the memory is explicitly requested to grow or grows as a result of WebAssembly execution.

Therefore, the returned span should not be used after calling the grow method or after calling into WebAssembly code.

Note that WebAssembly always uses little endian as byte order. On platforms that use big endian, you will need to convert numeric values accordingly.

| Improve this Doc View Source

GetSpan<T>(Int64, Int32)

Gets a span of a section of the memory.

Declaration
public Span<T> GetSpan<T>(long address, int length)
    where T : struct
Parameters
Type Name Description
System.Int64 address

The zero-based address of the start of the span.

System.Int32 length

The length of the span.

Returns
Type Description
Span<T>

Returns the span of a section of the memory.

Type Parameters
Name Description
T
Remarks

The span may become invalid if the memory grows.

This may happen if the memory is explicitly requested to grow or grows as a result of WebAssembly execution.

Therefore, the returned span should not be used after calling the grow method or after calling into WebAssembly code.

Note that WebAssembly always uses little endian as byte order. On platforms that use big endian, you will need to convert numeric values accordingly.

| Improve this Doc View Source

Grow(Int64)

Grows the memory by the specified number of pages.

Declaration
public long Grow(long delta)
Parameters
Type Name Description
System.Int64 delta

The number of WebAssembly pages to grow the memory by.

Returns
Type Description
System.Int64

Returns the previous size of the Webassembly memory, in pages.

Remarks

This method will invalidate previously returned values from GetSpan.

| Improve this Doc View Source

Read<T>(Int64)

Read a struct from memory.

Declaration
public T Read<T>(long address)
    where T : struct
Parameters
Type Name Description
System.Int64 address

The zero-based address to read from.

Returns
Type Description
T

Returns the struct read from memory.

Type Parameters
Name Description
T

Type of the struct to read. Ensure layout in C# is identical to layout in WASM.

Remarks

Note that WebAssembly always uses little endian as byte order. On platforms that use big endian, you will need to convert numeric values accordingly.

| Improve this Doc View Source

ReadByte(Int64)

Reads a byte from memory.

Declaration
public byte ReadByte(long address)
Parameters
Type Name Description
System.Int64 address

The zero-based address to read from.

Returns
Type Description
System.Byte

Returns the byte read from memory.

| Improve this Doc View Source

ReadDouble(Int64)

Reads a double from memory.

Declaration
public double ReadDouble(long address)
Parameters
Type Name Description
System.Int64 address

The zero-based address to read from.

Returns
Type Description
System.Double

Returns the double read from memory.

| Improve this Doc View Source

ReadInt16(Int64)

Reads a short from memory.

Declaration
public short ReadInt16(long address)
Parameters
Type Name Description
System.Int64 address

The zero-based address to read from.

Returns
Type Description
System.Int16

Returns the short read from memory.

| Improve this Doc View Source

ReadInt32(Int64)

Reads an int from memory.

Declaration
public int ReadInt32(long address)
Parameters
Type Name Description
System.Int64 address

The zero-based address to read from.

Returns
Type Description
System.Int32

Returns the int read from memory.

| Improve this Doc View Source

ReadInt64(Int64)

Reads a long from memory.

Declaration
public long ReadInt64(long address)
Parameters
Type Name Description
System.Int64 address

The zero-based address to read from.

Returns
Type Description
System.Int64

Returns the long read from memory.

| Improve this Doc View Source

ReadIntPtr(Int64)

Reads an IntPtr from memory.

Declaration
public IntPtr ReadIntPtr(long address)
Parameters
Type Name Description
System.Int64 address

The zero-based address to read from.

Returns
Type Description
IntPtr

Returns the IntPtr read from memory.

| Improve this Doc View Source

ReadNullTerminatedString(Int64)

Reads a null-terminated UTF-8 string from memory.

Declaration
public string ReadNullTerminatedString(long address)
Parameters
Type Name Description
System.Int64 address

The zero-based address to read from.

Returns
Type Description
System.String

Returns the string read from memory.

| Improve this Doc View Source

ReadSingle(Int64)

Reads a single from memory.

Declaration
public float ReadSingle(long address)
Parameters
Type Name Description
System.Int64 address

The zero-based address to read from.

Returns
Type Description
System.Single

Returns the single read from memory.

| Improve this Doc View Source

ReadString(Int64, Int32, Nullable<Encoding>)

Reads a string from memory with the specified encoding.

Declaration
public string ReadString(long address, int length, Encoding? encoding = null)
Parameters
Type Name Description
System.Int64 address

The zero-based address to read from.

System.Int32 length

The length of bytes to read.

System.Nullable<Encoding> encoding

The encoding to use when reading the string; if null, UTF-8 encoding is used.

Returns
Type Description
System.String

Returns the string read from memory.

| Improve this Doc View Source

Write<T>(Int64, T)

Write a struct to memory.

Declaration
public void Write<T>(long address, T value)
    where T : struct
Parameters
Type Name Description
System.Int64 address

The zero-based address to read from.

T value

The struct to write.

Type Parameters
Name Description
T
Remarks

Note that WebAssembly always uses little endian as byte order. On platforms that use big endian, you will need to convert numeric values accordingly.

| Improve this Doc View Source

WriteByte(Int64, Byte)

Writes a byte to memory.

Declaration
public void WriteByte(long address, byte value)
Parameters
Type Name Description
System.Int64 address

The zero-based address to write to.

System.Byte value

The byte to write.

| Improve this Doc View Source

WriteDouble(Int64, Double)

Writes a double to memory.

Declaration
public void WriteDouble(long address, double value)
Parameters
Type Name Description
System.Int64 address

The zero-based address to write to.

System.Double value

The double to write.

| Improve this Doc View Source

WriteInt16(Int64, Int16)

Writes a short to memory.

Declaration
public void WriteInt16(long address, short value)
Parameters
Type Name Description
System.Int64 address

The zero-based address to write to.

System.Int16 value

The short to write.

| Improve this Doc View Source

WriteInt32(Int64, Int32)

Writes an int to memory.

Declaration
public void WriteInt32(long address, int value)
Parameters
Type Name Description
System.Int64 address

The zero-based address to write to.

System.Int32 value

The int to write.

| Improve this Doc View Source

WriteInt64(Int64, Int64)

Writes a long to memory.

Declaration
public void WriteInt64(long address, long value)
Parameters
Type Name Description
System.Int64 address

The zero-based address to write to.

System.Int64 value

The long to write.

| Improve this Doc View Source

WriteIntPtr(Int64, IntPtr)

Writes an IntPtr to memory.

Declaration
public void WriteIntPtr(long address, IntPtr value)
Parameters
Type Name Description
System.Int64 address

The zero-based address to write to.

IntPtr value

The IntPtr to write.

| Improve this Doc View Source

WriteSingle(Int64, Single)

Writes a single to memory.

Declaration
public void WriteSingle(long address, float value)
Parameters
Type Name Description
System.Int64 address

The zero-based address to write to.

System.Single value

The single to write.

| Improve this Doc View Source

WriteString(Int64, String, Nullable<Encoding>)

Writes a string at the given address with the given encoding.

Declaration
public int WriteString(long address, string value, Encoding? encoding = null)
Parameters
Type Name Description
System.Int64 address

The zero-based address to write to.

System.String value

The string to write.

System.Nullable<Encoding> encoding

The encoding to use when writing the string; if null, UTF-8 encoding is used.

Returns
Type Description
System.Int32
  • Improve this Doc
  • View Source
In This Article
Back to top Generated by DocFX