From 09cf30cf45e054ee90f2c35e0fe1e7fc33d056a5 Mon Sep 17 00:00:00 2001 From: Martin Fouilleul Date: Thu, 14 Sep 2023 11:54:38 +0200 Subject: [PATCH] Consistency/intent - pass arenas as first parameters (exception being texbox widget, where we always pass tag as first parameter) - pass lists by value when there's no modification (eg oc_list_for etc...) - fix sketches, use oc_arena_scope as value. --- sketches/canvas/main.c | 10 ++--- sketches/image/main.c | 2 +- sketches/keyboard/main.c | 2 +- sketches/multi_surface/main.c | 2 +- sketches/perf_text/main.c | 12 +++--- sketches/render_thread/main.c | 2 +- sketches/simpleWindow/main.c | 2 +- sketches/smiley/main.c | 4 +- sketches/smooth_resize/main.c | 2 +- sketches/tiger/main.c | 4 +- sketches/triangleGL/main.c | 2 +- sketches/triangleGLES/main.c | 2 +- sketches/triangleMetal/main.m | 2 +- src/app/app.c | 2 +- src/app/osx_app.m | 10 ++--- src/app/win32_app.c | 12 +++--- src/graphics/graphics.h | 2 +- src/graphics/graphics_common.c | 8 ++-- src/platform/platform_io_internal.c | 8 ++-- src/runtime.c | 8 ++-- src/runtime_clipboard.c | 2 +- src/runtime_clipboard.h | 4 +- src/runtime_io.c | 2 +- src/ui/input_state.c | 10 ++--- src/ui/input_state.h | 6 +-- src/ui/ui.c | 62 ++++++++++++++--------------- src/util/lists.h | 37 ++++++----------- src/util/memory.c | 10 ++--- src/util/strings.c | 38 +++++++++--------- tests/file_dialog/main.c | 4 +- tests/file_open_dialog/.gitignore | 1 - tests/file_open_dialog/build.bat | 5 --- tests/file_open_dialog/build.sh | 18 --------- tests/file_open_dialog/main.c | 39 ------------------ tests/file_open_dialog/test.txt | 1 - 35 files changed, 131 insertions(+), 206 deletions(-) delete mode 100644 tests/file_open_dialog/.gitignore delete mode 100644 tests/file_open_dialog/build.bat delete mode 100755 tests/file_open_dialog/build.sh delete mode 100644 tests/file_open_dialog/main.c delete mode 100644 tests/file_open_dialog/test.txt diff --git a/sketches/canvas/main.c b/sketches/canvas/main.c index bac0cb5..e4b6565 100644 --- a/sketches/canvas/main.c +++ b/sketches/canvas/main.c @@ -51,7 +51,7 @@ int main() while(!oc_should_quit()) { f64 startTime = oc_clock_time(OC_CLOCK_MONOTONIC); - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_pump_events(0); oc_event* event = 0; @@ -69,19 +69,19 @@ int main() { if(event->key.action == OC_KEY_PRESS) { - if(event->key.code == OC_KEY_LEFT) + if(event->key.keyCode == OC_KEY_LEFT) { x -= 1; } - if(event->key.code == OC_KEY_RIGHT) + if(event->key.keyCode == OC_KEY_RIGHT) { x += 1; } - if(event->key.code == OC_KEY_UP) + if(event->key.keyCode == OC_KEY_UP) { y -= 1; } - if(event->key.code == OC_KEY_DOWN) + if(event->key.keyCode == OC_KEY_DOWN) { y += 1; } diff --git a/sketches/image/main.c b/sketches/image/main.c index cfa72eb..9ca9a7e 100644 --- a/sketches/image/main.c +++ b/sketches/image/main.c @@ -42,7 +42,7 @@ int main() } //NOTE: create image - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_str8 imagePath = oc_path_executable_relative(scratch.arena, OC_STR8("../../resources/triceratops.png")); oc_image image = oc_image_create_from_file(surface, imagePath, false); diff --git a/sketches/keyboard/main.c b/sketches/keyboard/main.c index 7f77a50..c1c2fd0 100644 --- a/sketches/keyboard/main.c +++ b/sketches/keyboard/main.c @@ -23,7 +23,7 @@ int main() while(!oc_should_quit()) { - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_pump_events(0); oc_event* event = 0; while((event = oc_next_event(scratch.arena)) != 0) diff --git a/sketches/multi_surface/main.c b/sketches/multi_surface/main.c index f724023..3e8c7d9 100644 --- a/sketches/multi_surface/main.c +++ b/sketches/multi_surface/main.c @@ -58,7 +58,7 @@ int main() while(!oc_should_quit()) { - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); f64 startTime = oc_clock_time(OC_CLOCK_MONOTONIC); oc_pump_events(0); diff --git a/sketches/perf_text/main.c b/sketches/perf_text/main.c index cc967ed..822245c 100644 --- a/sketches/perf_text/main.c +++ b/sketches/perf_text/main.c @@ -64,8 +64,8 @@ static const char* TEST_STRING = oc_font create_font(const char* path) { //NOTE(martin): create font - oc_arena_scope* scratch = oc_scratch_begin() - oc_str8 fontPath = oc_path_executable_relative(scratch.arena, OC_STR8(path)); + oc_arena_scope scratch = oc_scratch_begin(); + oc_str8 fontPath = oc_path_executable_relative(scratch.arena, OC_STR8(path)); char* fontPathCString = oc_str8_to_cstring(scratch.arena, fontPath); FILE* fontFile = fopen(fontPathCString, "r"); @@ -169,13 +169,13 @@ int main() while(!oc_should_quit()) { f64 startFrameTime = oc_clock_time(OC_CLOCK_MONOTONIC); - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_pump_events(0); oc_event* event = 0; while((event = oc_next_event(scratch.arena)) != 0) { - oc_input_process_event(&inputState, event); + oc_input_process_event(&inputState, scratch.arena, event); switch(event->type) { @@ -187,7 +187,7 @@ int main() case OC_EVENT_MOUSE_BUTTON: { - if(event->key.code == OC_MOUSE_LEFT) + if(event->key.keyCode == OC_MOUSE_LEFT) { if(event->key.action == OC_KEY_PRESS) { @@ -220,7 +220,7 @@ int main() case OC_EVENT_KEYBOARD_KEY: { - if(event->key.code == OC_KEY_SPACE && event->key.action == OC_KEY_PRESS) + if(event->key.keyCode == OC_KEY_SPACE && event->key.action == OC_KEY_PRESS) { fontIndex = (fontIndex + 1) % FONT_COUNT; } diff --git a/sketches/render_thread/main.c b/sketches/render_thread/main.c index 6a8f087..055bda2 100644 --- a/sketches/render_thread/main.c +++ b/sketches/render_thread/main.c @@ -18,7 +18,7 @@ i32 render_thread(void* user) { while(!oc_should_quit()) { - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_event* event = 0; while((event = oc_next_event(scratch.arena)) != 0) diff --git a/sketches/simpleWindow/main.c b/sketches/simpleWindow/main.c index 3839d0b..9ca76f4 100644 --- a/sketches/simpleWindow/main.c +++ b/sketches/simpleWindow/main.c @@ -25,7 +25,7 @@ int main() while(!oc_should_quit()) { - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_pump_events(0); oc_event* event = 0; while((event = oc_next_event(scratch.arena)) != 0) diff --git a/sketches/smiley/main.c b/sketches/smiley/main.c index 2b5ce76..5d5f614 100644 --- a/sketches/smiley/main.c +++ b/sketches/smiley/main.c @@ -18,7 +18,7 @@ oc_font create_font() { //NOTE(martin): create font - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_str8 fontPath = oc_path_executable_relative(scratch.arena, OC_STR8("../../resources/OpenSansLatinSubset.ttf")); char* fontPathCString = oc_str8_to_cstring(scratch.arena, fontPath); @@ -89,7 +89,7 @@ int main() while(!oc_should_quit()) { f64 startTime = oc_clock_time(OC_CLOCK_MONOTONIC); - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_pump_events(0); oc_event* event = 0; diff --git a/sketches/smooth_resize/main.c b/sketches/smooth_resize/main.c index 861b941..535a4ab 100644 --- a/sketches/smooth_resize/main.c +++ b/sketches/smooth_resize/main.c @@ -167,7 +167,7 @@ i32 render(void* user) while(!oc_should_quit()) { - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_event* event = 0; diff --git a/sketches/tiger/main.c b/sketches/tiger/main.c index ae3fdbf..00cd035 100644 --- a/sketches/tiger/main.c +++ b/sketches/tiger/main.c @@ -20,7 +20,7 @@ oc_font create_font() { //NOTE(martin): create font - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_str8 fontPath = oc_path_executable_relative(scratch.arena, OC_STR8("../../resources/OpenSansLatinSubset.ttf")); char* fontPathCString = oc_str8_to_cstring(scratch.arena, fontPath); @@ -98,7 +98,7 @@ int main() while(!oc_should_quit()) { - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); f64 startTime = oc_clock_time(OC_CLOCK_MONOTONIC); oc_pump_events(0); diff --git a/sketches/triangleGL/main.c b/sketches/triangleGL/main.c index eb65631..4cea9ab 100644 --- a/sketches/triangleGL/main.c +++ b/sketches/triangleGL/main.c @@ -120,7 +120,7 @@ int main() while(!oc_should_quit()) { - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_pump_events(0); oc_event* event = 0; while((event = oc_next_event(scratch.arena)) != 0) diff --git a/sketches/triangleGLES/main.c b/sketches/triangleGLES/main.c index 4d67298..b6db1d6 100644 --- a/sketches/triangleGLES/main.c +++ b/sketches/triangleGLES/main.c @@ -109,7 +109,7 @@ int main() while(!oc_should_quit()) { - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_pump_events(0); oc_event* event = 0; while((event = oc_next_event(scratch.arena)) != 0) diff --git a/sketches/triangleMetal/main.m b/sketches/triangleMetal/main.m index edb1ba6..aeea3cd 100644 --- a/sketches/triangleMetal/main.m +++ b/sketches/triangleMetal/main.m @@ -36,7 +36,7 @@ int main() //NOTE(martin): load the library id device = MTLCreateSystemDefaultDevice(); - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_str8 shaderPath = oc_path_executable_relative(scratch.arena, OC_STR8("triangle_shader.metallib")); const char* shaderPathCString = oc_str8_to_cstring(scratch.arena, shaderPath); diff --git a/src/app/app.c b/src/app/app.c index c01a93c..a704722 100644 --- a/src/app/app.c +++ b/src/app/app.c @@ -109,7 +109,7 @@ void oc_queue_event(oc_event* event) if(event->type == OC_EVENT_PATHDROP) { - oc_list_for(&event->paths.list, elt, oc_str8_elt, listElt) + oc_list_for(event->paths.list, elt, oc_str8_elt, listElt) { oc_str8* path = &elt->string; if(oc_ringbuffer_write_available(queue) < (sizeof(u64) + path->len)) diff --git a/src/app/osx_app.m b/src/app/osx_app.m index fa38cb5..a68518d 100644 --- a/src/app/osx_app.m +++ b/src/app/osx_app.m @@ -1762,7 +1762,7 @@ void oc_osx_update_layers(oc_window_data* window) @autoreleasepool { int z = 0; - oc_list_for(&window->osx.layers, layer, oc_layer, listElt) + oc_list_for(window->osx.layers, layer, oc_layer, listElt) { layer->caLayer.zPosition = (CGFloat)z; z++; @@ -1962,7 +1962,7 @@ oc_str8 oc_open_dialog(oc_arena* arena, { NSMutableArray* fileTypesArray = [NSMutableArray array]; - oc_list_for((oc_list*)&filters.list, elt, oc_str8_elt, listElt) + oc_list_for(filters.list, elt, oc_str8_elt, listElt) { oc_str8 string = elt->string; NSString* filter = [[NSString alloc] initWithBytes:string.ptr length:string.len encoding:NSUTF8StringEncoding]; @@ -2044,7 +2044,7 @@ oc_str8 oc_save_dialog(oc_arena* arena, { NSMutableArray* fileTypesArray = [NSMutableArray array]; - oc_list_for((oc_list*)&filters.list, elt, oc_str8_elt, listElt) + oc_list_for(filters.list, elt, oc_str8_elt, listElt) { oc_str8 string = elt->string; NSString* filter = [[NSString alloc] initWithBytes:string.ptr length:string.len encoding:NSUTF8StringEncoding]; @@ -2184,7 +2184,7 @@ ORCA_API oc_file_dialog_result oc_file_dialog_for_table(oc_arena* arena, oc_file { NSMutableArray* fileTypesArray = [NSMutableArray array]; - oc_list_for((oc_list*)&desc->filters.list, elt, oc_str8_elt, listElt) + oc_list_for(desc->filters.list, elt, oc_str8_elt, listElt) { oc_str8 string = elt->string; NSString* filter = [[NSString alloc] initWithBytes:string.ptr length:string.len encoding:NSUTF8StringEncoding]; @@ -2261,7 +2261,7 @@ int oc_alert_popup(oc_str8 title, NSAlert* alert = [[NSAlert alloc] init]; NSString* string; - oc_list_for_reverse((oc_list*)&options.list, elt, oc_str8_elt, listElt) + oc_list_for_reverse(options.list, elt, oc_str8_elt, listElt) { string = [[NSString alloc] initWithBytes:elt->string.ptr length:elt->string.len encoding:NSUTF8StringEncoding]; [alert addButtonWithTitle:string]; diff --git a/src/app/win32_app.c b/src/app/win32_app.c index 2c41149..94e8886 100644 --- a/src/app/win32_app.c +++ b/src/app/win32_app.c @@ -335,7 +335,7 @@ static void oc_win32_update_child_layers(oc_window_data* window) int clientWidth = (clientRect.right - clientRect.left); int clientHeight = (clientRect.bottom - clientRect.top); - oc_list_for(&window->win32.layers, layer, oc_layer, listElt) + oc_list_for(window->win32.layers, layer, oc_layer, listElt) { SetWindowPos(layer->hWnd, 0, @@ -351,7 +351,7 @@ static void oc_win32_update_child_layers_zorder(oc_window_data* window) { HWND insertAfter = window->win32.hWnd; - oc_list_for(&window->win32.layers, layer, oc_layer, listElt) + oc_list_for(window->win32.layers, layer, oc_layer, listElt) { SetWindowPos(layer->hWnd, insertAfter, @@ -1416,7 +1416,7 @@ oc_str8 oc_open_dialog(oc_arena* arena, COMDLG_FILTERSPEC* filterSpecs = oc_arena_push_array(arena, COMDLG_FILTERSPEC, filters.eltCount); int i = 0; - oc_list_for(&filters.list, elt, oc_str8_elt, listElt) + oc_list_for(filters.list, elt, oc_str8_elt, listElt) { oc_str8_list list = { 0 }; oc_str8_list_push(arena, &list, OC_STR8("*.")); @@ -1504,7 +1504,7 @@ oc_str8 oc_save_dialog(oc_arena* arena, COMDLG_FILTERSPEC* filterSpecs = oc_arena_push_array(arena, COMDLG_FILTERSPEC, filters.eltCount); int i = 0; - oc_list_for(&filters.list, elt, oc_str8_elt, listElt) + oc_list_for(filters.list, elt, oc_str8_elt, listElt) { oc_str8_list list = { 0 }; oc_str8_list_push(arena, &list, OC_STR8("*.")); @@ -1685,7 +1685,7 @@ oc_file_dialog_result oc_file_dialog_for_table(oc_arena* arena, oc_file_dialog_d COMDLG_FILTERSPEC* filterSpecs = oc_arena_push_array(scratch.arena, COMDLG_FILTERSPEC, desc->filters.eltCount); int i = 0; - oc_list_for(&desc->filters.list, elt, oc_str8_elt, listElt) + oc_list_for(desc->filters.list, elt, oc_str8_elt, listElt) { oc_str8_list list = { 0 }; oc_str8_list_push(scratch.arena, &list, OC_STR8("*.")); @@ -1784,7 +1784,7 @@ int oc_alert_popup(oc_str8 title, TASKDIALOG_BUTTON* buttons = oc_arena_push_array(scratch.arena, TASKDIALOG_BUTTON, options.eltCount); int i = 0; - oc_list_for(&options.list, elt, oc_str8_elt, listElt) + oc_list_for(options.list, elt, oc_str8_elt, listElt) { int textWideSize = MultiByteToWideChar(CP_UTF8, 0, elt->string.ptr, elt->string.len, NULL, 0); wchar_t* textWide = oc_arena_push_array(scratch.arena, wchar_t, textWideSize + 1); diff --git a/src/graphics/graphics.h b/src/graphics/graphics.h index 64a854c..df9ed05 100644 --- a/src/graphics/graphics.h +++ b/src/graphics/graphics.h @@ -234,7 +234,7 @@ ORCA_API oc_font oc_font_create_from_path(oc_str8 path, u32 rangeCount, oc_unico ORCA_API void oc_font_destroy(oc_font font); ORCA_API oc_str32 oc_font_get_glyph_indices(oc_font font, oc_str32 codePoints, oc_str32 backing); -ORCA_API oc_str32 oc_font_push_glyph_indices(oc_font font, oc_arena* arena, oc_str32 codePoints); +ORCA_API oc_str32 oc_font_push_glyph_indices(oc_arena* arena, oc_font font, oc_str32 codePoints); ORCA_API u32 oc_font_get_glyph_index(oc_font font, oc_utf32 codePoint); // metrics diff --git a/src/graphics/graphics_common.c b/src/graphics/graphics_common.c index 7d29670..9099168 100644 --- a/src/graphics/graphics_common.c +++ b/src/graphics/graphics_common.c @@ -652,7 +652,7 @@ oc_str32 oc_font_get_glyph_indices(oc_font font, oc_str32 codePoints, oc_str32 b return (oc_font_get_glyph_indices_from_font_data(fontData, codePoints, backing)); } -oc_str32 oc_font_push_glyph_indices(oc_font font, oc_arena* arena, oc_str32 codePoints) +oc_str32 oc_font_push_glyph_indices(oc_arena* arena, oc_font font, oc_str32 codePoints) { u32* buffer = oc_arena_push_array(arena, u32, codePoints.len); oc_str32 backing = { .ptr = buffer, .len = codePoints.len }; @@ -774,7 +774,7 @@ oc_text_metrics oc_font_text_metrics_utf32(oc_font font, f32 fontSize, oc_str32 } oc_arena_scope scratch = oc_scratch_begin(); - oc_str32 glyphIndices = oc_font_push_glyph_indices(font, scratch.arena, codePoints); + oc_str32 glyphIndices = oc_font_push_glyph_indices(scratch.arena, font, codePoints); //NOTE(martin): find width of missing character //TODO(martin): should cache that at font creation... @@ -1519,7 +1519,7 @@ void oc_codepoints_outlines(oc_str32 codePoints) oc_arena_scope scratch = oc_scratch_begin(); - oc_str32 glyphIndices = oc_font_push_glyph_indices(canvas->attributes.font, scratch.arena, codePoints); + oc_str32 glyphIndices = oc_font_push_glyph_indices(scratch.arena, canvas->attributes.font, codePoints); oc_glyph_outlines_from_font_data(fontData, glyphIndices); oc_scratch_end(scratch); @@ -1540,7 +1540,7 @@ void oc_text_outlines(oc_str8 text) oc_arena_scope scratch = oc_scratch_begin(); oc_str32 codePoints = oc_utf8_push_to_codepoints(scratch.arena, text); - oc_str32 glyphIndices = oc_font_push_glyph_indices(canvas->attributes.font, scratch.arena, codePoints); + oc_str32 glyphIndices = oc_font_push_glyph_indices(scratch.arena, canvas->attributes.font, codePoints); oc_glyph_outlines_from_font_data(fontData, glyphIndices); diff --git a/src/platform/platform_io_internal.c b/src/platform/platform_io_internal.c index 1a91a0b..576365d 100644 --- a/src/platform/platform_io_internal.c +++ b/src/platform/platform_io_internal.c @@ -135,13 +135,13 @@ oc_io_open_restrict_result oc_io_open_restrict(oc_file_desc dirFd, oc_str8 path, if(context.error == OC_IO_OK) { - oc_list_for(&pathElements.list, elt, oc_str8_elt, listElt) + oc_list_for(pathElements.list, elt, oc_str8_elt, listElt) { oc_str8 name = elt->string; oc_file_access eltAccessRights = OC_FILE_ACCESS_READ; oc_file_open_flags eltOpenFlags = 0; - bool atLastElement = (&elt->listElt == oc_list_last(&pathElements.list)); + bool atLastElement = (&elt->listElt == oc_list_last(pathElements.list)); if(atLastElement) { eltAccessRights = accessRights; @@ -224,7 +224,7 @@ oc_io_open_restrict_result oc_io_open_restrict(oc_file_desc dirFd, oc_str8 path, } oc_str8_list linkElements = oc_str8_split(scratch.arena, link.target, sep); - if(!oc_list_empty(&linkElements.list)) + if(!oc_list_empty(linkElements.list)) { //NOTE: insert linkElements into pathElements after elt oc_list_elt* tmp = elt->listElt.next; @@ -404,7 +404,7 @@ oc_file_open_with_dialog_result oc_file_open_with_dialog_for_table(oc_arena* are if(dialogResult.button == OC_FILE_DIALOG_OK) { int i = 0; - oc_list_for(&dialogResult.selection.list, elt, oc_str8_elt, listElt) + oc_list_for(dialogResult.selection.list, elt, oc_str8_elt, listElt) { oc_file file = oc_file_nil(); if(elt->string.len) diff --git a/src/runtime.c b/src/runtime.c index 6d99c8c..9d2d3d7 100644 --- a/src/runtime.c +++ b/src/runtime.c @@ -161,7 +161,7 @@ void oc_bridge_log(oc_log_level level, //NOTE: allocate a new entry //TODO: should probably use a buddy allocator over the arena or something log_entry* entry = 0; - oc_list_for(&debug->logFreeList, elt, log_entry, listElt) + oc_list_for(debug->logFreeList, elt, log_entry, listElt) { if(elt->cap >= cap) { @@ -587,7 +587,7 @@ i32 orca_runloop(void* user) if(exports[OC_EXPORT_RAW_EVENT]) { - oc_event* clipboardEvent = oc_runtime_clipboard_process_event_begin(&__orcaApp.clipboard, scratch.arena, event); + oc_event* clipboardEvent = oc_runtime_clipboard_process_event_begin(scratch.arena, &__orcaApp.clipboard, event); oc_event* events[2]; u64 eventsCount; if(clipboardEvent != 0) @@ -815,7 +815,7 @@ i32 orca_runloop(void* user) oc_ui_style_match_after(oc_ui_pattern_all(), &buttonStyle, buttonStyleMask); if(oc_ui_button("Clear").clicked) { - oc_list_for_safe(&app->debugOverlay.logEntries, entry, log_entry, listElt) + oc_list_for_safe(app->debugOverlay.logEntries, entry, log_entry, listElt) { oc_list_remove(&app->debugOverlay.logEntries, &entry->listElt); oc_list_push(&app->debugOverlay.logFreeList, &entry->listElt); @@ -856,7 +856,7 @@ i32 orca_runloop(void* user) oc_ui_container("contents", 0) { - oc_list_for(&app->debugOverlay.logEntries, entry, log_entry, listElt) + oc_list_for(app->debugOverlay.logEntries, entry, log_entry, listElt) { log_entry_ui(&app->debugOverlay, entry); } diff --git a/src/runtime_clipboard.c b/src/runtime_clipboard.c index a7906d3..cd7a082 100644 --- a/src/runtime_clipboard.c +++ b/src/runtime_clipboard.c @@ -48,7 +48,7 @@ void oc_runtime_clipboard_set_string(oc_runtime_clipboard* clipboard, oc_wasm_st } } -oc_event* oc_runtime_clipboard_process_event_begin(oc_runtime_clipboard* clipboard, oc_arena* arena, oc_event* origEvent) +oc_event* oc_runtime_clipboard_process_event_begin(oc_arena* arena, oc_runtime_clipboard* clipboard, oc_event* origEvent) { oc_event* resultEvent = 0; if(origEvent->type == OC_EVENT_KEYBOARD_KEY) diff --git a/src/runtime_clipboard.h b/src/runtime_clipboard.h index b3ce651..19ac49c 100644 --- a/src/runtime_clipboard.h +++ b/src/runtime_clipboard.h @@ -21,11 +21,11 @@ typedef struct oc_runtime_clipboard oc_wasm_str8 oc_runtime_clipboard_get_string(oc_runtime_clipboard* clipboard, oc_wasm_addr wasmArena); void oc_runtime_clipboard_set_string(oc_runtime_clipboard* clipboard, oc_wasm_str8 value); -oc_event* oc_runtime_clipboard_process_event_begin(oc_runtime_clipboard* clipboard, oc_arena* arena, oc_event* origEvent); +oc_event* oc_runtime_clipboard_process_event_begin(oc_arena* arena, oc_runtime_clipboard* clipboard, oc_event* origEvent); void oc_runtime_clipboard_process_event_end(oc_runtime_clipboard* clipboard); #else #error Default clipboard handling is not supported on this platform" #endif -#endif //__RUNTIME_CLIPBOARD_H_ \ No newline at end of file +#endif //__RUNTIME_CLIPBOARD_H_ diff --git a/src/runtime_io.c b/src/runtime_io.c index cac93bd..9b83161 100644 --- a/src/runtime_io.c +++ b/src/runtime_io.c @@ -132,7 +132,7 @@ oc_wasm_file_open_with_dialog_result oc_file_open_with_dialog_bridge(oc_wasm_add .file = nativeResult.file }; - oc_list_for(&nativeResult.selection, elt, oc_file_open_with_dialog_elt, listElt) + oc_list_for(nativeResult.selection, elt, oc_file_open_with_dialog_elt, listElt) { oc_wasm_addr wasmEltAddr = oc_wasm_arena_push(wasmArena, sizeof(oc_wasm_file_open_with_dialog_elt)); oc_wasm_file_open_with_dialog_elt* wasmElt = oc_wasm_address_to_ptr(wasmEltAddr, sizeof(oc_wasm_file_open_with_dialog_elt)); diff --git a/src/ui/input_state.c b/src/ui/input_state.c index 8db0d2e..00c649d 100644 --- a/src/ui/input_state.c +++ b/src/ui/input_state.c @@ -63,7 +63,7 @@ static void oc_update_key_mods(oc_input_state* state, oc_keymod_flags mods) state->keyboard.mods = mods; } -static void oc_update_clipboard_paste(oc_input_state* state, oc_arena* arena) +static void oc_update_clipboard_paste(oc_arena* arena, oc_input_state* state) { state->clipboard.lastUpdate = state->frameCounter; state->clipboard.pastedText = oc_clipboard_get_string(arena); @@ -140,7 +140,7 @@ void oc_input_next_frame(oc_input_state* state) state->frameCounter++; } -void oc_input_process_event(oc_input_state* state, oc_arena* arena, oc_event* event) +void oc_input_process_event(oc_arena* arena, oc_input_state* state, oc_event* event) { switch(event->type) { @@ -161,7 +161,7 @@ void oc_input_process_event(oc_input_state* state, oc_arena* arena, oc_event* ev break; case OC_EVENT_CLIPBOARD_PASTE: - oc_update_clipboard_paste(state, arena); + oc_update_clipboard_paste(arena, state); break; case OC_EVENT_MOUSE_MOVE: @@ -399,7 +399,7 @@ oc_vec2 oc_mouse_wheel(oc_input_state* input) } } -oc_str32 oc_input_text_utf32(oc_input_state* input, oc_arena* arena) +oc_str32 oc_input_text_utf32(oc_arena* arena, oc_input_state* input) { oc_str32 res = { 0 }; if(input->text.lastUpdate == input->frameCounter) @@ -409,7 +409,7 @@ oc_str32 oc_input_text_utf32(oc_input_state* input, oc_arena* arena) return (res); } -oc_str8 oc_input_text_utf8(oc_input_state* input, oc_arena* arena) +oc_str8 oc_input_text_utf8(oc_arena* arena, oc_input_state* input) { oc_str8 res = { 0 }; if(input->text.lastUpdate == input->frameCounter) diff --git a/src/ui/input_state.h b/src/ui/input_state.h index 583c2e5..8763f3c 100644 --- a/src/ui/input_state.h +++ b/src/ui/input_state.h @@ -86,7 +86,7 @@ typedef struct oc_input_state oc_clipboard_state clipboard; } oc_input_state; -ORCA_API void oc_input_process_event(oc_input_state* state, oc_arena* arena, oc_event* event); +ORCA_API void oc_input_process_event(oc_arena* arena, oc_input_state* state, oc_event* event); ORCA_API void oc_input_next_frame(oc_input_state* state); ORCA_API bool oc_key_down(oc_input_state* state, oc_key_code key); @@ -109,8 +109,8 @@ ORCA_API oc_vec2 oc_mouse_position(oc_input_state* state); ORCA_API oc_vec2 oc_mouse_delta(oc_input_state* state); ORCA_API oc_vec2 oc_mouse_wheel(oc_input_state* state); -ORCA_API oc_str32 oc_input_text_utf32(oc_input_state* state, oc_arena* arena); -ORCA_API oc_str8 oc_input_text_utf8(oc_input_state* state, oc_arena* arena); +ORCA_API oc_str32 oc_input_text_utf32(oc_arena* arena, oc_input_state* state); +ORCA_API oc_str8 oc_input_text_utf8(oc_arena* arena, oc_input_state* state); ORCA_API bool oc_clipboard_pasted(oc_input_state* state); ORCA_API oc_str8 oc_clipboard_pasted_text(oc_input_state* state); diff --git a/src/ui/ui.c b/src/ui/ui.c index 5d6ff5b..9ba16ad 100644 --- a/src/ui/ui.c +++ b/src/ui/ui.c @@ -190,7 +190,7 @@ oc_ui_key oc_ui_key_make_path(oc_str8_list path) { seed = parent->key.hash; } - oc_list_for(&path.list, elt, oc_str8_elt, listElt) + oc_list_for(path.list, elt, oc_str8_elt, listElt) { seed = oc_hash_xx64_string_seed(elt->string, seed); } @@ -214,7 +214,7 @@ oc_ui_box* oc_ui_box_lookup_key(oc_ui_key key) oc_ui_context* ui = oc_ui_get_context(); u64 index = key.hash & (OC_UI_BOX_MAP_BUCKET_COUNT - 1); - oc_list_for(&ui->boxMap[index], box, oc_ui_box, bucketElt) + oc_list_for(ui->boxMap[index], box, oc_ui_box, bucketElt) { if(oc_ui_key_equal(key, box->key)) { @@ -331,7 +331,7 @@ void oc_ui_style_box_after(oc_ui_box* box, oc_ui_pattern pattern, oc_ui_style* s void oc_ui_process_event(oc_event* event) { oc_ui_context* ui = oc_ui_get_context(); - oc_input_process_event(&ui->input, &ui->frameArena, event); + oc_input_process_event(&ui->frameArena, &ui->input, event); } oc_vec2 oc_ui_mouse_position(void) @@ -450,14 +450,14 @@ oc_ui_box* oc_ui_box_make_str8(oc_str8 string, oc_ui_flags flags) ui->nextBoxTags = (oc_list){ 0 }; box->beforeRules = ui->nextBoxBeforeRules; - oc_list_for(&box->beforeRules, rule, oc_ui_style_rule, boxElt) + oc_list_for(box->beforeRules, rule, oc_ui_style_rule, boxElt) { rule->owner = box; } ui->nextBoxBeforeRules = (oc_list){ 0 }; box->afterRules = ui->nextBoxAfterRules; - oc_list_for(&box->afterRules, rule, oc_ui_style_rule, boxElt) + oc_list_for(box->afterRules, rule, oc_ui_style_rule, boxElt) { rule->owner = box; } @@ -854,7 +854,7 @@ bool oc_ui_style_selector_match(oc_ui_box* box, oc_ui_style_rule* rule, oc_ui_se case OC_UI_SEL_TAG: { - oc_list_for(&box->tags, elt, oc_ui_tag_elt, listElt) + oc_list_for(box->tags, elt, oc_ui_tag_elt, listElt) { if(elt->tag.hash == selector->tag.hash) { @@ -893,14 +893,14 @@ bool oc_ui_style_selector_match(oc_ui_box* box, oc_ui_style_rule* rule, oc_ui_se void oc_ui_style_rule_match(oc_ui_context* ui, oc_ui_box* box, oc_ui_style_rule* rule, oc_list* buildList, oc_list* tmpList) { - oc_ui_selector* selector = oc_list_first_entry(&rule->pattern.l, oc_ui_selector, listElt); + oc_ui_selector* selector = oc_list_first_entry(rule->pattern.l, oc_ui_selector, listElt); bool match = oc_ui_style_selector_match(box, rule, selector); - selector = oc_list_next_entry(&rule->pattern.l, selector, oc_ui_selector, listElt); + selector = oc_list_next_entry(rule->pattern.l, selector, oc_ui_selector, listElt); while(match && selector && selector->op == OC_UI_SEL_AND) { match = match && oc_ui_style_selector_match(box, rule, selector); - selector = oc_list_next_entry(&rule->pattern.l, selector, oc_ui_selector, listElt); + selector = oc_list_next_entry(rule->pattern.l, selector, oc_ui_selector, listElt); } if(match) @@ -935,27 +935,27 @@ void oc_ui_styling_prepass(oc_ui_context* ui, oc_ui_box* box, oc_list* before, o //NOTE: append box before rules to before and tmp oc_list tmpBefore = { 0 }; - oc_list_for(&box->beforeRules, rule, oc_ui_style_rule, boxElt) + oc_list_for(box->beforeRules, rule, oc_ui_style_rule, boxElt) { oc_list_append(before, &rule->buildElt); oc_list_append(&tmpBefore, &rule->tmpElt); } //NOTE: match before rules - oc_list_for(before, rule, oc_ui_style_rule, buildElt) + oc_list_for(*before, rule, oc_ui_style_rule, buildElt) { oc_ui_style_rule_match(ui, box, rule, before, &tmpBefore); } //NOTE: prepend box after rules to after and append them to tmp oc_list tmpAfter = { 0 }; - oc_list_for_reverse(&box->afterRules, rule, oc_ui_style_rule, boxElt) + oc_list_for_reverse(box->afterRules, rule, oc_ui_style_rule, boxElt) { oc_list_push(after, &rule->buildElt); oc_list_append(&tmpAfter, &rule->tmpElt); } //NOTE: match after rules - oc_list_for(after, rule, oc_ui_style_rule, buildElt) + oc_list_for(*after, rule, oc_ui_style_rule, buildElt) { oc_ui_style_rule_match(ui, box, rule, after, &tmpAfter); } @@ -996,17 +996,17 @@ void oc_ui_styling_prepass(oc_ui_context* ui, oc_ui_box* box, oc_list* before, o } //NOTE: descend in children - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { oc_ui_styling_prepass(ui, child, before, after); } //NOTE: remove temporary rules - oc_list_for(&tmpBefore, rule, oc_ui_style_rule, tmpElt) + oc_list_for(tmpBefore, rule, oc_ui_style_rule, tmpElt) { oc_list_remove(before, &rule->buildElt); } - oc_list_for(&tmpAfter, rule, oc_ui_style_rule, tmpElt) + oc_list_for(tmpAfter, rule, oc_ui_style_rule, tmpElt) { oc_list_remove(after, &rule->buildElt); } @@ -1024,7 +1024,7 @@ void oc_ui_layout_downward_dependent_size(oc_ui_context* ui, oc_ui_box* box, int { //NOTE: layout children and compute spacing f32 count = 0; - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { if(!oc_ui_box_hidden(child)) { @@ -1048,7 +1048,7 @@ void oc_ui_layout_downward_dependent_size(oc_ui_context* ui, oc_ui_box* box, int if(box->style.layout.axis == axis) { - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { if(oc_ui_layout_downward_dependency(child, axis)) { @@ -1058,7 +1058,7 @@ void oc_ui_layout_downward_dependent_size(oc_ui_context* ui, oc_ui_box* box, int } else { - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { if(oc_ui_layout_downward_dependency(child, axis)) { @@ -1078,7 +1078,7 @@ void oc_ui_layout_upward_dependent_size(oc_ui_context* ui, oc_ui_box* box, int a f32 margin = box->style.layout.margin.c[axis]; f32 availableSize = oc_max(0, box->rect.c[2 + axis] - box->spacing[axis] - 2 * margin); - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { oc_ui_size* size = &child->style.size.c[axis]; if(size->kind == OC_UI_SIZE_PARENT) @@ -1101,7 +1101,7 @@ void oc_ui_layout_upward_dependent_size(oc_ui_context* ui, oc_ui_box* box, int a // total slack available f32 slack = 0; - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { if(!oc_ui_box_hidden(child) && !child->style.floating.c[axis]) @@ -1119,7 +1119,7 @@ void oc_ui_layout_upward_dependent_size(oc_ui_context* ui, oc_ui_box* box, int a f32 alpha = oc_clamp(excess / slack, 0, 1); sum = 0; - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { f32 relax = child->style.size.c[axis].relax; child->rect.c[2 + axis] -= alpha * child->rect.c[2 + axis] * relax; @@ -1132,7 +1132,7 @@ void oc_ui_layout_upward_dependent_size(oc_ui_context* ui, oc_ui_box* box, int a //NOTE: if we're solving on the secondary axis, we remove excess to each box individually // according to its own slack. Children sum is the maximum child size. - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { if(!oc_ui_box_hidden(child) && !child->style.floating.c[axis]) { @@ -1151,7 +1151,7 @@ void oc_ui_layout_upward_dependent_size(oc_ui_context* ui, oc_ui_box* box, int a box->childrenSum[axis] = sum; //NOTE: recurse in children - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { oc_ui_layout_upward_dependent_size(ui, child, axis); } @@ -1201,7 +1201,7 @@ void oc_ui_layout_compute_rect(oc_ui_context* ui, oc_ui_box* box, oc_vec2 pos) currentPos.x -= box->scroll.x; currentPos.y -= box->scroll.y; - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { if(align[secondAxis] == OC_UI_ALIGN_CENTER) { @@ -1250,7 +1250,7 @@ void oc_ui_layout_find_next_hovered_recursive(oc_ui_context* ui, oc_ui_box* box, } if(hit || !(box->flags & OC_UI_FLAG_CLIP)) { - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { oc_ui_layout_find_next_hovered_recursive(ui, child, p); } @@ -1272,7 +1272,7 @@ void oc_ui_solve_layout(oc_ui_context* ui) oc_ui_styling_prepass(ui, ui->root, &beforeRules, &afterRules); //NOTE: reparent overlay boxes - oc_list_for(&ui->overlayList, box, oc_ui_box, overlayElt) + oc_list_for(ui->overlayList, box, oc_ui_box, overlayElt) { if(box->parent) { @@ -1368,7 +1368,7 @@ void oc_ui_draw_box(oc_ui_box* box) box->drawProc(box, box->drawData); } - oc_list_for(&box->children, child, oc_ui_box, listElt) + oc_list_for(box->children, child, oc_ui_box, listElt) { oc_ui_draw_box(child); } @@ -1518,7 +1518,7 @@ void oc_ui_end_frame(void) //NOTE: prune unused boxes for(int i = 0; i < OC_UI_BOX_MAP_BUCKET_COUNT; i++) { - oc_list_for_safe(&ui->boxMap[i], box, oc_ui_box, bucketElt) + oc_list_for_safe(ui->boxMap[i], box, oc_ui_box, bucketElt) { if(box->frameCounter < ui->frameCounter) { @@ -2724,7 +2724,7 @@ oc_ui_radio_group_info oc_ui_radio_group(const char* name, oc_ui_radio_group_inf oc_ui_flags flags = OC_UI_FLAG_DRAW_BACKGROUND | OC_UI_FLAG_DRAW_BORDER | OC_UI_FLAG_DRAW_PROC; oc_ui_box* radio = oc_ui_box_make("radio", flags); oc_ui_box_set_draw_proc(radio, oc_ui_radio_indicator_draw, 0); - + oc_ui_sig sig = oc_ui_box_sig(row); if(sig.clicked) { @@ -3806,7 +3806,7 @@ oc_ui_text_box_result oc_ui_text_box(const char* name, oc_arena* arena, oc_str8 ui->editMark = oc_clamp(ui->editMark, 0, codepoints.len); //NOTE replace selection with input codepoints - oc_str32 input = oc_input_text_utf32(&ui->input, &ui->frameArena); + oc_str32 input = oc_input_text_utf32(&ui->frameArena, &ui->input); if(input.len) { codepoints = oc_ui_edit_replace_selection_with_codepoints(ui, codepoints, input); diff --git a/src/util/lists.h b/src/util/lists.h index b91a089..8566f51 100644 --- a/src/util/lists.h +++ b/src/util/lists.h @@ -21,12 +21,16 @@ extern "C" { // Intrusive linked lists //------------------------------------------------------------------------- -#define oc_list_entry(ptr, type, member) \ - oc_container_of(ptr, type, member) +#define oc_list_begin(l) (l).first +#define oc_list_end(l) ((oc_list_elt*)0) +#define oc_list_last(l) (l).last #define oc_list_next(elt) (elt)->next #define oc_list_prev(elt) (elt)->prev +#define oc_list_entry(ptr, type, member) \ + oc_container_of(ptr, type, member) + #define oc_list_next_entry(list, elt, type, member) \ ((elt->member.next != oc_list_end(list)) ? oc_list_entry(elt->member.next, type, member) : 0) @@ -59,7 +63,7 @@ extern "C" { elt = __tmp, \ __tmp = elt ? oc_list_checked_entry(elt->member.next, type, member) : 0) -#define oc_list_pop_entry(list, type, member) (oc_list_empty(list) ? 0 : oc_list_entry(oc_list_pop(list), type, member)) +#define oc_list_pop_entry(list, type, member) (oc_list_empty(*list) ? 0 : oc_list_entry(oc_list_pop(list), type, member)) typedef struct oc_list_elt oc_list_elt; @@ -80,21 +84,6 @@ static inline void oc_list_init(oc_list* list) list->first = list->last = 0; } -static inline oc_list_elt* oc_list_begin(oc_list* list) -{ - return (list->first); -} - -static inline oc_list_elt* oc_list_end(oc_list* list) -{ - return (0); -} - -static inline oc_list_elt* oc_list_last(oc_list* list) -{ - return (list->last); -} - static inline void oc_list_insert(oc_list* list, oc_list_elt* afterElt, oc_list_elt* elt) { elt->prev = afterElt; @@ -170,8 +159,8 @@ static inline void oc_list_push(oc_list* list, oc_list_elt* elt) static inline oc_list_elt* oc_list_pop(oc_list* list) { - oc_list_elt* elt = oc_list_begin(list); - if(elt != oc_list_end(list)) + oc_list_elt* elt = oc_list_begin(*list); + if(elt != oc_list_end(*list)) { oc_list_remove(list, elt); return (elt); @@ -201,8 +190,8 @@ static inline void oc_list_push_back(oc_list* list, oc_list_elt* elt) static inline oc_list_elt* oc_list_pop_back(oc_list* list) { - oc_list_elt* elt = oc_list_last(list); - if(elt != oc_list_end(list)) + oc_list_elt* elt = oc_list_last(*list); + if(elt != oc_list_end(*list)) { oc_list_remove(list, elt); return (elt); @@ -213,9 +202,9 @@ static inline oc_list_elt* oc_list_pop_back(oc_list* list) } } -static inline bool oc_list_empty(oc_list* list) +static inline bool oc_list_empty(oc_list list) { - return (list->first == 0 || list->last == 0); + return (list.first == 0 || list.last == 0); } #ifdef __cplusplus diff --git a/src/util/memory.c b/src/util/memory.c index 65e00fe..f1ead2c 100644 --- a/src/util/memory.c +++ b/src/util/memory.c @@ -69,7 +69,7 @@ void oc_arena_init_with_options(oc_arena* arena, oc_arena_options* options) void oc_arena_cleanup(oc_arena* arena) { - oc_list_for_safe(&arena->chunks, chunk, oc_arena_chunk, listElt) + oc_list_for_safe(arena->chunks, chunk, oc_arena_chunk, listElt) { oc_base_release(arena->base, chunk, chunk->cap); } @@ -85,7 +85,7 @@ void* oc_arena_push(oc_arena* arena, u64 size) u64 lastCap = chunk->cap; while(nextOffset > chunk->cap) { - chunk = oc_list_next_entry(&arena->chunks, chunk, oc_arena_chunk, listElt); + chunk = oc_list_next_entry(arena->chunks, chunk, oc_arena_chunk, listElt); if(chunk) { nextOffset = chunk->offset + size; @@ -123,11 +123,11 @@ void* oc_arena_push(oc_arena* arena, u64 size) void oc_arena_clear(oc_arena* arena) { - oc_list_for(&arena->chunks, chunk, oc_arena_chunk, listElt) + oc_list_for(arena->chunks, chunk, oc_arena_chunk, listElt) { chunk->offset = sizeof(oc_arena_chunk); } - arena->currentChunk = oc_list_first_entry(&arena->chunks, oc_arena_chunk, listElt); + arena->currentChunk = oc_list_first_entry(arena->chunks, oc_arena_chunk, listElt); } oc_arena_scope oc_arena_scope_begin(oc_arena* arena) @@ -167,7 +167,7 @@ void oc_pool_cleanup(oc_pool* pool) void* oc_pool_alloc(oc_pool* pool) { - if(oc_list_empty(&pool->freeList)) + if(oc_list_empty(pool->freeList)) { return (oc_arena_push(&pool->arena, pool->blockSize)); } diff --git a/src/util/strings.c b/src/util/strings.c index 72fbe3b..c304130 100644 --- a/src/util/strings.c +++ b/src/util/strings.c @@ -14,13 +14,13 @@ oc_str8 oc_str8_from_buffer(u64 len, char* buffer) { - return ((oc_str8){.ptr = buffer , .len = len}); + return ((oc_str8){ .ptr = buffer, .len = len }); } oc_str8 oc_str8_slice(oc_str8 s, u64 start, u64 end) { OC_ASSERT(start <= end && start <= s.len && end <= s.len); - return ((oc_str8){.ptr = s.ptr + start , .len = end - start}); + return ((oc_str8){ .ptr = s.ptr + start, .len = end - start }); } oc_str8 oc_str8_push_buffer(oc_arena* arena, u64 len, char* buffer) @@ -136,15 +136,15 @@ oc_str8 oc_str8_list_collate(oc_arena* arena, oc_str8_list list, oc_str8 prefix, memcpy(dst, prefix.ptr, prefix.len); dst += prefix.len; - oc_str8_elt* elt = oc_list_first_entry(&list.list, oc_str8_elt, listElt); + oc_str8_elt* elt = oc_list_first_entry(list.list, oc_str8_elt, listElt); if(elt) { memcpy(dst, elt->string.ptr, elt->string.len); dst += elt->string.len; - elt = oc_list_next_entry(&list.list, elt, oc_str8_elt, listElt); + elt = oc_list_next_entry(list.list, elt, oc_str8_elt, listElt); } - for(; elt != 0; elt = oc_list_next_entry(&list.list, elt, oc_str8_elt, listElt)) + for(; elt != 0; elt = oc_list_next_entry(list.list, elt, oc_str8_elt, listElt)) { memcpy(dst, separator.ptr, separator.len); dst += separator.len; @@ -158,7 +158,7 @@ oc_str8 oc_str8_list_collate(oc_arena* arena, oc_str8_list list, oc_str8 prefix, oc_str8 oc_str8_list_join(oc_arena* arena, oc_str8_list list) { - oc_str8 empty = {.ptr = 0 , .len = 0}; + oc_str8 empty = { .ptr = 0, .len = 0 }; return (oc_str8_list_collate(arena, list, empty, empty, empty)); } @@ -174,7 +174,7 @@ oc_str8_list oc_str8_split(oc_arena* arena, oc_str8 str, oc_str8_list separators { //NOTE(martin): search all separators and try to match them to the current ptr oc_str8* foundSep = 0; - oc_list_for(&separators.list, elt, oc_str8_elt, listElt) + oc_list_for(separators.list, elt, oc_str8_elt, listElt) { oc_str8* separator = &elt->string; bool equal = true; @@ -221,13 +221,13 @@ oc_str8_list oc_str8_split(oc_arena* arena, oc_str8 str, oc_str8_list separators //---------------------------------------------------------------------------------- oc_str16 oc_str16_from_buffer(u64 len, u16* buffer) { - return ((oc_str16){.ptr = buffer , .len = len}); + return ((oc_str16){ .ptr = buffer, .len = len }); } oc_str16 oc_str16_slice(oc_str16 s, u64 start, u64 end) { OC_ASSERT(start <= end && start <= s.len && end <= s.len); - return ((oc_str16){.ptr = s.ptr + start , .len = end - start}); + return ((oc_str16){ .ptr = s.ptr + start, .len = end - start }); } oc_str16 oc_str16_push_buffer(oc_arena* arena, u64 len, u16* buffer) @@ -276,15 +276,15 @@ oc_str16 oc_str16_list_collate(oc_arena* arena, oc_str16_list list, oc_str16 pre memcpy(dst, prefix.ptr, prefix.len * sizeof(u16)); dst += prefix.len * sizeof(u16); - oc_str16_elt* elt = oc_list_first_entry(&list.list, oc_str16_elt, listElt); + oc_str16_elt* elt = oc_list_first_entry(list.list, oc_str16_elt, listElt); if(elt) { memcpy(dst, elt->string.ptr, elt->string.len * sizeof(u16)); dst += elt->string.len * sizeof(u16); - elt = oc_list_next_entry(&list.list, elt, oc_str16_elt, listElt); + elt = oc_list_next_entry(list.list, elt, oc_str16_elt, listElt); } - for(; elt != 0; elt = oc_list_next_entry(&list.list, elt, oc_str16_elt, listElt)) + for(; elt != 0; elt = oc_list_next_entry(list.list, elt, oc_str16_elt, listElt)) { memcpy(dst, separator.ptr, separator.len * sizeof(u16)); dst += separator.len * sizeof(u16); @@ -298,7 +298,7 @@ oc_str16 oc_str16_list_collate(oc_arena* arena, oc_str16_list list, oc_str16 pre oc_str16 oc_str16_list_join(oc_arena* arena, oc_str16_list list) { - oc_str16 empty = {.ptr = 0 , .len = 0}; + oc_str16 empty = { .ptr = 0, .len = 0 }; return (oc_str16_list_collate(arena, list, empty, empty, empty)); } @@ -307,13 +307,13 @@ oc_str16 oc_str16_list_join(oc_arena* arena, oc_str16_list list) //---------------------------------------------------------------------------------- oc_str32 oc_str32_from_buffer(u64 len, u32* buffer) { - return ((oc_str32){.ptr = buffer , .len = len}); + return ((oc_str32){ .ptr = buffer, .len = len }); } oc_str32 oc_str32_slice(oc_str32 s, u64 start, u64 end) { OC_ASSERT(start <= end && start <= s.len && end <= s.len); - return ((oc_str32){.ptr = s.ptr + start , .len = end - start}); + return ((oc_str32){ .ptr = s.ptr + start, .len = end - start }); } oc_str32 oc_str32_push_buffer(oc_arena* arena, u64 len, u32* buffer) @@ -362,15 +362,15 @@ oc_str32 oc_str32_list_collate(oc_arena* arena, oc_str32_list list, oc_str32 pre memcpy(dst, prefix.ptr, prefix.len * sizeof(u32)); dst += prefix.len * sizeof(u32); - oc_str32_elt* elt = oc_list_first_entry(&list.list, oc_str32_elt, listElt); + oc_str32_elt* elt = oc_list_first_entry(list.list, oc_str32_elt, listElt); if(elt) { memcpy(dst, elt->string.ptr, elt->string.len * sizeof(u32)); dst += elt->string.len * sizeof(u32); - elt = oc_list_next_entry(&list.list, elt, oc_str32_elt, listElt); + elt = oc_list_next_entry(list.list, elt, oc_str32_elt, listElt); } - for(; elt != 0; elt = oc_list_next_entry(&list.list, elt, oc_str32_elt, listElt)) + for(; elt != 0; elt = oc_list_next_entry(list.list, elt, oc_str32_elt, listElt)) { memcpy(dst, separator.ptr, separator.len * sizeof(u32)); dst += separator.len * sizeof(u32); @@ -384,6 +384,6 @@ oc_str32 oc_str32_list_collate(oc_arena* arena, oc_str32_list list, oc_str32 pre oc_str32 oc_str32_list_join(oc_arena* arena, oc_str32_list list) { - oc_str32 empty = {.ptr = 0 , .len = 0}; + oc_str32 empty = { .ptr = 0, .len = 0 }; return (oc_str32_list_collate(arena, list, empty, empty, empty)); } diff --git a/tests/file_dialog/main.c b/tests/file_dialog/main.c index 44a1d14..108e2ff 100644 --- a/tests/file_dialog/main.c +++ b/tests/file_dialog/main.c @@ -12,7 +12,7 @@ int main(int argc, char** argv) { oc_init(); - oc_arena_scope* scratch = oc_scratch_begin(); + oc_arena_scope scratch = oc_scratch_begin(); oc_str8 path = oc_path_executable_relative(scratch.arena, OC_STR8("../")); oc_file dir = oc_file_open(path, OC_FILE_ACCESS_READ, 0); @@ -36,7 +36,7 @@ int main(int argc, char** argv) else { oc_log_info("Selected files:\n"); - oc_list_for(&res.selection.list, elt, oc_str8_elt, listElt) + oc_list_for(res.selection.list, elt, oc_str8_elt, listElt) { oc_log_info("\t%.*s\n", (int)elt->string.len, elt->string.ptr); } diff --git a/tests/file_open_dialog/.gitignore b/tests/file_open_dialog/.gitignore deleted file mode 100644 index c5e82d7..0000000 --- a/tests/file_open_dialog/.gitignore +++ /dev/null @@ -1 +0,0 @@ -bin \ No newline at end of file diff --git a/tests/file_open_dialog/build.bat b/tests/file_open_dialog/build.bat deleted file mode 100644 index 72b70b5..0000000 --- a/tests/file_open_dialog/build.bat +++ /dev/null @@ -1,5 +0,0 @@ - -set INCLUDES=/I ..\..\src /I ..\..\src\util /I ..\..\src\platform /I ../../ext - -cl /we4013 /Zi /Zc:preprocessor /std:c11 %INCLUDES% main.c /link /LIBPATH:../../bin milepost.dll.lib /out:../../bin/test_open_dialog.exe -copy ..\..\build\bin\orca.dll bin diff --git a/tests/file_open_dialog/build.sh b/tests/file_open_dialog/build.sh deleted file mode 100755 index 8f5e240..0000000 --- a/tests/file_open_dialog/build.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -LIBDIR=../../build/bin -SRCDIR=../../src - -INCLUDES="-I$SRCDIR" -LIBS="-L$LIBDIR -lorca" -FLAGS="-mmacos-version-min=10.15.4 -DOC_DEBUG -DLOG_COMPILE_DEBUG" - -if [ ! \( -e bin \) ] ; then - mkdir ./bin -fi - -clang -g $FLAGS $LIBS $INCLUDES -o ./bin/test_open_dialog main.c - -cp $LIBDIR/liborca.dylib ./bin/ - -install_name_tool -add_rpath "@executable_path" ./bin/test_open_dialog diff --git a/tests/file_open_dialog/main.c b/tests/file_open_dialog/main.c deleted file mode 100644 index f01e9ce..0000000 --- a/tests/file_open_dialog/main.c +++ /dev/null @@ -1,39 +0,0 @@ -/************************************************************************* -* -* Orca -* Copyright 2023 Martin Fouilleul and the Orca project contributors -* See LICENSE.txt for licensing information -* -**************************************************************************/ - -#include "orca.h" - -int main(int argc, char** argv) -{ - oc_init(); - - oc_file_dialog_desc desc = { - .kind = OC_FILE_DIALOG_OPEN, - .flags = OC_FILE_DIALOG_FILES, - .title = OC_STR8("Select Files"), - .okLabel = OC_STR8("Select") - }; - - oc_arena_scope* scratch = oc_scratch_begin(); - - oc_str8_list_push(scratch.arena, &desc.filters, OC_STR8("txt")); - - oc_file file = oc_file_open_with_dialog(OC_FILE_ACCESS_READ, 0, &desc); - if(oc_file_is_nil(file)) - { - oc_log_error("Couldn't open file\n"); - } - else - { - char buffer[1024]; - u64 len = oc_file_read(file, 1024, buffer); - oc_log_info("file contents: %.*s\n", (int)len, buffer); - } - - return (0); -} diff --git a/tests/file_open_dialog/test.txt b/tests/file_open_dialog/test.txt deleted file mode 100644 index ff3bb63..0000000 --- a/tests/file_open_dialog/test.txt +++ /dev/null @@ -1 +0,0 @@ -The quick brown fox jumps over the lazy dog \ No newline at end of file