+
+} // namespace s4u
+} // namespace simgrid
+
+/* **************************** Public C interface *************************** */
+
+sg_netzone_t sg_zone_get_root()
+{
+ return simgrid::s4u::Engine::getInstance()->getNetRoot();
+}
+
+const char* sg_zone_get_name(sg_netzone_t netzone)
+{
+ return netzone->get_cname();
+}
+
+sg_netzone_t sg_zone_get_by_name(const char* name)
+{
+ return simgrid::s4u::Engine::getInstance()->getNetzoneByNameOrNull(name);
+}
+
+void sg_zone_get_sons(sg_netzone_t netzone, xbt_dict_t whereto)
+{
+ for (auto const& elem : *netzone->getChildren()) {
+ xbt_dict_set(whereto, elem->get_cname(), static_cast<void*>(elem), nullptr);
+ }
+}
+
+const char* sg_zone_get_property_value(sg_netzone_t netzone, const char* name)
+{
+ return netzone->getProperty(name);
+}
+
+void sg_zone_set_property_value(sg_netzone_t netzone, const char* name, char* value)
+{
+ netzone->setProperty(name, value);
+}
+
+void sg_zone_get_hosts(sg_netzone_t netzone, xbt_dynar_t whereto)
+{
+ /* converts vector to dynar */
+ std::vector<simgrid::s4u::Host*> hosts;
+ netzone->getHosts(&hosts);
+ for (auto const& host : hosts)
+ xbt_dynar_push(whereto, &host);