From a514a1062183604dcbbc673e6f30565503754210 Mon Sep 17 00:00:00 2001 From: Robear Selwans Date: Thu, 26 Mar 2026 13:53:51 +0200 Subject: [PATCH] Minor changes --- build_options/meson-clang-linux | 11 ++++ build_options/meson-clang-win | 11 ++++ meson.build | 2 +- src/main.c | 96 ++++++++++++++++----------------- 4 files changed, 69 insertions(+), 51 deletions(-) create mode 100644 build_options/meson-clang-linux create mode 100644 build_options/meson-clang-win diff --git a/build_options/meson-clang-linux b/build_options/meson-clang-linux new file mode 100644 index 0000000..9ad442e --- /dev/null +++ b/build_options/meson-clang-linux @@ -0,0 +1,11 @@ +[binaries] +c = 'clang-19' +c_ld = 'lld-19' +cpp = 'clang++-19' +cpp_ld = 'lld-19' + +[properties] +c_args = ['-DEV_CC_CLANG=1','-fcolor-diagnostics', '-fansi-escape-codes', '-fms-extensions'] + +[cmake] +CMAKE_C_COMPILER = 'clang-19' diff --git a/build_options/meson-clang-win b/build_options/meson-clang-win new file mode 100644 index 0000000..2840a22 --- /dev/null +++ b/build_options/meson-clang-win @@ -0,0 +1,11 @@ +[binaries] +c = 'clang.exe' +c_ld = 'lld' +cpp = 'clang++.exe' +cpp_ld = 'lld' + +[properties] +c_args = ['-DEV_CC_CLANG=1','-fcolor-diagnostics', '-fansi-escape-codes'] + +[cmake] +CMAKE_C_COMPILER = 'clang.exe' diff --git a/meson.build b/meson.build index 7c1df0a..f9fc620 100755 --- a/meson.build +++ b/meson.build @@ -2,7 +2,7 @@ project('evol-sandbox', 'c', version : '0.1', default_options : [ 'warning_level=3', - 'c_std=gnu11', + 'c_std=gnu23', ], ) diff --git a/src/main.c b/src/main.c index 697f056..b789517 100755 --- a/src/main.c +++ b/src/main.c @@ -45,9 +45,7 @@ project_changed_cb() State.renderer_mod = evol_loadmodule("renderer"); Renderer->setWindow((GenericHandle)State.window); - EV_DEFER( - AssetHandle project_config = Asset->load("project://game.proj"), - Asset->free(project_config)) + AssetHandle project_config = Asset->load("project://game.proj"); { JSONAsset project_desc = JSONLoader->loadAsset(project_config); @@ -56,8 +54,8 @@ project_changed_cb() for(int i = 0; i < (int)scene_count;i++) { evstring scenepath_id = evstring_newfmt("scenes[%d].path", i); evstring sceneid_id = evstring_newfmt("scenes[%d].id", i); - evstring scenepath = evstring_refclone(evjs_get(project_desc.json_data, scenepath_id)->as_str); - evstring sceneid = evstring_refclone(evjs_get(project_desc.json_data, sceneid_id)->as_str); + evstring scenepath = evstring_newFromView(evjs_get(project_desc.json_data, scenepath_id)->as_str); + evstring sceneid = evstring_newFromView(evjs_get(project_desc.json_data, sceneid_id)->as_str); GameScene scene = Scene->loadFromFile(scenepath); Scene->setName(scene, sceneid); @@ -68,10 +66,11 @@ project_changed_cb() evstring_free(scenepath_id); } - evstring activeScene = evstring_refclone(evjs_get(project_desc.json_data, "activeScene")->as_str); + evstring activeScene = evstring_newFromView(evjs_get(project_desc.json_data, "activeScene")->as_str); Game->setActiveScene(Scene->getFromName(activeScene)); evstring_free(activeScene); } + Asset->free(project_config); } void @@ -107,58 +106,55 @@ load_project() AssetManager->mount(&project_dir, &project_mountpoint); evstring_free(project_mountpoint); - EV_DEFER( - AssetHandle project_config = Asset->load("project://game.proj"), - Asset->free(project_config)) - { - JSONAsset project_desc = JSONLoader->loadAsset(project_config); + AssetHandle project_config = Asset->load("project://game.proj"); + JSONAsset project_desc = JSONLoader->loadAsset(project_config); - // Loading filesystem mounts - double mounts_count = evjs_get(project_desc.json_data, "mounts.len")->as_num; - for(int i = 0; i < (int)mounts_count;i++) { - evstring path_id = evstring_newfmt("mounts[%d].path", i); - evstring mountpoint_id = evstring_newfmt("mounts[%d].mountpoint", i); + // Loading filesystem mounts + double mounts_count = evjs_get(project_desc.json_data, "mounts.len")->as_num; + for(int i = 0; i < (int)mounts_count;i++) { + evstring path_id = evstring_newfmt("mounts[%d].path", i); + evstring mountpoint_id = evstring_newfmt("mounts[%d].mountpoint", i); - evstr_ref path_ref = evjs_get(project_desc.json_data, path_id)->as_str; - evstr_ref mountpoint_ref = evjs_get(project_desc.json_data, mountpoint_id)->as_str; + evstring_view path_ref = evjs_get(project_desc.json_data, path_id)->as_str; + evstring_view mountpoint_ref = evjs_get(project_desc.json_data, mountpoint_id)->as_str; - evstring path = evstring_newfmt("%s/%.*s", project_dir, path_ref.len, path_ref.data + path_ref.offset); - evstring mountpoint = evstring_refclone(mountpoint_ref); + evstring path = evstring_newfmt("%s/%.*s", project_dir, path_ref.len, path_ref.data + path_ref.offset); + evstring mountpoint = evstring_newFromView(mountpoint_ref); - AssetManager->mount(&path, &mountpoint); + AssetManager->mount(&path, &mountpoint); - evstring_free(mountpoint); - evstring_free(path); + evstring_free(mountpoint); + evstring_free(path); - evstring_free(mountpoint_id); - evstring_free(path_id); - } - - Renderer->setWindow((GenericHandle)State.window); - - - // Loading Scenes - double scene_count = evjs_get(project_desc.json_data, "scenes.len")->as_num; - for(int i = 0; i < (int)scene_count;i++) { - evstring scenepath_id = evstring_newfmt("scenes[%d].path", i); - evstring sceneid_id = evstring_newfmt("scenes[%d].id", i); - evstring scenepath = evstring_refclone(evjs_get(project_desc.json_data, scenepath_id)->as_str); - evstring sceneid = evstring_refclone(evjs_get(project_desc.json_data, sceneid_id)->as_str); - - GameScene scene = Scene->loadFromFile(scenepath); - Scene->setName(scene, sceneid); - - evstring_free(sceneid); - evstring_free(sceneid_id); - evstring_free(scenepath); - evstring_free(scenepath_id); - } - - evstring activeScene = evstring_refclone(evjs_get(project_desc.json_data, "activeScene")->as_str); - Game->setActiveScene(Scene->getFromName(activeScene)); - evstring_free(activeScene); + evstring_free(mountpoint_id); + evstring_free(path_id); } + Renderer->setWindow((GenericHandle)State.window); + + + // Loading Scenes + double scene_count = evjs_get(project_desc.json_data, "scenes.len")->as_num; + for(int i = 0; i < (int)scene_count;i++) { + evstring scenepath_id = evstring_newfmt("scenes[%d].path", i); + evstring sceneid_id = evstring_newfmt("scenes[%d].id", i); + evstring scenepath = evstring_newFromView(evjs_get(project_desc.json_data, scenepath_id)->as_str); + evstring sceneid = evstring_newFromView(evjs_get(project_desc.json_data, sceneid_id)->as_str); + + GameScene scene = Scene->loadFromFile(scenepath); + Scene->setName(scene, sceneid); + + evstring_free(sceneid); + evstring_free(sceneid_id); + evstring_free(scenepath); + evstring_free(scenepath_id); + } + + evstring activeScene = evstring_newFromView(evjs_get(project_desc.json_data, "activeScene")->as_str); + Game->setActiveScene(Scene->getFromName(activeScene)); + evstring_free(activeScene); + Asset->free(project_config); + evstring_free(project_dir); }