From 1bf4f246c22dfdc88c4765b0ebbb70f42c1fed1d Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Thu, 28 Nov 2024 00:51:42 -0600 Subject: [PATCH] [applib] Make run take args as a SpanView --- src/olympic/applib/applib.cpp | 9 ++++++--- src/olympic/keel/src/module.cpp | 4 +++- src/olympic/keel/src/pack-applib.cpp | 9 ++++----- src/olympic/studio/applib/src/main.cpp | 8 +++----- src/olympic/studio/applib/src/studioapp.cpp | 12 +++++++----- src/olympic/studio/applib/src/studioapp.hpp | 2 +- 6 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/olympic/applib/applib.cpp b/src/olympic/applib/applib.cpp index ee6057e2..28211d82 100644 --- a/src/olympic/applib/applib.cpp +++ b/src/olympic/applib/applib.cpp @@ -41,8 +41,7 @@ ox::Error run( ox::StringView project, ox::StringView appName, ox::StringView projectDataDir, - int argc, - char const**argv) noexcept; + ox::SpanView argv) noexcept; } @@ -65,7 +64,11 @@ int main(int argc, char const**argv) { #if OLYMPIC_LOAD_STUDIO_MODULES OLYMPIC_PROJECT_NAMESPACE::registerStudioModules(); #endif - auto const err = olympic::run(OLYMPIC_PROJECT_NAME, OLYMPIC_APP_NAME, OLYMPIC_PROJECT_DATADIR, argc, argv); + auto const err = olympic::run( + OLYMPIC_PROJECT_NAME, + OLYMPIC_APP_NAME, + OLYMPIC_PROJECT_DATADIR, + {argv, static_cast(argc)}); oxAssert(err, "Something went wrong..."); if (err) { oxErrf("Failure: {}\n", toStr(err)); diff --git a/src/olympic/keel/src/module.cpp b/src/olympic/keel/src/module.cpp index 54462a8e..5fd00124 100644 --- a/src/olympic/keel/src/module.cpp +++ b/src/olympic/keel/src/module.cpp @@ -9,7 +9,9 @@ namespace keel { static ox::Vector mods; void registerModule(Module const*mod) noexcept { - mods.emplace_back(mod); + if (mod) { + mods.emplace_back(mod); + } } [[nodiscard]] diff --git a/src/olympic/keel/src/pack-applib.cpp b/src/olympic/keel/src/pack-applib.cpp index 820a2a48..3f480f0f 100644 --- a/src/olympic/keel/src/pack-applib.cpp +++ b/src/olympic/keel/src/pack-applib.cpp @@ -81,8 +81,8 @@ static ox::Error pack( return {}; } -static ox::Error run(int argc, char const**argv, ox::StringView projectDataDir) noexcept { - ox::ClArgs const args(argc, argv); +static ox::Error run(ox::SpanView argv, ox::StringView projectDataDir) noexcept { + ox::ClArgs const args(argv); auto const argSrc = args.getString("src", ""); auto const argRomBin = args.getString("rom-bin", ""); auto const argManifest = args.getString("manifest", ""); @@ -103,9 +103,8 @@ ox::Error run( [[maybe_unused]] ox::StringView project, [[maybe_unused]] ox::StringView appName, ox::StringView projectDataDir, - int argc, - char const**argv) noexcept { - return ::run(argc, argv, projectDataDir); + ox::SpanView argv) noexcept { + return ::run(argv, projectDataDir); } } diff --git a/src/olympic/studio/applib/src/main.cpp b/src/olympic/studio/applib/src/main.cpp index e1cf5cf9..b2574500 100644 --- a/src/olympic/studio/applib/src/main.cpp +++ b/src/olympic/studio/applib/src/main.cpp @@ -52,8 +52,7 @@ static ox::Error runApp( static ox::Error run( ox::StringViewCR appName, ox::StringViewCR projectDataDir, - int, - char const**) { + ox::SpanView) { // seed UUID generator auto const time = std::time(nullptr); ox::UUID::seedGenerator({ @@ -74,9 +73,8 @@ ox::Error run( ox::StringView project, ox::StringView appName, ox::StringView projectDataDir, - int argc, - char const**argv) noexcept { - return studio::run(ox::sfmt("{} {}", project, appName), projectDataDir, argc, argv); + ox::SpanView args) noexcept { + return studio::run(ox::sfmt("{} {}", project, appName), projectDataDir, args); } } diff --git a/src/olympic/studio/applib/src/studioapp.cpp b/src/olympic/studio/applib/src/studioapp.cpp index 2dfada02..001d054a 100644 --- a/src/olympic/studio/applib/src/studioapp.cpp +++ b/src/olympic/studio/applib/src/studioapp.cpp @@ -21,7 +21,9 @@ namespace studio { static ox::Vector modules; void registerModule(studio::Module const*mod) noexcept { - modules.emplace_back(mod); + if (mod) { + modules.emplace_back(mod); + } } @@ -238,18 +240,18 @@ void StudioUI::loadEditorMaker(studio::EditorMaker const&editorMaker) noexcept { } } -void StudioUI::loadModule(studio::Module const*mod) noexcept { - for (auto const&editorMaker : mod->editors(m_sctx)) { +void StudioUI::loadModule(studio::Module const&mod) noexcept { + for (auto const&editorMaker : mod.editors(m_sctx)) { loadEditorMaker(editorMaker); } - for (auto &im : mod->itemMakers(m_sctx)) { + for (auto &im : mod.itemMakers(m_sctx)) { m_newMenu.addItemMaker(std::move(im)); } } void StudioUI::loadModules() noexcept { for (auto const mod : modules) { - loadModule(mod); + loadModule(*mod); } } diff --git a/src/olympic/studio/applib/src/studioapp.hpp b/src/olympic/studio/applib/src/studioapp.hpp index efd374c6..b0534d77 100644 --- a/src/olympic/studio/applib/src/studioapp.hpp +++ b/src/olympic/studio/applib/src/studioapp.hpp @@ -69,7 +69,7 @@ class StudioUI: public ox::SignalHandler { void loadEditorMaker(studio::EditorMaker const&editorMaker) noexcept; - void loadModule(studio::Module const*mod) noexcept; + void loadModule(studio::Module const&mod) noexcept; void loadModules() noexcept;