Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
cast once for all at surf level and not in the APIs
[simgrid.git] / src / s4u / s4u_engine.cpp
index 7c23adc..5734a1f 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 */
+size_t 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,9 @@ 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;
-  s4u::NetZone* elem;
-  xbt_dict_foreach(current->children(), cursor, key, elem) {
+  for (auto elem : *(current->children())) {
     simgrid::s4u::NetZone* tmp = netzoneByNameRecursive(elem, name);
     if (tmp != nullptr) {
-      xbt_dict_cursor_free(&cursor);
       return tmp;
     }
   }