From: Martin Quinson Date: Tue, 12 Sep 2017 21:34:27 +0000 (+0200) Subject: convert a dict into a unordered_map X-Git-Tag: v3_17~131 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/3ce054415500e2f9b7ebf726c9f22446f5ec39f3?ds=sidebyside convert a dict into a unordered_map --- diff --git a/src/instr/instr_config.cpp b/src/instr/instr_config.cpp index 3e229a12c2..9e5889a446 100644 --- a/src/instr/instr_config.cpp +++ b/src/instr/instr_config.cpp @@ -144,7 +144,6 @@ int TRACE_end() /* destroy all data structures of tracing (and free) */ PJ_container_free_all(); recursiveDestroyType (PJ_type_get_root()); - PJ_container_release(); rootType = nullptr; /* close the trace files */ diff --git a/src/instr/instr_paje_containers.cpp b/src/instr/instr_paje_containers.cpp index 9208684f97..76b985257e 100644 --- a/src/instr/instr_paje_containers.cpp +++ b/src/instr/instr_paje_containers.cpp @@ -10,10 +10,13 @@ #include "src/instr/instr_private.h" +#include + XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_paje_containers, instr, "Paje tracing event system (containers)"); static container_t rootContainer = nullptr; /* the root container */ -static xbt_dict_t allContainers = nullptr; /* all created containers indexed by name */ +static std::unordered_map + allContainers; /* all created containers indexed by name */ std::set trivaNodeTypes; /* all host types defined */ std::set trivaEdgeTypes; /* all link types defined */ @@ -23,16 +26,6 @@ long long int instr_new_paje_id () return type_id++; } -void PJ_container_alloc () -{ - allContainers = xbt_dict_new_homogeneous(nullptr); -} - -void PJ_container_release () -{ - xbt_dict_free (&allContainers); -} - void PJ_container_set_root (container_t root) { rootContainer = root; @@ -128,11 +121,11 @@ simgrid::instr::Container::Container(const char* name, simgrid::instr::e_contain } //register all kinds by name - if (xbt_dict_get_or_null(allContainers, this->name_) != nullptr) { + if (allContainers.find(this->name_) != allContainers.end()) { THROWF(tracing_error, 1, "container %s already present in allContainers data structure", this->name_); } - xbt_dict_set(allContainers, this->name_, this, nullptr); + allContainers.emplace(this->name_, this); XBT_DEBUG("Add container name '%s'", this->name_); //register NODE types for triva configuration @@ -158,7 +151,7 @@ simgrid::instr::Container::~Container() } // remove it from allContainers data structure - xbt_dict_remove(allContainers, name_); + allContainers.erase(name_); // free xbt_free(name_); @@ -166,7 +159,7 @@ simgrid::instr::Container::~Container() xbt_dict_free(&children_); } -container_t PJ_container_get (const char *name) +simgrid::instr::Container* PJ_container_get(const char* name) { container_t ret = PJ_container_get_or_null (name); if (ret == nullptr){ @@ -175,12 +168,14 @@ container_t PJ_container_get (const char *name) return ret; } -container_t PJ_container_get_or_null (const char *name) +simgrid::instr::Container* PJ_container_get_or_null(const char* name) { - return static_cast(name != nullptr ? xbt_dict_get_or_null(allContainers, name) : nullptr); + if (allContainers.find(name) == allContainers.end()) + return nullptr; + return allContainers.at(name); } -container_t PJ_container_get_root () +simgrid::instr::Container* PJ_container_get_root() { return rootContainer; } @@ -223,7 +218,7 @@ void PJ_container_free_all () rootContainer = nullptr; //checks - if (not xbt_dict_is_empty(allContainers)) { + if (not allContainers.empty()) { THROWF(tracing_error, 0, "some containers still present even after destroying all of them"); } } diff --git a/src/instr/instr_private.h b/src/instr/instr_private.h index ea77f8bda7..d08f868dc2 100644 --- a/src/instr/instr_private.h +++ b/src/instr/instr_private.h @@ -326,10 +326,8 @@ XBT_PUBLIC(void) TRACE_surf_resource_utilization_alloc(); extern XBT_PRIVATE std::set trivaNodeTypes; extern XBT_PRIVATE std::set trivaEdgeTypes; XBT_PRIVATE long long int instr_new_paje_id (); -XBT_PRIVATE void PJ_container_alloc (); -XBT_PRIVATE void PJ_container_release (); XBT_PUBLIC(container_t) PJ_container_get (const char *name); -XBT_PUBLIC(container_t) PJ_container_get_or_null (const char *name); +XBT_PUBLIC(simgrid::instr::Container*) PJ_container_get_or_null(const char* name); XBT_PUBLIC(container_t) PJ_container_get_root (); XBT_PUBLIC(void) PJ_container_set_root (container_t root); XBT_PUBLIC(void) PJ_container_free_all (void); diff --git a/src/surf/instr_routing.cpp b/src/surf/instr_routing.cpp index 1106ad91da..d14300d1ea 100644 --- a/src/surf/instr_routing.cpp +++ b/src/surf/instr_routing.cpp @@ -166,7 +166,6 @@ static void sg_instr_AS_begin(simgrid::s4u::NetZone& netzone) const char* id = netzone.getCname(); if (PJ_container_get_root() == nullptr){ - PJ_container_alloc (); container_t root = new simgrid::instr::Container(id, simgrid::instr::INSTR_AS, nullptr); PJ_container_set_root (root);