3#ifndef WASMTIME_COMPONENT_VAL_HH
4#define WASMTIME_COMPONENT_VAL_HH
8#ifdef WASMTIME_FEATURE_COMPONENT_MODEL
31 return reinterpret_cast<const Val *
>(capi);
39#define VAL_REPR(name, raw_type) \
41 using Raw = raw_type; \
48 explicit name(Raw &&capi) { name::transfer(std::move(capi), raw); } \
54 static const name *from_capi(const Raw *capi) { \
55 return reinterpret_cast<const name *>(capi); \
62 static name *from_capi(Raw *capi) { return reinterpret_cast<name *>(capi); } \
68 static const Raw *to_capi(const name *capi) { \
69 return reinterpret_cast<const Raw *>(capi); \
76 static Raw *to_capi(name *capi) { return reinterpret_cast<Raw *>(capi); } \
81 name(const name &other) { copy(other.raw); } \
86 name &operator=(const name &other) { \
95 name(name &&other) { name::transfer(std::move(other.raw), raw); } \
100 name &operator=(name &&other) { \
102 name::transfer(std::move(other.raw), raw); \
106 ~name() { destroy(); } \
111 const Raw *capi() const { return &raw; } \
128 return reinterpret_cast<const RecordField *
>(capi);
133 std::string_view
name()
const {
138 const Val &
value()
const {
return *detail::val_from_capi(&entry.
val); }
148 static void transfer(
Raw &&from,
Raw &to) {
154 void copy(
const Raw &other) {
162 Record(std::vector<std::pair<std::string_view, Val>> entries);
165 size_t size()
const {
return raw.
size; }
168 const RecordField *
begin()
const {
return RecordField::from_capi(raw.
data); }
171 const RecordField *
end()
const {
172 return RecordField::from_capi(raw.
data + raw.
size);
182 static void transfer(
Raw &&from,
Raw &to) {
194 List(std::vector<Val> entries);
197 size_t size()
const {
return raw.
size; }
200 const Val *
begin()
const {
return reinterpret_cast<const Val *
>(raw.
data); }
203 const Val *
end()
const {
204 return reinterpret_cast<const Val *
>(raw.
data + raw.
size);
214 static void transfer(
Raw &&from,
Raw &to) {
220 void copy(
const Raw &other) {
228 Tuple(std::vector<Val> entries);
231 size_t size()
const {
return raw.
size; }
234 const Val *
begin()
const {
return reinterpret_cast<const Val *
>(raw.
data); }
237 const Val *
end()
const {
238 return reinterpret_cast<const Val *
>(raw.
data + raw.
size);
252 from.discriminant.data =
nullptr;
282 const Val *
value()
const {
return detail::val_from_capi(raw.
val); }
291 static void transfer(
Raw &&from,
Raw &to) {
296 void copy(
const Raw &other) {
310 explicit WitOption(std::optional<Val> val);
313 const Val *
value()
const {
return detail::val_from_capi(raw); }
322 static void transfer(Raw &&from, Raw &to) {
327 void copy(
const Raw &other) {
363 static void transfer(
Raw &&from,
Raw &to) {
378 std::string_view
name()
const {
return std::string_view{raw.
data, raw.
size}; }
387 static void transfer(
Raw &&from,
Raw &to) {
393 void copy(
const Raw &other) {
401 Flags(std::vector<Flag> flags) {
404 for (
auto &&val : flags)
405 Flag::transfer(std::move(val.raw), *dst++);
409 size_t size()
const {
return raw.
size; }
412 const Flag *
begin()
const {
return reinterpret_cast<const Flag *
>(raw.
data); }
415 const Flag *
end()
const {
416 return reinterpret_cast<const Flag *
>(raw.
data + raw.
size);
433 return reinterpret_cast<const MapEntry *
>(capi);
438 const Val &
key()
const {
return *detail::val_from_capi(&entry.
key); }
441 const Val &
value()
const {
return *detail::val_from_capi(&entry.
value); }
451 static void transfer(
Raw &&from,
Raw &to) {
463 Map(std::vector<std::pair<Val, Val>> entries);
466 size_t size()
const {
return raw.
size; }
469 const MapEntry *
begin()
const {
return MapEntry::from_capi(raw.
data); }
472 const MapEntry *
end()
const {
473 return MapEntry::from_capi(raw.
data + raw.
size);
482 WASMTIME_CLONE_WRAPPER(ResourceAny, wasmtime_component_resource_any);
501 return std::monostate();
511 WASMTIME_CLONE_WRAPPER(ResourceHost, wasmtime_component_resource_host);
515 ResourceHost(
bool owned, uint32_t rep, uint32_t ty)
525 uint32_t type()
const {
546 return ResourceHost(out);
559 static void transfer(
Raw &&from,
Raw &to) {
562 from.of.boolean =
false;
640 .of = {.character = v},
642 return Val(std::move(raw));
650 return Val(std::move(raw));
656 List::transfer(std::move(v.raw), raw.
of.
list);
662 Record::transfer(std::move(r.raw), raw.
of.
record);
668 Tuple::transfer(std::move(v.raw), raw.
of.
tuple);
674 Variant::transfer(std::move(v.raw), raw.
of.
variant);
680 WitOption::transfer(std::move(v.raw), raw.
of.
option);
686 WitResult::transfer(std::move(r.raw), raw.
of.
result);
690 static Val enum_(std::string_view discriminant) {
694 discriminant.data());
695 return Val(std::move(raw));
701 Flags::transfer(std::move(f.raw), raw.
of.
flags);
707 Map::transfer(std::move(m.raw), raw.
of.
map);
902 return *ResourceAny::from_capi(&raw.
of.
resource);
917inline Record::Record(std::vector<std::pair<std::string_view, Val>> entries) {
920 for (
auto &&[name, val] : entries) {
922 new (&dst->val)
Val(std::move(val));
927inline Map::Map(std::vector<std::pair<Val, Val>> entries) {
930 for (
auto &&[key, val] : entries) {
931 new (&dst->key)
Val(std::move(key));
932 new (&dst->value)
Val(std::move(val));
940 for (
auto &&val : values)
941 new (dst++)
Val(std::move(val));
947 for (
auto &&val : values)
948 new (dst++)
Val(std::move(val));
951inline Variant::Variant(std::string_view discriminant, std::optional<Val> x) {
Errors coming from Wasmtime.
Definition: error.hh:26
Fallible result type used for Wasmtime.
Definition: error.hh:70
An interior pointer into a Store.
Definition: store.hh:66
const wasmtime_context_t * capi() const
Returns the underlying C API pointer.
Definition: store.hh:166
Representation of a generic WebAssembly value.
Definition: val.hh:204
Class representing a component model flags value.
Definition: component/val.hh:334
std::string_view name() const
Returns the name of this flag.
Definition: component/val.hh:354
Flag(Raw &&capi)
Definition: component/val.hh:337
Class representing a component model flags value.
Definition: component/val.hh:358
static const Flags * from_capi(const Raw *capi)
Definition: component/val.hh:361
size_t size() const
Returns the number of flags.
Definition: component/val.hh:385
const Flag * end() const
Returns an iterator to the end of the flags.
Definition: component/val.hh:391
Flags(Raw &&capi)
Definition: component/val.hh:361
const Flag * begin() const
Returns an iterator to the beginning of the flags.
Definition: component/val.hh:388
Class representing a component model list, a sequence of values.
Definition: component/val.hh:153
static const List * from_capi(const Raw *capi)
Definition: component/val.hh:156
size_t size() const
Returns the number of entries in the list.
Definition: component/val.hh:173
const Val * begin() const
Returns an iterator to the beginning of the list.
Definition: component/val.hh:176
List(Raw &&capi)
Definition: component/val.hh:156
const Val * end() const
Returns an iterator to the end of the list.
Definition: component/val.hh:179
Class representing an entry in a map value.
Definition: component/val.hh:397
const Val & value() const
Returns the value of this map entry.
Definition: component/val.hh:417
const Val & key() const
Returns the key of this map entry.
Definition: component/val.hh:414
Class representing a component model map, a collection of key/value pairs.
Definition: component/val.hh:422
size_t size() const
Returns the number of entries in the map.
Definition: component/val.hh:442
const MapEntry * end() const
Returns an iterator to the end of the map entries.
Definition: component/val.hh:448
Map(Raw &&capi)
Definition: component/val.hh:425
const MapEntry * begin() const
Returns an iterator to the beginning of the map entries.
Definition: component/val.hh:445
static const Map * from_capi(const Raw *capi)
Definition: component/val.hh:425
Class representing a field in a record value.
Definition: component/val.hh:92
const Val & value() const
Returns the value of this record field.
Definition: component/val.hh:114
std::string_view name() const
Returns the name of this record field.
Definition: component/val.hh:109
Class representing a component model record, a list of name/value pairs.
Definition: component/val.hh:119
size_t size() const
Returns the number of entries in the record.
Definition: component/val.hh:141
static const Record * from_capi(const Raw *capi)
Definition: component/val.hh:122
const RecordField * end() const
Returns an iterator to the end of the record fields.
Definition: component/val.hh:147
const RecordField * begin() const
Returns an iterator to the beginning of the record fields.
Definition: component/val.hh:144
Record(Raw &&capi)
Definition: component/val.hh:122
Definition: component/val.hh:457
Definition: component/types/val.hh:151
Class representing a component model tuple.
Definition: component/val.hh:185
const Val * begin() const
Returns an iterator to the beginning of the tuple.
Definition: component/val.hh:210
Tuple(Raw &&capi)
Definition: component/val.hh:188
size_t size() const
Returns the number of entries in the tuple.
Definition: component/val.hh:207
static const Tuple * from_capi(const Raw *capi)
Definition: component/val.hh:188
const Val * end() const
Returns an iterator to the end of the tuple.
Definition: component/val.hh:213
Class representing an instantiated WebAssembly component.
Definition: component/val.hh:528
const Variant & get_variant() const
Returns the variant value, only valid if is_variant().
Definition: component/val.hh:831
bool is_bool() const
Returns whether this value is a boolean.
Definition: component/val.hh:693
bool is_flags() const
Returns whether this value is flags.
Definition: component/val.hh:864
Val(Raw &&capi)
Definition: component/val.hh:533
bool get_bool() const
Returns the boolean value, only valid if is_bool().
Definition: component/val.hh:696
const Flags & get_flags() const
Returns the flags value, only valid if is_flags().
Definition: component/val.hh:867
std::string_view get_enum() const
Returns the enum discriminant, only valid if is_enum().
Definition: component/val.hh:849
bool is_string() const
Returns whether this value is a string.
Definition: component/val.hh:792
const WitResult & get_result() const
Returns the result value, only valid if is_result().
Definition: component/val.hh:858
bool is_map() const
Returns whether this value is a map.
Definition: component/val.hh:882
const WitOption & get_option() const
Returns the option value, only valid if is_option().
Definition: component/val.hh:840
int32_t get_s32() const
Returns the s32 value, only valid if is_s32().
Definition: component/val.hh:750
static Val char_(uint32_t v)
Creates a new char value.
Definition: component/val.hh:613
bool is_s16() const
Returns whether this value is a s16.
Definition: component/val.hh:729
Val(WitOption v)
Creates a new option value.
Definition: component/val.hh:654
int64_t get_s64() const
Returns the s64 value, only valid if is_s64().
Definition: component/val.hh:768
double get_f64() const
Returns the f64 value, only valid if is_f64().
Definition: component/val.hh:786
bool is_record() const
Returns whether this value is a record.
Definition: component/val.hh:810
static Val enum_(std::string_view discriminant)
Creates a new enum value.
Definition: component/val.hh:666
Val(int32_t v)
Creates a new s32 value.
Definition: component/val.hh:583
bool is_f64() const
Returns whether this value is a f64.
Definition: component/val.hh:783
bool is_option() const
Returns whether this value is an option.
Definition: component/val.hh:837
Val(WitResult r)
Creates a new result value.
Definition: component/val.hh:660
uint8_t get_u8() const
Returns the u8 value, only valid if is_u8().
Definition: component/val.hh:705
std::string_view get_string() const
Returns the string value, only valid if is_string().
Definition: component/val.hh:795
Val(double v)
Creates a new f64 value.
Definition: component/val.hh:607
bool is_s32() const
Returns whether this value is a s32.
Definition: component/val.hh:747
Val(float v)
Creates a new f32 value.
Definition: component/val.hh:601
static Val string(std::string_view v)
Creates a new string value.
Definition: component/val.hh:622
float get_f32() const
Returns the f32 value, only valid if is_f32().
Definition: component/val.hh:777
const Record & get_record() const
Returns the record value, only valid if is_record().
Definition: component/val.hh:813
bool is_result() const
Returns whether this value is a result.
Definition: component/val.hh:855
int16_t get_s16() const
Returns the s16 value, only valid if is_s16().
Definition: component/val.hh:732
Val(uint64_t v)
Creates a new u64 value.
Definition: component/val.hh:589
bool is_u8() const
Returns whether this value is a u8.
Definition: component/val.hh:702
const Map & get_map() const
Returns the map value, only valid if is_map().
Definition: component/val.hh:885
bool is_s64() const
Returns whether this value is a s64.
Definition: component/val.hh:765
const ResourceAny & get_resource() const
Returns the resource value, only valid if is_resource().
Definition: component/val.hh:876
Val(Tuple v)
Creates a new tuple value.
Definition: component/val.hh:642
Val(int16_t v)
Creates a new s16 value.
Definition: component/val.hh:571
bool is_u16() const
Returns whether this value is a u16.
Definition: component/val.hh:720
uint64_t get_u64() const
Returns the u64 value, only valid if is_u64().
Definition: component/val.hh:759
bool is_f32() const
Returns whether this value is a f32.
Definition: component/val.hh:774
bool is_list() const
Returns whether this value is a list.
Definition: component/val.hh:801
bool is_u64() const
Returns whether this value is a u64.
Definition: component/val.hh:756
bool is_s8() const
Returns whether this value is a s8.
Definition: component/val.hh:711
uint32_t get_u32() const
Returns the u32 value, only valid if is_u32().
Definition: component/val.hh:741
Val(int64_t v)
Creates a new s64 value.
Definition: component/val.hh:595
bool is_variant() const
Returns whether this value is a variant.
Definition: component/val.hh:828
int8_t get_s8() const
Returns the s8 value, only valid if is_s8().
Definition: component/val.hh:714
bool is_u32() const
Returns whether this value is a u32.
Definition: component/val.hh:738
bool is_enum() const
Returns whether this value is an enum.
Definition: component/val.hh:846
const List & get_list() const
Returns the list value, only valid if is_list().
Definition: component/val.hh:804
bool is_tuple() const
Returns whether this value is a tuple.
Definition: component/val.hh:819
uint16_t get_u16() const
Returns the u16 value, only valid if is_u16().
Definition: component/val.hh:723
bool is_resource() const
Returns whether this value is a resource.
Definition: component/val.hh:873
Val(uint32_t v)
Creates a new u32 value.
Definition: component/val.hh:577
const Tuple & get_tuple() const
Returns the tuple value, only valid if is_tuple().
Definition: component/val.hh:822
Class representing a component model variant value.
Definition: component/val.hh:219
Variant(Raw &&capi)
Definition: component/val.hh:222
const Val * value() const
Returns the optional payload value associated with this variant value.
Definition: component/val.hh:258
std::string_view discriminant() const
Returns the name of the discriminant of this value.
Definition: component/val.hh:253
static const Variant * from_capi(const Raw *capi)
Definition: component/val.hh:222
Class representing a component model option value.
Definition: component/val.hh:262
const Val * value() const
Returns the optional payload value associated with this option.
Definition: component/val.hh:289
static const WitOption * from_capi(const Raw *capi)
Definition: component/val.hh:265
WitOption(Raw &&capi)
Definition: component/val.hh:265
Class representing a component model result value.
Definition: component/val.hh:293
WitResult(Raw &&capi)
Definition: component/val.hh:296
const Val * payload() const
Returns the optional payload value associated with this result.
Definition: component/val.hh:330
bool is_ok() const
Returns whether this result is the ok variant.
Definition: component/val.hh:327
static WitResult ok(std::optional< Val > val)
Constructs a new result value with the ok variant.
Definition: component/val.hh:944
static const WitResult * from_capi(const Raw *capi)
Definition: component/val.hh:296
static WitResult err(std::optional< Val > val)
Constructs a new result value with the err variant.
Definition: component/val.hh:955
#define WASMTIME_COMPONENT_U8
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a u8.
Definition: component/val.h:211
#define WASMTIME_COMPONENT_U16
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a u16.
Definition: component/val.h:217
WASM_API_EXTERN void wasmtime_component_vallist_copy(wasmtime_component_vallist_t *dst, const wasmtime_component_vallist_t *src)
Copy src to dst.
#define WASMTIME_COMPONENT_ENUM
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a enum.
Definition: component/val.h:256
#define WASMTIME_COMPONENT_CHAR
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a char.
Definition: component/val.h:238
#define WASMTIME_COMPONENT_RESOURCE
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a resource.
Definition: component/val.h:268
struct wasmtime_component_resource_host wasmtime_component_resource_host_t
Represents a host-defined component resource.
Definition: component/val.h:116
#define WASMTIME_COMPONENT_RESULT
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a result.
Definition: component/val.h:262
#define WASMTIME_COMPONENT_S8
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a s8.
Definition: component/val.h:208
WASM_API_EXTERN void wasmtime_component_vallist_delete(wasmtime_component_vallist_t *value)
Delete value.
WASM_API_EXTERN bool wasmtime_component_resource_any_owned(const wasmtime_component_resource_any_t *resource)
Returns whether this resource is an own, or a borrow in the component model.
#define WASMTIME_COMPONENT_BOOL
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a bool.
Definition: component/val.h:205
#define WASMTIME_COMPONENT_LIST
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a list.
Definition: component/val.h:244
WASM_API_EXTERN void wasmtime_component_valmap_copy(wasmtime_component_valmap_t *dst, const wasmtime_component_valmap_t *src)
Copy src to dst.
#define WASMTIME_COMPONENT_RECORD
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a record.
Definition: component/val.h:247
WASM_API_EXTERN void wasmtime_component_val_clone(const wasmtime_component_val_t *src, wasmtime_component_val_t *dst)
Performs a deep copy of the provided src, storing the results into dst.
WASM_API_EXTERN void wasmtime_component_vallist_new_uninit(wasmtime_component_vallist_t *out, size_t size)
Create a vec with length size.
#define WASMTIME_COMPONENT_MAP
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a map.
Definition: component/val.h:271
#define WASMTIME_COMPONENT_U64
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a u64.
Definition: component/val.h:229
WASM_API_EXTERN void wasmtime_component_valflags_new_uninit(wasmtime_component_valflags_t *out, size_t size)
Create a vec with length size.
#define WASMTIME_COMPONENT_S64
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a s64.
Definition: component/val.h:226
WASM_API_EXTERN bool wasmtime_component_resource_host_owned(const wasmtime_component_resource_host_t *resource)
Returns whether this host-defined resource is an own or a borrow in the component model.
struct wasmtime_component_resource_any wasmtime_component_resource_any_t
Represents a component resource which can be either guest-owned or host-owned.
Definition: component/val.h:40
#define WASMTIME_COMPONENT_U32
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a u32.
Definition: component/val.h:223
WASM_API_EXTERN wasmtime_component_resource_type_t * wasmtime_component_resource_any_type(const wasmtime_component_resource_any_t *resource)
Gets the type of a component resource.
WASM_API_EXTERN void wasmtime_component_valflags_delete(wasmtime_component_valflags_t *value)
Delete value.
#define WASMTIME_COMPONENT_VARIANT
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a variant.
Definition: component/val.h:253
#define WASMTIME_COMPONENT_TUPLE
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a tuple.
Definition: component/val.h:250
WASM_API_EXTERN void wasmtime_component_valrecord_new_uninit(wasmtime_component_valrecord_t *out, size_t size)
Create a vec with length size.
WASM_API_EXTERN void wasmtime_component_valmap_new_uninit(wasmtime_component_valmap_t *out, size_t size)
Create a vec with length size.
#define WASMTIME_COMPONENT_S16
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a s16.
Definition: component/val.h:214
WASM_API_EXTERN void wasmtime_component_valrecord_delete(wasmtime_component_valrecord_t *value)
Delete value.
WASM_API_EXTERN wasmtime_error_t * wasmtime_component_resource_any_to_host(wasmtime_context_t *ctx, const wasmtime_component_resource_any_t *resource, wasmtime_component_resource_host_t **ret)
Attempts to convert a wasmtime_component_resource_any_t into a wasmtime_component_resource_host_t.
WASM_API_EXTERN wasmtime_component_val_t * wasmtime_component_val_new(wasmtime_component_val_t *val)
Allocates a new wasmtime_component_val_t on the heap, initializing it with the contents of val.
WASM_API_EXTERN void wasmtime_component_val_free(wasmtime_component_val_t *ptr)
Deallocates the heap-allocated value at ptr.
#define WASMTIME_COMPONENT_OPTION
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a option.
Definition: component/val.h:259
WASM_API_EXTERN wasmtime_error_t * wasmtime_component_resource_any_drop(wasmtime_context_t *ctx, const wasmtime_component_resource_any_t *resource)
Drops a component resource.
#define WASMTIME_COMPONENT_FLAGS
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is flags.
Definition: component/val.h:265
WASM_API_EXTERN void wasmtime_component_valflags_copy(wasmtime_component_valflags_t *dst, const wasmtime_component_valflags_t *src)
Copy src to dst.
#define WASMTIME_COMPONENT_S32
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a s32.
Definition: component/val.h:220
#define WASMTIME_COMPONENT_F32
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a f32.
Definition: component/val.h:232
WASM_API_EXTERN void wasmtime_component_valrecord_copy(wasmtime_component_valrecord_t *dst, const wasmtime_component_valrecord_t *src)
Copy src to dst.
WASM_API_EXTERN wasmtime_component_resource_host_t * wasmtime_component_resource_host_new(bool owned, uint32_t rep, uint32_t ty)
Creates a new host-defined component resource.
WASM_API_EXTERN uint32_t wasmtime_component_resource_host_type(const wasmtime_component_resource_host_t *resource)
Gets the "type" of a host-defined component resource.
WASM_API_EXTERN void wasmtime_component_valmap_delete(wasmtime_component_valmap_t *value)
Delete value.
#define WASMTIME_COMPONENT_F64
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a f64.
Definition: component/val.h:235
WASM_API_EXTERN uint32_t wasmtime_component_resource_host_rep(const wasmtime_component_resource_host_t *resource)
Gets the "rep" of a host-defined component resource.
WASM_API_EXTERN void wasmtime_component_valtuple_delete(wasmtime_component_valtuple_t *value)
Delete value.
WASM_API_EXTERN void wasmtime_component_val_delete(wasmtime_component_val_t *value)
Deallocates any memory owned by value.
WASM_API_EXTERN void wasmtime_component_valtuple_new_uninit(wasmtime_component_valtuple_t *out, size_t size)
Create a vec with length size.
#define WASMTIME_COMPONENT_STRING
Value of wasmtime_component_valkind_t meaning that wasmtime_component_val_t is a string.
Definition: component/val.h:241
WASM_API_EXTERN wasmtime_error_t * wasmtime_component_resource_host_to_any(wasmtime_context_t *ctx, const wasmtime_component_resource_host_t *resource, wasmtime_component_resource_any_t **ret)
Same as wasmtime_component_resource_any_to_host except for converting the other way around.
WASM_API_EXTERN void wasmtime_component_valtuple_copy(wasmtime_component_valtuple_t *dst, const wasmtime_component_valtuple_t *src)
Copy src to dst.
#define VAL_REPR(name, raw_type)
Definition: component/val.hh:39
const Val * val_from_capi(const wasmtime_component_val_t *capi)
Definition: component/val.hh:30
Build-time defines for how the C API was built.
struct wasmtime_component_resource_type wasmtime_component_resource_type_t
Represents the type of a component resource.
Definition: resource.h:21
A list of bytes.
Definition: wasm.h:102
size_t size
Length of this vector.
Definition: wasm.h:102
wasm_byte_t * data
Pointer to the base of this vector.
Definition: wasm.h:102
Represents possible runtime values which a component function can either consume or produce.
Definition: component/val.h:383
wasmtime_component_valunion_t of
Value of type kind.
Definition: component/val.h:387
wasmtime_component_valkind_t kind
The type discriminant.
Definition: component/val.h:385
A vec of a wasm_name_t
Definition: component/val.h:302
wasm_name_t * data
Definition: component/val.h:302
size_t size
Definition: component/val.h:302
A vec of a struct wasmtime_component_val
Definition: component/val.h:298
struct wasmtime_component_val * data
Definition: component/val.h:298
size_t size
Definition: component/val.h:298
A pair of a key and a value that represents one entry in a value with kind WASMTIME_COMPONENT_MAP.
Definition: component/val.h:401
wasmtime_component_val_t key
The key of this entry.
Definition: component/val.h:403
wasmtime_component_val_t value
The value of this entry.
Definition: component/val.h:405
A vec of a struct wasmtime_component_valmap_entry
Definition: component/val.h:303
size_t size
Definition: component/val.h:303
struct wasmtime_component_valmap_entry * data
Definition: component/val.h:303
A pair of a name and a value that represents one entry in a value with kind WASMTIME_COMPONENT_RECORD...
Definition: component/val.h:392
wasmtime_component_val_t val
The value of this entry.
Definition: component/val.h:396
wasm_name_t name
The name of this entry.
Definition: component/val.h:394
A vec of a struct wasmtime_component_valrecord_entry
Definition: component/val.h:300
struct wasmtime_component_valrecord_entry * data
Definition: component/val.h:300
size_t size
Definition: component/val.h:300
Represents a result type.
Definition: component/val.h:316
bool is_ok
The discriminant of the result.
Definition: component/val.h:318
struct wasmtime_component_val * val
Definition: component/val.h:321
A vec of a struct wasmtime_component_val
Definition: component/val.h:301
size_t size
Definition: component/val.h:301
struct wasmtime_component_val * data
Definition: component/val.h:301
Represents a variant type.
Definition: component/val.h:308
struct wasmtime_component_val * val
The payload of the variant.
Definition: component/val.h:312
wasm_name_t discriminant
The discriminant of the variant.
Definition: component/val.h:310
Errors generated by Wasmtime.
uint16_t u16
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_U16.
Definition: component/val.h:336
wasm_name_t string
Definition: component/val.h:353
wasmtime_component_valmap_t map
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_MAP.
Definition: component/val.h:375
int64_t s64
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_S64.
Definition: component/val.h:342
bool boolean
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_BOOL.
Definition: component/val.h:328
wasmtime_component_resource_any_t * resource
Definition: component/val.h:378
wasmtime_component_valvariant_t variant
Definition: component/val.h:363
uint32_t u32
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_U32.
Definition: component/val.h:340
wasmtime_component_vallist_t list
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_LIST.
Definition: component/val.h:355
int32_t s32
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_S32.
Definition: component/val.h:338
float32_t f32
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_F32.
Definition: component/val.h:346
float64_t f64
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_F64.
Definition: component/val.h:348
struct wasmtime_component_val * option
Definition: component/val.h:368
int16_t s16
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_S16.
Definition: component/val.h:334
uint8_t u8
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_U8.
Definition: component/val.h:332
wasmtime_component_valrecord_t record
Definition: component/val.h:358
uint64_t u64
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_U64.
Definition: component/val.h:344
wasmtime_component_valresult_t result
Definition: component/val.h:371
wasmtime_component_valflags_t flags
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_FLAGS.
Definition: component/val.h:373
wasmtime_component_valtuple_t tuple
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_TUPLE.
Definition: component/val.h:360
int8_t s8
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_S8.
Definition: component/val.h:330
wasm_name_t enumeration
Field used if wasmtime_component_val_t::kind is WASMTIME_COMPONENT_ENUM.
Definition: component/val.h:365
void wasm_byte_vec_new(wasm_byte_vec_t *out, size_t, wasm_byte_t const[])
Copies the specified data into a new byte vector.
#define wasm_name_new
Convenience alias.
Definition: wasm.h:107
#define wasm_name_copy
Convenience alias.
Definition: wasm.h:110
#define wasm_name_delete
Convenience alias.
Definition: wasm.h:111