diff --git a/src/language/modules/CMakeLists.txt b/src/language/modules/CMakeLists.txt index 0a996fd6764b4d2eed57c02e8682283f1e640901..cd4c99bd8fb9d8e354706020a4077bf0c8234057 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 df403fa87f0c0d39778414a92ec7aa991b3d8d5b..83d44b23ee90423f495144216f5244a9b40db482 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 0000000000000000000000000000000000000000..ff5b2a0df4ae576546d30e2c8a73934a8f443526 --- /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 0000000000000000000000000000000000000000..f7580a0422d3d8dabbd8c931b99dbfc7601f84da --- /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