Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
make s4u::Engine::pimpl private at the price of a static_cast deep below
[simgrid.git] / src / s4u / s4u_Engine.cpp
index 9bcbae9..5860786 100644 (file)
@@ -188,10 +188,17 @@ void Engine::run()
   }
 }
 
-s4u::NetZone* Engine::getNetRoot()
+/** @brief Retrieve the root netzone, containing all others */
+s4u::NetZone* Engine::get_netzone_root()
 {
   return pimpl->netzone_root_;
 }
+/** @brief Set the root netzone, containing all others. Once set, it cannot be changed. */
+void Engine::set_netzone_root(s4u::NetZone* netzone)
+{
+  xbt_assert(pimpl->netzone_root_ == nullptr, "The root NetZone cannot be changed once set");
+  pimpl->netzone_root_ = static_cast<kernel::routing::NetZoneImpl*>(netzone);
+}
 
 static s4u::NetZone* netzone_by_name_recursive(s4u::NetZone* current, const char* name)
 {
@@ -208,13 +215,13 @@ static s4u::NetZone* netzone_by_name_recursive(s4u::NetZone* current, const char
 }
 
 /** @brief Retrieve the NetZone of the given name (or nullptr if not found) */
-NetZone* Engine::getNetzoneByNameOrNull(const char* name)
+NetZone* Engine::netzone_by_name_or_null(const char* name)
 {
-  return netzone_by_name_recursive(getNetRoot(), name);
+  return netzone_by_name_recursive(get_netzone_root(), name);
 }
 
 /** @brief Retrieve the netpoint of the given name (or nullptr if not found) */
-simgrid::kernel::routing::NetPoint* Engine::getNetpointByNameOrNull(std::string name)
+simgrid::kernel::routing::NetPoint* Engine::netpoint_by_name_or_null(std::string name)
 {
   auto netp = pimpl->netpoints_.find(name);
   return netp == pimpl->netpoints_.end() ? nullptr : netp->second;