package wasmer

  1. Overview
  2. Docs
include module type of struct include DeclareVec(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 = 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.

val t : t Ctypes.structure Ctypes.typ

The Ctypes definition of the C structure.

val fsize : (Unsigned.size_t, t Ctypes.structure) Ctypes.field

The raw size field of the structure

val fdata : (data_type Ctypes.ptr, t Ctypes.structure) Ctypes.field

The raw data field of the structure

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

include module type of struct include OwnableObject(DeclareVec(V).{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.

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

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

val make_from_unsafe : DeclareVec(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.

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

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

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

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(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(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.

val get_ptr : s -> DeclareVec(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_RW

val get_ptr_const : s -> DeclareVec(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(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 : V.owning_struct array -> s

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

val of_list : 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 -> 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 -> V.owning_struct
val get_element_const : s -> int -> 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 -> V.owning_struct
val set_element : s -> int -> V.owning_struct -> unit
val set_element_unsafe : s -> int -> 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
OCaml

Innovation. Community. Security.