X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fabf70a9d566725d01d925f83fae02ab82a95547..c4000f89d4644c3d7ff6187a62a0930c4d53e683:/src/instr/jedule/jedule_platform.cpp diff --git a/src/instr/jedule/jedule_platform.cpp b/src/instr/jedule/jedule_platform.cpp index 1bc42afffe..5d80ae677d 100644 --- a/src/instr/jedule/jedule_platform.cpp +++ b/src/instr/jedule/jedule_platform.cpp @@ -1,15 +1,21 @@ -/* Copyright (c) 2010-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-2018. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ #include "simgrid/jedule/jedule.hpp" +#include "simgrid/host.h" #include "simgrid/s4u/NetZone.hpp" #include "xbt/asserts.h" #include #if SIMGRID_HAVE_JEDULE +namespace { +std::unordered_map host2_simgrid_parent_container; +std::unordered_map container_name2container; +} + namespace simgrid { namespace jedule { Subset::Subset(int start_idx, int end_idx, Container* parent) @@ -26,14 +32,13 @@ Container::Container(std::string name): name(name) Container::~Container() { - if(!this->children.empty()) - for (auto child: this->children) + if (not this->children.empty()) + for (auto const& child : this->children) delete child; } void Container::addChild(jed_container_t child) { - xbt_assert(this != nullptr); xbt_assert(child != nullptr); this->children.push_back(child); child->parent = this; @@ -47,7 +52,7 @@ void Container::addResources(std::vector hosts) //FIXME do we need to sort?: xbt_dynar_sort_strings(host_names); - for (auto host : hosts) { + for (auto const& host : hosts) { const char *host_name = sg_host_get_name(host); this->name2id.insert({host_name, this->last_id}); (this->last_id)++; @@ -59,15 +64,15 @@ void Container::addResources(std::vector hosts) void Container::createHierarchy(sg_netzone_t from_as) { - if (from_as->children()->empty()) { + if (from_as->getChildren()->empty()) { // I am no AS // add hosts to jedule platform std::vector table; - from_as->hosts(&table); + from_as->getHosts(&table); this->addResources(table); } else { - for (auto nz : *from_as->children()) { - jed_container_t child_container = new simgrid::jedule::Container(std::string(nz->name())); + for (auto const& nz : *from_as->getChildren()) { + jed_container_t child_container = new simgrid::jedule::Container(std::string(nz->get_cname())); this->addChild(child_container); child_container->createHierarchy(nz); } @@ -76,18 +81,16 @@ void Container::createHierarchy(sg_netzone_t from_as) std::vector Container::getHierarchy() { - xbt_assert( this!= nullptr ); - if(this->parent != nullptr ) { - if(!this->parent->children.empty()) { + if (not this->parent->children.empty()) { // we are in the last level return this->parent->getHierarchy(); } else { unsigned int i =0; int child_nb = -1; - for (auto child : this->parent->children) { + for (auto const& child : this->parent->children) { if( child == this) { child_nb = i; break; @@ -115,7 +118,7 @@ std::string Container::getHierarchyAsString() unsigned int length = heir_list.size(); unsigned int i = 0; - for (auto id : heir_list) { + for (auto const& id : heir_list) { output += std::to_string(id); if( i != length-1 ) { output += "."; @@ -128,13 +131,13 @@ std::string Container::getHierarchyAsString() void Container::printResources(FILE * jed_file) { unsigned int i=0; - xbt_assert(!this->resource_list.empty()); + xbt_assert(not this->resource_list.empty()); unsigned int res_nb = this->resource_list.size(); std::string resid = this->getHierarchyAsString(); fprintf(jed_file, " resource_list) { + for (auto const& res : this->resource_list) { const char * res_name = sg_host_get_name(res); fprintf(jed_file, "%s", res_name); if( i != res_nb-1 ) { @@ -147,10 +150,9 @@ void Container::printResources(FILE * jed_file) void Container::print(FILE* jed_file) { - xbt_assert( this != nullptr ); fprintf(jed_file, " \n", this->name.c_str()); - if( !this->children.empty()){ - for (auto child: this->children) { + if (not this->children.empty()) { + for (auto const& child : this->children) { child->print(jed_file); } } else { @@ -173,7 +175,7 @@ static void add_subsets_to(std::vector *subset_list, std::vector id_list; - for (auto host_name : hostgroup) { + for (auto const& host_name : hostgroup) { xbt_assert( host_name != nullptr ); jed_container_t parent = host2_simgrid_parent_container.at(host_name); unsigned int id = parent->name2id.at(host_name); @@ -211,7 +213,7 @@ void get_resource_selection_by_hosts(std::vector *subset_list, std // find parent container // group by parent container std::unordered_map> parent2hostgroup; - for (auto host: *host_list) { + for (auto const& host : *host_list) { const char *host_name = sg_host_get_name(host); jed_container_t parent = host2_simgrid_parent_container.at(host_name); xbt_assert( parent != nullptr ); @@ -223,7 +225,7 @@ void get_resource_selection_by_hosts(std::vector *subset_list, std host_group->second.push_back(host_name); } - for (auto elm: parent2hostgroup) { + for (auto const& elm : parent2hostgroup) { jed_container_t parent = container_name2container.at(elm.first); add_subsets_to(subset_list, elm.second, parent); }