Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
New: Engine::hostList() and Engine::hostCount(). Still clumsy.
[simgrid.git] / src / s4u / s4u_engine.cpp
index 085e4e6..0434602 100644 (file)
@@ -78,6 +78,19 @@ void Engine::loadDeployment(const char *deploy)
 {
   SIMIX_launch_application(deploy);
 }
+// FIXME: The following duplicates the content of s4u::Host
+extern std::map<std::string, simgrid::s4u::Host*> host_list;
+/** @brief Returns the amount of hosts in the platform */
+unsigned int Engine::hostCount()
+{
+  return host_list.size();
+}
+/** @brief Fills the passed list with all hosts found in the platform */
+void Engine::hostList(std::vector<Host*>* list)
+{
+  for (auto kv : host_list)
+    list->push_back(kv.second);
+}
 
 void Engine::run() {
   if (MC_is_active()) {
@@ -97,13 +110,11 @@ static s4u::NetZone* netzoneByNameRecursive(s4u::NetZone* current, const char* n
   if(!strcmp(current->name(), name))
     return current;
 
-  xbt_dict_cursor_t cursor = nullptr;
-  char *key;
-  NetZone_t elem;
-  xbt_dict_foreach(current->children(), cursor, key, elem) {
+  for (auto elem : *(current->children())) {
     simgrid::s4u::NetZone* tmp = netzoneByNameRecursive(elem, name);
-    if (tmp != nullptr )
-        return tmp;
+    if (tmp != nullptr) {
+      return tmp;
+    }
   }
   return nullptr;
 }