From facb3d606aae8514acc1164bf6cd27b5b821dd20 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Mon, 16 Aug 2021 14:48:13 +0200 Subject: [PATCH] SCRIPT: Add the resolv module method (names -> modules in module declaration) --- src/Lib/Script/CRTPLuaScriptObject.cc | 18 +++++++++++++++++- src/Lib/Script/CRTPLuaScriptObject.hh | 3 +++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Lib/Script/CRTPLuaScriptObject.cc b/src/Lib/Script/CRTPLuaScriptObject.cc index 49889be7..d7dd9ac5 100644 --- a/src/Lib/Script/CRTPLuaScriptObject.cc +++ b/src/Lib/Script/CRTPLuaScriptObject.cc @@ -17,6 +17,21 @@ FreeFunctions::print(lua_State *L) noexcept // ModuleDeclaration +bool +ModuleDeclaration::resolvModules(LuaContext *const context) noexcept +{ + for (const auto &str : importNames) { + const ModuleDeclaration *const mod = context->getModule(str); + if (mod) { + importedModules.emplace_back(mod); + } else { + context->setFailed("Failed to find needed module: " + str); + return false; + } + } + return true; +} + int ModuleDeclaration::setName(lua_State *const L) noexcept { @@ -184,7 +199,8 @@ ModuleDeclaration::validateModule(lua_State *const L) const noexcept for (const auto &str : unusedImports) listStrImports += " " + str; - context->setFailed("There are imported modules that are used without being declared:" + + context->setFailed("There are imported modules that are " + "used without being declared:" + listStrImports + "\n"); return false; } diff --git a/src/Lib/Script/CRTPLuaScriptObject.hh b/src/Lib/Script/CRTPLuaScriptObject.hh index 5f717f7b..1c09bc20 100644 --- a/src/Lib/Script/CRTPLuaScriptObject.hh +++ b/src/Lib/Script/CRTPLuaScriptObject.hh @@ -250,6 +250,7 @@ script_class (ModuleDeclaration) { // Will be resolved later std::vector<std::string> importNames{}; + std::vector<const ModuleDeclaration *> importedModules{}; bool validateModule(lua_State *const) const noexcept; @@ -262,6 +263,8 @@ public: std::vector<OptionDeclaration *> moduleOptions{}; std::vector<FunctionDeclaration *> moduleFunctions{}; std::vector<JobDeclaration *> moduleJobs{}; + + bool resolvModules(LuaContext *const) noexcept; }; // Holds all the free functions (well, not really free functions here...) -- GitLab