From ab38cbb3d5cb6923cc6d682dbb0f8bf5302b11df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Thu, 8 Jul 2021 19:07:15 +0200 Subject: [PATCH] Plug RandomEngine to pugs' language - resetRandomSeed: void -> void This sets a new parallel random seed (which is displayed to allow its reuse) - setRandomSeed: N -> void Sets the random seed to a given value (parallel broadcast) --- src/language/modules/CoreModule.cpp | 30 +++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/language/modules/CoreModule.cpp b/src/language/modules/CoreModule.cpp index 0c4f2b354..1cc699455 100644 --- a/src/language/modules/CoreModule.cpp +++ b/src/language/modules/CoreModule.cpp @@ -1,5 +1,8 @@ #include <language/modules/CoreModule.hpp> +#include <language/modules/CoreModule.hpp> +#include <language/modules/ModuleRepository.hpp> +#include <language/utils/ASTExecutionInfo.hpp> #include <language/utils/AffectationProcessorBuilder.hpp> #include <language/utils/AffectationRegisterForB.hpp> #include <language/utils/AffectationRegisterForN.hpp> @@ -8,7 +11,6 @@ #include <language/utils/AffectationRegisterForRnxn.hpp> #include <language/utils/AffectationRegisterForString.hpp> #include <language/utils/AffectationRegisterForZ.hpp> - #include <language/utils/BinaryOperatorRegisterForB.hpp> #include <language/utils/BinaryOperatorRegisterForN.hpp> #include <language/utils/BinaryOperatorRegisterForR.hpp> @@ -16,23 +18,21 @@ #include <language/utils/BinaryOperatorRegisterForRnxn.hpp> #include <language/utils/BinaryOperatorRegisterForString.hpp> #include <language/utils/BinaryOperatorRegisterForZ.hpp> - +#include <language/utils/BuiltinFunctionEmbedder.hpp> #include <language/utils/IncDecOperatorRegisterForN.hpp> #include <language/utils/IncDecOperatorRegisterForR.hpp> #include <language/utils/IncDecOperatorRegisterForZ.hpp> - #include <language/utils/UnaryOperatorRegisterForB.hpp> #include <language/utils/UnaryOperatorRegisterForN.hpp> #include <language/utils/UnaryOperatorRegisterForR.hpp> #include <language/utils/UnaryOperatorRegisterForRn.hpp> #include <language/utils/UnaryOperatorRegisterForRnxn.hpp> #include <language/utils/UnaryOperatorRegisterForZ.hpp> - -#include <language/modules/CoreModule.hpp> -#include <language/modules/ModuleRepository.hpp> -#include <language/utils/ASTExecutionInfo.hpp> -#include <language/utils/BuiltinFunctionEmbedder.hpp> +#include <utils/Messenger.hpp> #include <utils/PugsUtils.hpp> +#include <utils/RandomEngine.hpp> + +#include <random> CoreModule::CoreModule() : BuiltinModule(true) { @@ -69,6 +69,20 @@ CoreModule::CoreModule() : BuiltinModule(true) } )); + + this->_addBuiltinFunction("setRandomSeed", std::make_shared<BuiltinFunctionEmbedder<void(const int64_t&)>>( + + [](const int64_t& random_seed) -> void { + RandomEngine::instance().setRandomSeed(random_seed); + } + + )); + + this->_addBuiltinFunction("resetRandomSeed", std::make_shared<BuiltinFunctionEmbedder<void(void)>>( + + []() { RandomEngine::instance().resetRandomSeed(); } + + )); } void -- GitLab