package wasmer

  1. Overview
  2. Docs
include module type of struct include Name end
include module type of struct include Byte.Vec end
include module type of struct include DeclareVec(Byte.V) end

The vector type, declared in the C API with the WASM_DECLARE_VEC macro. Vectors always get ownership of their data.

type data_type = Byte.V.data_type

The vector's data type

val data_type : data_type Ctypes.typ

The vector's Ctypes data type declaration

val name : string

The vector name (without the _t)

The C unique (abstract) base type for the structure. the structure type is therefore t structure.

The Ctypes definition of the C structure.

The raw size field of the structure

The raw data field of the structure

This structure maintains an ownership status. See also WasmerBindings.OwnableObject.

include module type of struct include OwnableObject(Name.{O}5) end

Ownable objects are the basic structure that maintains an ownership state on C objects.

The owning structure type.

val make_new : unit -> s

Make a new owning structure from a new pointer.

Make a new owning structure from a pointer. See also WasmerBindings.OwnableObject.make_from_unsafe.

val make_from_unsafe : DeclareVec(Byte.V).{O}5.t Ctypes.ptr -> object_state -> s

Make a new owning structure from a pointer. Does not raise an exception if NULL is given. See also WasmerBindings.OwnableObject.make_from_raise.

Make a new owning structure from a pointer, with an additional data. See also WasmerBindings.OwnableObject.make_from_unsafe_data.

Make a new owning structure from a pointer, with an additional data. Does not raise an exception if NULL is given. See also WasmerBindings.OwnableObject.make_from_raise_data.

val get_state : s -> object_state

Returns the current ownership state.

val lose_ownership : s -> unit

Sets the current ownership state to WasmerBindings.object_state.State_PassedAway. Ignores the current ownership.

val grab_ownership : s -> DeclareVec(Byte.V).{O}5.t Ctypes.ptr

grab_ownership self gives the ownership of the pointed object to the caller code. It is equivalent to let p = get_ptr self in lose_ownership self; p, but with additional checks for the current ownership.

  • returns

    The pointer

val gain_ownership_back : s -> DeclareVec(Byte.V).{O}5.t Ctypes.ptr

Deletes the object if required, then sets the ownership to WasmerBindings.object_state.State_Owned and returns the pointer. This is only to be used in own-out function arguments in the C API or equivalent.

  • returns

    A deleted or given-away pointer.

  • raises Invalid_access

    If the current state is WasmerBindings.object_state.State_Dependent

val is_null : s -> bool

Returns Ctypes.is_null on the underlying pointer, ignoring the current ownership state.

Returns the underlying pointer, requiring a sufficient ownership state.

  • raises Invalid_access

    If the current state is lower than WasmerBindings.object_state.State_RW

val get_ptr_const : s -> DeclareVec(Byte.V).{O}5.t Ctypes.ptr

Returns the underlying pointer, requiring a sufficient ownership state.

  • raises Invalid_access

    If the current state is lower than WasmerBindings.object_state.State_Const

val get_ptr_givenaway : s -> DeclareVec(Byte.V).{O}5.t Ctypes.ptr

Inherently unsafe function that returns a given-away pointer.

  • raises Invalid_access

    If the current state is not WasmerBindings.object_state.State_PassedAway

val delete : s -> unit

Frees the underlying pointer. A side effect is to mark the object as given away.

val make_empty : unit -> s

Makes a new vector, calling the wasm_*vec*_new C API function.

val make_empty_null : unit -> s

Makes a new vector, initializing the data field to NULL.

val make_uninit : int -> s

Makes a new uninitialized vector.

val duplicate : s -> s

Duplicates the current vector. No guarantee is made on the deep-ness of the copy.

val of_array : Byte.V.owning_struct array -> s

Makes a vector from an array, taking ownership of the elements.

val of_list : Byte.V.owning_struct list -> s

Makes a vector from a list, taking ownership of the elements.

val get_size : s -> int

Gets the size field of the vector.

val get_element : s -> int -> Byte.V.owning_struct

get_element vec i gets the ith element of vec with the correct WasmerBindings.object_state.Dependent ownership state.

val get_element_unsafe : s -> int -> Byte.V.owning_struct
val get_element_const : s -> int -> Byte.V.owning_struct

get_element vec i gets the ith element of vec with the correct WasmerBindings.object_state.Dependent ownership state.

val get_element_const_unsafe : s -> int -> Byte.V.owning_struct
val set_element : s -> int -> Byte.V.owning_struct -> unit
val set_element_unsafe : s -> int -> Byte.V.owning_struct -> unit
val of_char_list : char list -> s
val of_int_list : int list -> s
val of_bytes : bytes -> s
val to_char_list : s -> char list
val to_int_list : s -> int list
val to_bytes : s -> bytes
val of_string : string -> s
val to_string : s -> string