From a37e6a091420ca90db7229dbf92c242984a68df8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Mon, 9 Nov 2020 14:03:56 +0100 Subject: [PATCH] Add 'utils' module It provides getPugsVersion() and getPugsBuildInfo() functions which return string --- src/language/modules/CMakeLists.txt | 1 + src/language/modules/ModuleRepository.cpp | 6 ++++-- src/language/modules/UtilsModule.cpp | 19 +++++++++++++++++++ src/language/modules/UtilsModule.hpp | 19 +++++++++++++++++++ 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 src/language/modules/UtilsModule.cpp create mode 100644 src/language/modules/UtilsModule.hpp diff --git a/src/language/modules/CMakeLists.txt b/src/language/modules/CMakeLists.txt index 0a996fd67..cd4c99bd8 100644 --- a/src/language/modules/CMakeLists.txt +++ b/src/language/modules/CMakeLists.txt @@ -7,6 +7,7 @@ add_library(PugsLanguageModules MeshModule.cpp ModuleRepository.cpp SchemeModule.cpp + UtilsModule.cpp VTKModule.cpp ) diff --git a/src/language/modules/ModuleRepository.cpp b/src/language/modules/ModuleRepository.cpp index df403fa87..83d44b23e 100644 --- a/src/language/modules/ModuleRepository.cpp +++ b/src/language/modules/ModuleRepository.cpp @@ -5,6 +5,7 @@ #include <language/modules/MathModule.hpp> #include <language/modules/MeshModule.hpp> #include <language/modules/SchemeModule.hpp> +#include <language/modules/UtilsModule.hpp> #include <language/modules/VTKModule.hpp> #include <language/utils/BuiltinFunctionEmbedder.hpp> #include <language/utils/ParseError.hpp> @@ -20,11 +21,12 @@ ModuleRepository::_subscribe(std::unique_ptr<IModule> m) ModuleRepository::ModuleRepository() { + this->_subscribe(std::make_unique<LinearSolverModule>()); this->_subscribe(std::make_unique<MathModule>()); this->_subscribe(std::make_unique<MeshModule>()); - this->_subscribe(std::make_unique<VTKModule>()); this->_subscribe(std::make_unique<SchemeModule>()); - this->_subscribe(std::make_unique<LinearSolverModule>()); + this->_subscribe(std::make_unique<UtilsModule>()); + this->_subscribe(std::make_unique<VTKModule>()); } template <typename NameEmbedderMapT, typename EmbedderTableT> diff --git a/src/language/modules/UtilsModule.cpp b/src/language/modules/UtilsModule.cpp new file mode 100644 index 000000000..ff5b2a0df --- /dev/null +++ b/src/language/modules/UtilsModule.cpp @@ -0,0 +1,19 @@ +#include <language/modules/UtilsModule.hpp> + +#include <language/utils/BuiltinFunctionEmbedder.hpp> +#include <utils/PugsUtils.hpp> + +UtilsModule::UtilsModule() +{ + this->_addBuiltinFunction("getPugsVersion", std::make_shared<BuiltinFunctionEmbedder<std::string(void)>>( + + []() -> std::string { return pugsVersion(); } + + )); + + this->_addBuiltinFunction("getPugsBuildInfo", std::make_shared<BuiltinFunctionEmbedder<std::string(void)>>( + + []() -> std::string { return pugsBuildInfo(); } + + )); +} diff --git a/src/language/modules/UtilsModule.hpp b/src/language/modules/UtilsModule.hpp new file mode 100644 index 000000000..f7580a042 --- /dev/null +++ b/src/language/modules/UtilsModule.hpp @@ -0,0 +1,19 @@ +#ifndef UTILS_MODULE_HPP +#define UTILS_MODULE_HPP + +#include <language/modules/BuiltinModule.hpp> + +class UtilsModule : public BuiltinModule +{ + public: + std::string_view + name() const final + { + return "utils"; + } + + UtilsModule(); + ~UtilsModule() = default; +}; + +#endif // UTILS_MODULE_HPP -- GitLab