pointers everywhere!
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 17 Nov 2021 04:24:18 +0000 (22:24 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 17 Nov 2021 04:24:18 +0000 (22:24 -0600)
include/heartbreak.h
src/heartbreak.c
src/heartbreak_graphics.c
src/heartbreak_input.c
src/heartbreak_system.c
src/heartbreak_window.c

index f9accae7ab682af8a4573f5b25a3a5e01a46721b..b5b39e590f7c8a57f6e015e6c05b7841470c0180 100644 (file)
@@ -37,7 +37,7 @@ extern ImmediateRenderer renderer;
 #   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__, 0 })
+#define _VALS(...) ((WasmValkindBuffer) { GET_ARG_COUNT(__VA_ARGS__), __VA_ARGS__ })
 
 typedef struct {
     u32 count;
@@ -58,9 +58,9 @@ typedef struct {
 #define HEARTBREAK_MODULE_NAME_GEN(m) CONCAT2(__heartbreak_module, m)
 #define HEARTBREAK_FUNC_NAME(m, n) CONCAT3(__heartbreak_internal, m, n)
 #define HEARTBREAK_DEF_NAME(m, n) CONCAT3(__heartbreak_internal_def, m, n)
-#define HEARTBREAK_IMPORT_NAME(m, n) STRINGIFY1(m) "_" #n
 #define HEARTBREAK_PARAM_NAME(m, n) CONCAT3(__heartbreak_internal_param_buffer, m, n)
 #define HEARTBREAK_RESULT_NAME(m, n) CONCAT3(__heartbreak_internal_result_buffer, m, n)
+#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); \
@@ -70,13 +70,13 @@ typedef struct {
     \
     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_FUNC(name) HEARTBREAK_DEF_NAME(HEARTBREAK_MODULE_NAME, name),
+#define HEARTBREAK_MODULE WasmFuncDefinition *HEARTBREAK_MODULE_NAME_GEN(HEARTBREAK_MODULE_NAME) [] =
 
 // The Heartbreak modules
-extern WasmFuncDefinition __heartbreak_module_system[];
-extern WasmFuncDefinition __heartbreak_module_graphics[];
-extern WasmFuncDefinition __heartbreak_module_input[];
-extern WasmFuncDefinition __heartbreak_module_window[];
+extern WasmFuncDefinition* __heartbreak_module_system[];
+extern WasmFuncDefinition* __heartbreak_module_graphics[];
+extern WasmFuncDefinition* __heartbreak_module_input[];
+extern WasmFuncDefinition* __heartbreak_module_window[];
 
 #endif
index fa5a21c0efaaad984e2f421b2c4b98de4a93a7bc..a4bdb00c9e81e112853a56fc9ce56bb050974f49 100644 (file)
@@ -24,32 +24,32 @@ wasm_instance_t* wasm_instance;
 wasm_memory_t*   wasm_memory;
 wasm_table_t*    wasm_func_table;
 
-void build_heartbreak_imports(WasmFuncDefinition** out_wfds, i32* out_count) {
-    static WasmFuncDefinition* modules[] = {
+void build_heartbreak_imports(WasmFuncDefinition*** out_wfds, i32* out_count) {
+    static WasmFuncDefinition** modules[] = {
         __heartbreak_module_system,
         __heartbreak_module_graphics,
         __heartbreak_module_input,
         __heartbreak_module_window,
     };
 
-    i32 module_count = sizeof(modules) / sizeof(WasmFuncDefinition*);
+    i32 module_count = sizeof(modules) / sizeof(WasmFuncDefinition**);
 
     i32 count = 0;
     fori (i, 0, module_count) {
-        WasmFuncDefinition* wfd = modules[i];
-        while (wfd->name != NULL) {
+        WasmFuncDefinition** wfd = modules[i];
+        while (*wfd != NULL) {
             count += 1;
             wfd += 1;
         }
     }
 
     bh_allocator heap_allocator = bh_heap_allocator();
-    WasmFuncDefinition* imports = bh_alloc(heap_allocator, sizeof(WasmFuncDefinition) * count);
+    WasmFuncDefinition** imports = bh_alloc(heap_allocator, sizeof(WasmFuncDefinition*) * count);
 
     i32 k = 0;
     fori (i, 0, module_count) {
-        WasmFuncDefinition* wfd = modules[i];
-        while (wfd->name != NULL) {
+        WasmFuncDefinition** wfd = modules[i];
+        while (*wfd != NULL) {
             imports[k++] = *wfd;
             wfd += 1;
         }
@@ -101,7 +101,7 @@ void run_wasm_file(bh_buffer wasm_bytes) {
     wasmer_named_extern_vec_t wasi_imports;
     wasi_get_unordered_imports(store, wasm_module, wasi_env, &wasi_imports);
 
-    WasmFuncDefinition* defs;
+    WasmFuncDefinition** defs;
     i32 defs_count;
     build_heartbreak_imports(&defs, &defs_count);
 
@@ -134,18 +134,18 @@ void run_wasm_file(bh_buffer wasm_bytes) {
         if (!wasm_name_equals(&heartbreak_name, module_name)) goto bad_import;
 
         fori (j, 0, (i32) defs_count) {
-            if (wasm_name_equals_string(import_name, defs[j].name)) {
+            if (wasm_name_equals_string(import_name, defs[j]->name)) {
                 wasm_valtype_vec_t wasm_params;
-                wasm_valtype_vec_new_uninitialized(&wasm_params, defs[j].params->count);
-                fori (k, 0, defs[j].params->count) wasm_params.data[k] = wasm_valtype_new(defs[j].params->types[k]);
+                wasm_valtype_vec_new_uninitialized(&wasm_params, defs[j]->params->count);
+                fori (k, 0, defs[j]->params->count) wasm_params.data[k] = wasm_valtype_new(defs[j]->params->types[k]);
 
                 wasm_valtype_vec_t wasm_results;
-                wasm_valtype_vec_new_uninitialized(&wasm_results, defs[j].results->count);
-                fori (k, 0, defs[j].results->count) wasm_results.data[k] = wasm_valtype_new(defs[j].results->types[k]);
+                wasm_valtype_vec_new_uninitialized(&wasm_results, defs[j]->results->count);
+                fori (k, 0, defs[j]->results->count) wasm_results.data[k] = wasm_valtype_new(defs[j]->results->types[k]);
 
                 wasm_functype_t* wasm_functype = wasm_functype_new(&wasm_params, &wasm_results);
 
-                wasm_func_t* wasm_func = wasm_func_new(store, wasm_functype, defs[j].func);
+                wasm_func_t* wasm_func = wasm_func_new(store, wasm_functype, defs[j]->func);
                 import = wasm_func_as_extern(wasm_func);
                 goto import_found;
             }
index 9563ab33a0ac0e56b4bbc99db4ad6478cfbfa865..c7718abcefe15663397079f68152336533cdbe2f 100644 (file)
@@ -467,5 +467,5 @@ HEARTBREAK_MODULE {
     HEARTBREAK_FUNC(font_set)
     HEARTBREAK_FUNC(get_text_width)
 
-    { NULL }
+    NULL
 };
index 19f35606adc9f283db94de42d70477443e1c39ec..3707768c89f9ea480dd957f670962844e94618be 100644 (file)
@@ -39,5 +39,5 @@ HEARTBREAK_MODULE {
     HEARTBREAK_FUNC(mouse_get_y)
     HEARTBREAK_FUNC(mouse_is_down)
 
-    { NULL }
+    NULL
 };
index ac37ade1084e3db5f834d7d254564326f4dd98bd..829d355113fb3a8aad2831ac14f0938c45baa951 100644 (file)
@@ -177,5 +177,5 @@ HEARTBREAK_MODULE {
     HEARTBREAK_FUNC(destroy)
     HEARTBREAK_FUNC(end_frame)
 
-    { NULL }
+    NULL
 };
index 385bf6d385217107587e5f1ee8a68ae7ec00f40d..722c08f87ab0a4d8daf542a381226d7f84be17de 100644 (file)
@@ -43,5 +43,5 @@ HEARTBREAK_MODULE {
     HEARTBREAK_FUNC(get_property)
     HEARTBREAK_FUNC(set_property)
 
-    { NULL }
+    NULL
 };