X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7af5f68e45deae49059e1495630646d0c875a6a5..1cce0801abcad7c884f9e72ceda87e36d6635104:/include/simgrid/s4u/engine.hpp diff --git a/include/simgrid/s4u/engine.hpp b/include/simgrid/s4u/engine.hpp index ecd7f7db52..e7b184c175 100644 --- a/include/simgrid/s4u/engine.hpp +++ b/include/simgrid/s4u/engine.hpp @@ -7,6 +7,9 @@ #define SIMGRID_S4U_ENGINE_HPP #include +#include + +#include #include @@ -52,14 +55,35 @@ public: /** @brief Retrieve the engine singleton */ static s4u::Engine *instance(); -private: - static s4u::Engine *instance_; -public: /** @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::s4u