A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
create a singleton for s4u::Engine
[simgrid.git]
/
src
/
s4u
/
s4u_engine.cpp
diff --git
a/src/s4u/s4u_engine.cpp
b/src/s4u/s4u_engine.cpp
index
ca3415a
..
ce3cc47
100644
(file)
--- a/
src/s4u/s4u_engine.cpp
+++ b/
src/s4u/s4u_engine.cpp
@@
-12,14
+12,26
@@
XBT_LOG_NEW_CATEGORY(s4u,"Log channels of the S4U (Simgrid for you) interface");
using namespace simgrid;
XBT_LOG_NEW_CATEGORY(s4u,"Log channels of the S4U (Simgrid for you) interface");
using namespace simgrid;
-double s4u::Engine::getClock() {
- return SIMIX_get_clock();
-}
+s4u::Engine *s4u::Engine::instance_ = nullptr; /* That singleton is awful, but I don't see no other solution right now. */
+
s4u::Engine::Engine(int *argc, char **argv) {
s4u::Engine::Engine(int *argc, char **argv) {
+ xbt_assert(s4u::Engine::instance_ == nullptr, "It is currently forbidden to create more than one instance of s4u::Engine");
+ s4u::Engine::instance_ = this;
+
SIMIX_global_init(argc, argv);
}
SIMIX_global_init(argc, argv);
}
+s4u::Engine *s4u::Engine::instance() {
+ if (s4u::Engine::instance_ == nullptr)
+ new Engine(0,nullptr);
+ return s4u::Engine::instance_;
+}
+
+double s4u::Engine::getClock() {
+ return SIMIX_get_clock();
+}
+
void s4u::Engine::loadPlatform(const char *platf) {
SIMIX_create_environment(platf);
}
void s4u::Engine::loadPlatform(const char *platf) {
SIMIX_create_environment(platf);
}