From d9ab264f81eacc2e6b182b59ca08a291314e875a Mon Sep 17 00:00:00 2001 From: Ilia Demianenko Date: Sat, 15 Jul 2023 15:56:02 -0700 Subject: [PATCH] Bring back exports --- src/main.c | 48 ++++++++++++++++++++++++------------------------ src/orca_app.h | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/main.c b/src/main.c index 1f3a527..de6a055 100644 --- a/src/main.c +++ b/src/main.c @@ -382,9 +382,9 @@ void* orca_runloop(void* user) } //NOTE: Find and type check event handlers. - for(int i=0; iruntime.m3Runtime, desc->name.ptr); @@ -427,7 +427,7 @@ void* orca_runloop(void* user) if(checked) { - app->runtime.eventHandlers[i] = handler; + app->runtime.exports[i] = handler; } else { @@ -455,12 +455,12 @@ void* orca_runloop(void* user) //NOTE: prepare GL surface mg_surface_prepare(app->surface); - IM3Function* eventHandlers = app->runtime.eventHandlers; + IM3Function* exports = app->runtime.exports; //NOTE: call init handler - if(eventHandlers[G_EVENT_START]) + if(exports[G_EXPORT_ON_INIT]) { - M3Result err = m3_Call(eventHandlers[G_EVENT_START], 0, 0); + M3Result err = m3_Call(exports[G_EXPORT_ON_INIT], 0, 0); if(err != NULL) { log_error("runtime error: %s\n", err); @@ -477,13 +477,13 @@ void* orca_runloop(void* user) } } - if(eventHandlers[G_EVENT_FRAME_RESIZE]) + if(exports[G_EXPORT_FRAME_RESIZE]) { mp_rect frame = mg_surface_get_frame(app->surface); u32 width = (u32)frame.w; u32 height = (u32)frame.h; const void* args[2] = {&width, &height}; - m3_Call(eventHandlers[G_EVENT_FRAME_RESIZE], 2, args); + m3_Call(exports[G_EXPORT_FRAME_RESIZE], 2, args); } ui_set_context(&app->debugOverlay.ui); @@ -499,14 +499,14 @@ void* orca_runloop(void* user) ui_process_event(event); } - if(eventHandlers[G_EVENT_RAW_EVENT]) + if(exports[G_EXPORT_RAW_EVENT]) { #ifndef M3_BIG_ENDIAN mp_event* eventPtr = (mp_event*)wasm_memory_offset_to_ptr(&app->runtime.wasmMemory, app->runtime.rawEventOffset); memcpy(eventPtr, event, sizeof(*event)); const void* args[1] = {&app->runtime.rawEventOffset}; - m3_Call(eventHandlers[G_EVENT_RAW_EVENT], 1, args); + m3_Call(exports[G_EXPORT_RAW_EVENT], 1, args); #else log_error("OnRawEvent() is not supported on big endian platforms"); #endif @@ -526,12 +526,12 @@ void* orca_runloop(void* user) // mg_surface_set_frame(app->debugOverlay.surface, frame); - if(eventHandlers[G_EVENT_FRAME_RESIZE]) + if(exports[G_EXPORT_FRAME_RESIZE]) { u32 width = (u32)event->frame.rect.w; u32 height = (u32)event->frame.rect.h; const void* args[2] = {&width, &height}; - m3_Call(eventHandlers[G_EVENT_FRAME_RESIZE], 2, args); + m3_Call(exports[G_EXPORT_FRAME_RESIZE], 2, args); } } break; @@ -539,30 +539,30 @@ void* orca_runloop(void* user) { if(event->key.action == MP_KEY_PRESS) { - if(eventHandlers[G_EVENT_MOUSE_DOWN]) + if(exports[G_EXPORT_MOUSE_DOWN]) { int key = event->key.code; const void* args[1] = {&key}; - m3_Call(eventHandlers[G_EVENT_MOUSE_DOWN], 1, args); + m3_Call(exports[G_EXPORT_MOUSE_DOWN], 1, args); } } else { - if(eventHandlers[G_EVENT_MOUSE_UP]) + if(exports[G_EXPORT_MOUSE_UP]) { int key = event->key.code; const void* args[1] = {&key}; - m3_Call(eventHandlers[G_EVENT_MOUSE_UP], 1, args); + m3_Call(exports[G_EXPORT_MOUSE_UP], 1, args); } } } break; case MP_EVENT_MOUSE_MOVE: { - if(eventHandlers[G_EVENT_MOUSE_MOVE]) + if(exports[G_EXPORT_MOUSE_MOVE]) { const void* args[4] = {&event->move.x, &event->move.y, &event->move.deltaX, &event->move.deltaY}; - m3_Call(eventHandlers[G_EVENT_MOUSE_MOVE], 4, args); + m3_Call(exports[G_EXPORT_MOUSE_MOVE], 4, args); } } break; @@ -577,18 +577,18 @@ void* orca_runloop(void* user) #endif } - if(eventHandlers[G_EVENT_KEY_DOWN]) + if(exports[G_EXPORT_KEY_DOWN]) { const void* args[1] = {&event->key.code}; - m3_Call(eventHandlers[G_EVENT_KEY_DOWN], 1, args); + m3_Call(exports[G_EXPORT_KEY_DOWN], 1, args); } } else if(event->key.action == MP_KEY_RELEASE) { - if(eventHandlers[G_EVENT_KEY_UP]) + if(exports[G_EXPORT_KEY_UP]) { const void* args[1] = {&event->key.code}; - m3_Call(eventHandlers[G_EVENT_KEY_UP], 1, args); + m3_Call(exports[G_EXPORT_KEY_UP], 1, args); } } } break; @@ -735,10 +735,10 @@ void* orca_runloop(void* user) mg_render(app->debugOverlay.surface, app->debugOverlay.canvas); } - if(eventHandlers[G_EVENT_FRAME_REFRESH]) + if(exports[G_EXPORT_FRAME_REFRESH]) { mg_surface_prepare(app->surface); - m3_Call(eventHandlers[G_EVENT_FRAME_REFRESH], 0, 0); + m3_Call(exports[G_EXPORT_FRAME_REFRESH], 0, 0); } if(app->debugOverlay.show) diff --git a/src/orca_app.h b/src/orca_app.h index bca3343..f6d74b6 100644 --- a/src/orca_app.h +++ b/src/orca_app.h @@ -14,41 +14,41 @@ #include"m3_env.h" #include"m3_compile.h" -#define G_EVENTS(X) \ - X(G_EVENT_START, "OnInit", "", "") \ - X(G_EVENT_MOUSE_DOWN, "OnMouseDown", "", "i") \ - X(G_EVENT_MOUSE_UP, "OnMouseUp", "", "i") \ - X(G_EVENT_MOUSE_ENTER, "OnMouseEnter", "", "") \ - X(G_EVENT_MOUSE_LEAVE, "OnMouseLeave", "", "") \ - X(G_EVENT_MOUSE_MOVE, "OnMouseMove", "", "ffff") \ - X(G_EVENT_MOUSE_WHEEL, "OnMouseWheel", "", "ff") \ - X(G_EVENT_KEY_DOWN, "OnKeyDown", "", "i") \ - X(G_EVENT_KEY_UP, "OnKeyUp", "", "i") \ - X(G_EVENT_FRAME_REFRESH, "OnFrameRefresh", "", "") \ - X(G_EVENT_FRAME_RESIZE, "OnFrameResize", "", "ii") \ - X(G_EVENT_RAW_EVENT, "OnRawEvent", "", "i") \ +#define G_EXPORTS(X) \ + X(G_EXPORT_ON_INIT, "OnInit", "", "") \ + X(G_EXPORT_MOUSE_DOWN, "OnMouseDown", "", "i") \ + X(G_EXPORT_MOUSE_UP, "OnMouseUp", "", "i") \ + X(G_EXPORT_MOUSE_ENTER, "OnMouseEnter", "", "") \ + X(G_EXPORT_MOUSE_LEAVE, "OnMouseLeave", "", "") \ + X(G_EXPORT_MOUSE_MOVE, "OnMouseMove", "", "ffff") \ + X(G_EXPORT_MOUSE_WHEEL, "OnMouseWheel", "", "ff") \ + X(G_EXPORT_KEY_DOWN, "OnKeyDown", "", "i") \ + X(G_EXPORT_KEY_UP, "OnKeyUp", "", "i") \ + X(G_EXPORT_FRAME_REFRESH, "OnFrameRefresh", "", "") \ + X(G_EXPORT_FRAME_RESIZE, "OnFrameResize", "", "ii") \ + X(G_EXPORT_RAW_EVENT, "OnRawEvent", "", "i") \ typedef enum { - #define G_EVENT_KIND(kind, ...) kind, - G_EVENTS(G_EVENT_KIND) - G_EVENT_COUNT -} guest_event_kind; + #define G_EXPORT_KIND(kind, ...) kind, + G_EXPORTS(G_EXPORT_KIND) + G_EXPORT_COUNT +} guest_export_kind; -typedef struct g_event_handler_desc +typedef struct g_export_desc { str8 name; str8 retTags; str8 argTags; -} g_event_handler_desc; +} g_export_desc; -const g_event_handler_desc G_EVENT_HANDLER_DESC[] = { +const g_export_desc G_EXPORT_DESC[] = { #define STR8LIT(s) {sizeof(s)-1, s} //NOTE: msvc doesn't accept STR8(s) as compile-time constant... - #define G_EVENT_HANDLER_DESC_ENTRY(kind, name, rets, args) {STR8LIT(name), STR8LIT(rets), STR8LIT(args)}, + #define G_EXPORT_DESC_ENTRY(kind, name, rets, args) {STR8LIT(name), STR8LIT(rets), STR8LIT(args)}, - G_EVENTS(G_EVENT_HANDLER_DESC_ENTRY) + G_EXPORTS(G_EXPORT_DESC_ENTRY) - #undef G_EVENT_HANDLER_DESC_ENTRY + #undef G_EXPORT_DESC_ENTRY #undef STR8LIT }; @@ -69,7 +69,7 @@ typedef struct orca_runtime IM3Environment m3Env; IM3Runtime m3Runtime; IM3Module m3Module; - IM3Function eventHandlers[G_EVENT_COUNT]; + IM3Function exports[G_EXPORT_COUNT]; u32 rawEventOffset; } orca_runtime;