X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/571ed94e23c9aefbd5f81f1a800eb5f1dddd8ae9..2fe56becb7b12edd78788a83dbc1d3e1d85d9dbc:/include/simgrid/s4u/engine.hpp diff --git a/include/simgrid/s4u/engine.hpp b/include/simgrid/s4u/engine.hpp index 2c9fa3cd13..dc982073d1 100644 --- a/include/simgrid/s4u/engine.hpp +++ b/include/simgrid/s4u/engine.hpp @@ -6,7 +6,14 @@ #ifndef SIMGRID_S4U_ENGINE_HPP #define SIMGRID_S4U_ENGINE_HPP +#include +#include +#include + #include +#include + +#include #include @@ -21,6 +28,9 @@ public: /** Constructor, taking the command line parameters of your main function */ Engine(int *argc, char **argv); + /** Finalize the default engine and all its dependencies */ + static void shutdown(); + /** @brief Load a platform file describing the environment * * The environment is either a XML file following the simgrid.dtd formalism, or a lua file. @@ -49,9 +59,36 @@ public: /** @brief Retrieve the engine singleton */ static s4u::Engine *instance(); + + /** @brief Retrieve the root AS, containing all others */ + simgrid::s4u::As *rootAs(); + /** @brief Retrieve the AS of the given name (or nullptr if not found) */ + simgrid::s4u::As *asByNameOrNull(const char *name); + + template + void registerFunction(const char* name) + { + simgrid::simix::registerFunction(name, [](std::vector args){ + return simgrid::simix::ActorCode([args] { + F code(std::move(args)); + code(); + }); + }); + } + + template + void registerFunction(const char* name, F code) + { + simgrid::simix::registerFunction(name, [code](std::vector args){ + return simgrid::simix::ActorCode([code,args] { + code(std::move(args)); + }); + }); + } + private: static s4u::Engine *instance_; }; -}} // namespace simgrid::sgo +}} // namespace simgrid::s4u #endif /* SIMGRID_S4U_ENGINE_HPP */