X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7b20a596a629242418d813ae845fcd64d36fc150..472b2aa318353674993dffd9792f1a155f579d6f:/include/simgrid/s4u/engine.hpp?ds=sidebyside diff --git a/include/simgrid/s4u/engine.hpp b/include/simgrid/s4u/engine.hpp index 07863e17e8..a6ee0bda92 100644 --- a/include/simgrid/s4u/engine.hpp +++ b/include/simgrid/s4u/engine.hpp @@ -6,6 +6,10 @@ #ifndef SIMGRID_S4U_ENGINE_HPP #define SIMGRID_S4U_ENGINE_HPP +#include +#include +#include + #include #include @@ -14,12 +18,18 @@ #include namespace simgrid { +namespace kernel { +class EngineImpl; +} namespace s4u { /** @brief Simulation engine * * This class is an interface to the simulation engine. */ XBT_PUBLIC_CLASS Engine { +private: + ~Engine(); + public: /** Constructor, taking the command line parameters of your main function */ Engine(int *argc, char **argv); @@ -56,15 +66,19 @@ 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); + /** @brief Retrieve the root netzone, containing all others */ + simgrid::s4u::NetZone* netRoot(); + + /** @brief Retrieve the netzone of the given name (or nullptr if not found) */ + simgrid::s4u::NetZone* netzoneByNameOrNull(const char* name); + + /** @brief Retrieve the netcard of the given name (or nullptr if not found) */ + simgrid::kernel::routing::NetCard* netcardByNameOrNull(const char* name); template void registerFunction(const char* name) { - simgrid::simix::registerFunction(name, [](simgrid::xbt::args args){ + simgrid::simix::registerFunction(name, [](std::vector args){ return simgrid::simix::ActorCode([args] { F code(std::move(args)); code(); @@ -75,13 +89,15 @@ public: template void registerFunction(const char* name, F code) { - simgrid::simix::registerFunction(name, [code](simgrid::xbt::args args){ + simgrid::simix::registerFunction(name, [code](std::vector args){ return simgrid::simix::ActorCode([code,args] { code(std::move(args)); }); }); } + simgrid::kernel::EngineImpl* pimpl; + private: static s4u::Engine *instance_; };