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