strncpy(arrptr, key, key_length);
found_matching:
- return bh_pointer_add(arrptr, -(sizeof(u16) + elemsize));
+ return bh_pointer_add(arrptr, -(i32)(sizeof(u16) + elemsize));
}
b32 bh__table_has(bh__table *table, i32 elemsize, char *key) {
key_length = *(u16 *) arrptr;
arrptr = bh_pointer_add(arrptr, sizeof(u16));
if (strncmp(key, (char *) arrptr, key_length) == 0) {
- return bh_pointer_add(arrptr, -(sizeof(u16) + elemsize));
+ return bh_pointer_add(arrptr, -(i32)(sizeof(u16) + elemsize));
}
arrptr = bh_pointer_add(arrptr, key_length);
}
#ifndef HEARTBREAK_H
#define HEARTBREAK_H
+#define GLFW_DLL
+
#include "bh.h"
#include "wasm.h"
#include "wasmer.h"
# define INTERNAL_GET_ARG_COUNT_PRIVATE(_0, _1_, _2_, _3_, _4_, _5_, _6_, _7_, _8_, _9_, _10_, _11_, _12_, _13_, _14_, _15_, _16_, _17_, _18_, _19_, _20_, _21_, _22_, _23_, _24_, _25_, _26_, _27_, _28_, _29_, _30_, _31_, _32_, _33_, _34_, _35_, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, count, ...) count
#endif
-#define _VALS(...) ((WasmValkindBuffer) { GET_ARG_COUNT(__VA_ARGS__), __VA_ARGS__ })
+#define _VALS(...) { GET_ARG_COUNT(__VA_ARGS__), __VA_ARGS__ }
-typedef struct {
+typedef struct WasmValkindBuffer {
u32 count;
wasm_valkind_t types[20];
} WasmValkindBuffer;
-typedef struct {
+typedef struct WasmFuncDefinition {
char* name;
wasm_func_callback_t func;
#define HEARTBREAK_IMPORT_NAME(m, n) STRINGIFY1(m) "_" #n
#define HEARTBREAK_DEF(name, params_types, result_types) \
- wasm_trap_t* HEARTBREAK_FUNC_NAME(HEARTBREAK_MODULE_NAME, name)(const wasm_val_vec_t* params, wasm_val_vec_t* results); \
- static WasmValkindBuffer HEARTBREAK_PARAM_NAME(HEARTBREAK_MODULE_NAME, name) = _VALS params_types; \
- static WasmValkindBuffer HEARTBREAK_RESULT_NAME(HEARTBREAK_MODULE_NAME, name) = _VALS result_types; \
- static WasmFuncDefinition HEARTBREAK_DEF_NAME(HEARTBREAK_MODULE_NAME, name) = (WasmFuncDefinition) { HEARTBREAK_IMPORT_NAME(HEARTBREAK_MODULE_NAME, name), HEARTBREAK_FUNC_NAME(HEARTBREAK_MODULE_NAME, name), & HEARTBREAK_PARAM_NAME(HEARTBREAK_MODULE_NAME, name), & HEARTBREAK_RESULT_NAME(HEARTBREAK_MODULE_NAME, name) }; \
+ static wasm_trap_t* HEARTBREAK_FUNC_NAME(HEARTBREAK_MODULE_NAME, name)(const wasm_val_vec_t* params, wasm_val_vec_t* results); \
+ static struct WasmValkindBuffer HEARTBREAK_PARAM_NAME(HEARTBREAK_MODULE_NAME, name) = _VALS params_types; \
+ static struct WasmValkindBuffer HEARTBREAK_RESULT_NAME(HEARTBREAK_MODULE_NAME, name) = _VALS result_types; \
+ static struct WasmFuncDefinition HEARTBREAK_DEF_NAME(HEARTBREAK_MODULE_NAME, name) = { HEARTBREAK_IMPORT_NAME(HEARTBREAK_MODULE_NAME, name), HEARTBREAK_FUNC_NAME(HEARTBREAK_MODULE_NAME, name), & HEARTBREAK_PARAM_NAME(HEARTBREAK_MODULE_NAME, name), & HEARTBREAK_RESULT_NAME(HEARTBREAK_MODULE_NAME, name) }; \
\
- wasm_trap_t* HEARTBREAK_FUNC_NAME(HEARTBREAK_MODULE_NAME, name)(const wasm_val_vec_t* params, wasm_val_vec_t* results)
+ static wasm_trap_t* HEARTBREAK_FUNC_NAME(HEARTBREAK_MODULE_NAME, name)(const wasm_val_vec_t* params, wasm_val_vec_t* results)
#define HEARTBREAK_FUNC(name) & HEARTBREAK_DEF_NAME(HEARTBREAK_MODULE_NAME, name),
-#define HEARTBREAK_MODULE WasmFuncDefinition *HEARTBREAK_MODULE_NAME_GEN(HEARTBREAK_MODULE_NAME) [] =
+#define HEARTBREAK_MODULE struct WasmFuncDefinition *HEARTBREAK_MODULE_NAME_GEN(HEARTBREAK_MODULE_NAME) [] =
// The Heartbreak modules
extern WasmFuncDefinition* __heartbreak_module_system[];