8#include <wasmtime/_anyref_class.hh>
9#include <wasmtime/_externref_class.hh>
10#include <wasmtime/_func_class.hh>
11#include <wasmtime/_val_class.hh>
15inline Val::Val(std::optional<Func> func) : val{} {
20 wasmtime_funcref_set_null(&val.
of.
funcref);
24inline Val::Val(
Func func) :
Val(std::optional(func)) {}
36#ifdef WASMTIME_FEATURE_GC
38inline Val::Val(std::optional<AnyRef> ptr) : val{} {
42 wasmtime_anyref_set_null(ptr->capi());
44 wasmtime_anyref_set_null(&val.
of.
anyref);
48inline Val::Val(AnyRef ptr) : Val(std::optional(ptr)) {}
50inline std::optional<AnyRef> Val::anyref()
const {
54 if (wasmtime_anyref_is_null(&val.
of.
anyref)) {
58 wasmtime_anyref_clone(&val.
of.
anyref, &other);
62inline Val::Val(std::optional<ExternRef> ptr) : val{} {
66 wasmtime_externref_set_null(ptr->capi());
72inline Val::Val(ExternRef ptr) : Val(std::optional(ptr)) {}
74inline std::optional<ExternRef> Val::externref()
const {
78 if (wasmtime_externref_is_null(&val.
of.
externref)) {
83 return ExternRef(other);
89template <>
struct detail::WasmType<V128> {
90 static const bool valid =
true;
Representation of a WebAssembly function.
Definition: _func_class.hh:108
static ValType v128()
Convenience constructor for the v128 value type.
Definition: types/_val_class.hh:130
Representation of a generic WebAssembly value.
Definition: _val_class.hh:53
std::optional< Func > funcref() const
Definition: val.hh:26
WASM_API_EXTERN void wasmtime_externref_clone(const wasmtime_externref_t *ref, wasmtime_externref_t *out)
Creates a new reference pointing to the same data that ref points to (depending on the configured col...
A WebAssembly value in the any hierarchy of GC types.
Definition: val.h:77
A host-defined un-forgeable reference to pass into WebAssembly.
Definition: val.h:136
uint64_t store_id
Definition: extern.h:32
wasmtime_valkind_t kind
Discriminant of which field of of is valid.
Definition: val.h:378
wasmtime_valunion_t of
Container for the extern item's value.
Definition: val.h:380
Container for possible wasm values.
Definition: val.h:290
wasmtime_v128 v128
Definition: val.h:310
wasmtime_func_t funcref
Definition: val.h:254
wasmtime_anyref_t anyref
Field used if wasmtime_val_t::kind is WASMTIME_ANYREF.
Definition: val.h:244
wasmtime_externref_t externref
Field used if wasmtime_val_t::kind is WASMTIME_EXTERNREF.
Definition: val.h:246
#define WASMTIME_EXTERNREF
Value of wasmtime_valkind_t meaning that wasmtime_val_t is an externref.
Definition: val.h:38
#define WASMTIME_ANYREF
Value of wasmtime_valkind_t meaning that wasmtime_val_t is an anyref.
Definition: val.h:41
uint8_t wasmtime_v128[16]
A 128-bit value representing the WebAssembly v128 type. Bytes are stored in little-endian order.
Definition: val.h:49
#define WASMTIME_FUNCREF
Value of wasmtime_valkind_t meaning that wasmtime_val_t is a funcref.
Definition: val.h:33