From: Frederic Suter Date: Thu, 8 Sep 2016 15:31:29 +0000 (+0200) Subject: more objects X-Git-Tag: v3_14~413 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/e6a7d990e6208bbd5f76abff2db292395506e205 more objects --- diff --git a/include/simgrid/jedule/jedule_events.hpp b/include/simgrid/jedule/jedule_events.hpp index 757e720eb9..0cf00dbfa9 100644 --- a/include/simgrid/jedule/jedule_events.hpp +++ b/include/simgrid/jedule/jedule_events.hpp @@ -21,8 +21,7 @@ namespace jedule{ XBT_PUBLIC_CLASS Event{ public: - Event(std::string name, double start_time, double end_time, std::string type) - : name(name), start_time(start_time), end_time(end_time), type(type){} + Event(std::string name, double start_time, double end_time, std::string type); ~Event(); void addCharacteristic(char *characteristic); void addResources(std::vector *host_selection); @@ -34,7 +33,7 @@ XBT_PUBLIC_CLASS Event{ double start_time; double end_time; std::string type; - std::vector resource_subsets; + std::vector *resource_subsets; std::vector characteristics_list; /* just a list of names (strings) */ std::unordered_map info_map; /* key/value pairs */ }; diff --git a/include/simgrid/jedule/jedule_platform.hpp b/include/simgrid/jedule/jedule_platform.hpp index 3efd11cf4a..6c0055ed00 100644 --- a/include/simgrid/jedule/jedule_platform.hpp +++ b/include/simgrid/jedule/jedule_platform.hpp @@ -13,7 +13,6 @@ #include #include #include - #if HAVE_JEDULE namespace simgrid { @@ -27,7 +26,7 @@ private: int is_lowest = 0; public: std::string name; - std::unordered_map name2id; + std::unordered_map name2id; Container *parent = nullptr; std::vector children; std::vector resource_list; @@ -40,38 +39,21 @@ public: void printResources(FILE *file); }; -} -} -SG_BEGIN_DECL() -typedef simgrid::jedule::Container * jed_container_t; - -/* FIXME: jedule_container should be objectified too */ -/** selection of a subset of resources from the original set */ -struct jed_res_subset { - jed_container_t parent; +XBT_PUBLIC_CLASS Subset { +public: + Subset(int s, int n, Container* p); + virtual ~Subset()=default; int start_idx; // start idx in resource_list of container int nres; // number of resources spanning starting at start_idx + Container *parent; }; -typedef struct jed_res_subset s_jed_res_subset_t, *jed_res_subset_t; - -/** - * it is assumed that the host_names in the entire system are unique that means that we don't need parent references - * - * subset_list must be allocated - * host_names is the list of host_names associated with an event - */ -void jed_simgrid_get_resource_selection_by_hosts(xbt_dynar_t subset_list, std::vector* host_list); - -/* - global: - hash host_id -> container - container: - hash host_id -> jed_host_id - list <- [ jed_host_ids ] - list <- sort( list ) - list_chunks <- chunk( list ) -> [ 1, 3-5, 7-9 ] -*/ +} +} +SG_BEGIN_DECL() +typedef simgrid::jedule::Container * jed_container_t; +typedef simgrid::jedule::Subset * jed_subset_t; +void get_resource_selection_by_hosts(std::vector* subset_list, std::vector *host_list); SG_END_DECL() diff --git a/src/instr/jedule/jedule_events.cpp b/src/instr/jedule/jedule_events.cpp index 5d4c94977c..b7ff520cbd 100644 --- a/src/instr/jedule/jedule_events.cpp +++ b/src/instr/jedule/jedule_events.cpp @@ -5,7 +5,9 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "simgrid/jedule/jedule_events.hpp" +#include "simgrid/jedule/jedule_platform.hpp" #include "simgrid/jedule/jedule.hpp" +#include "simgrid/s4u/As.hpp" #include "xbt/asserts.h" @@ -13,29 +15,28 @@ namespace simgrid{ namespace jedule{ -Event::~Event(){ - while (!this->resource_subsets.empty()){ - xbt_free(this->resource_subsets.back()); - this->resource_subsets.pop_back(); - } +Event::Event(std::string name, double start_time, double end_time, std::string type) + : name(name), start_time(start_time), end_time(end_time), type(type) +{ + this->resource_subsets = new std::vector(); } -void Event::addResources(std::vector *host_selection) { - xbt_dynar_t resource_subset_list; - jed_res_subset_t res_set; - unsigned int i; - - resource_subset_list = xbt_dynar_new(sizeof(jed_res_subset_t), nullptr); - - jed_simgrid_get_resource_selection_by_hosts(resource_subset_list, host_selection); - xbt_dynar_foreach(resource_subset_list, i, res_set) { - this->resource_subsets.push_back(res_set); +Event::~Event() +{ + if (!this->resource_subsets->empty()){ + for (auto subset: *this->resource_subsets) + delete subset; + delete this->resource_subsets; } +} - xbt_dynar_free_container(&resource_subset_list); +void Event::addResources(std::vector *host_selection) +{ + get_resource_selection_by_hosts(this->resource_subsets, host_selection); } -void Event::addCharacteristic(char *characteristic) { +void Event::addCharacteristic(char *characteristic) +{ xbt_assert( characteristic != nullptr ); this->characteristics_list.push_back(characteristic); } @@ -45,19 +46,20 @@ void Event::addInfo(char* key, char *value) { this->info_map.insert({key, value}); } -void Event::print(FILE *jed_file){ +void Event::print(FILE *jed_file) +{ fprintf(jed_file, " \n"); fprintf(jed_file, " \n", this->name.c_str()); fprintf(jed_file, " \n", this->start_time); fprintf(jed_file, " \n", this->end_time); fprintf(jed_file, " \n", this->type.c_str()); - xbt_assert(!this->resource_subsets.empty()); + xbt_assert(!this->resource_subsets-> empty()); fprintf(jed_file, " \n"); - for (auto subset: this->resource_subsets) { + for (auto subset: *this->resource_subsets) { fprintf(jed_file, "