Engine* Engine::instance_ = nullptr; /* That singleton is awful, but I don't see no other solution right now. */
-Engine::Engine(int* argc, char** argv) : pimpl(new kernel::EngineImpl())
+void Engine::initialize(int* argc, char** argv)
{
xbt_assert(Engine::instance_ == nullptr, "It is currently forbidden to create more than one instance of s4u::Engine");
instr::init();
SIMIX_global_init(argc, argv);
-
Engine::instance_ = this;
}
+Engine::Engine(std::string name) : pimpl(new kernel::EngineImpl())
+{
+ int argc = 1;
+ char* argv = &name[0];
+ initialize(&argc, &argv);
+}
+
+Engine::Engine(int* argc, char** argv) : pimpl(new kernel::EngineImpl())
+{
+ initialize(argc, argv);
+}
+
Engine::~Engine()
{
delete pimpl;
return netp == pimpl->netpoints_.end() ? nullptr : netp->second;
}
+kernel::routing::NetPoint* Engine::netpoint_by_name(const std::string& name) const
+{
+ auto netp = netpoint_by_name_or_null(name);
+ if (netp == nullptr) {
+ throw std::invalid_argument(std::string("Netpoint not found: %s") + name);
+ }
+ return netp;
+}
+
std::vector<kernel::routing::NetPoint*> Engine::get_all_netpoints() const
{
std::vector<kernel::routing::NetPoint*> res;