+NetZoneContainer::NetZoneContainer(std::string name, unsigned int level, NetZoneContainer* father)
+ : Container::Container(name, "", father)
+{
+ netpoint_ = simgrid::s4u::Engine::getInstance()->getNetpointByNameOrNull(name);
+ xbt_assert(netpoint_, "Element '%s' not found", name.c_str());
+ if (father_) {
+ type_ = father_->type_->getOrCreateContainerType(std::string("L") + std::to_string(level));
+ father_->children_.insert({getName(), this});
+ logCreation();
+ } else {
+ type_ = Type::createRootType();
+ PJ_container_set_root(this);
+ }
+}
+
+RouterContainer::RouterContainer(std::string name, Container* father) : Container::Container(name, "ROUTER", father)
+{
+ xbt_assert(father, "Only the Root container has no father");
+
+ netpoint_ = simgrid::s4u::Engine::getInstance()->getNetpointByNameOrNull(name);
+ xbt_assert(netpoint_, "Element '%s' not found", name.c_str());
+
+ trivaNodeTypes.insert(type_->getName());
+}
+
+HostContainer::HostContainer(simgrid::s4u::Host& host, NetZoneContainer* father)
+ : Container::Container(host.getCname(), "HOST", father)
+{
+ xbt_assert(father, "Only the Root container has no father");
+
+ netpoint_ = host.pimpl_netpoint;
+ xbt_assert(netpoint_, "Element '%s' not found", host.getCname());
+
+ trivaNodeTypes.insert(type_->getName());
+}
+
+Container::Container(std::string name, std::string type_name, Container* father) : name_(name), father_(father)