Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Concatenate nested namespaces (sonar).
[simgrid.git] / src / instr / instr_paje_types.cpp
index a075804..d5658ef 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2020. The SimGrid Team.
+/* Copyright (c) 2012-2022. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -9,11 +9,7 @@
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_paje_types, instr, "Paje tracing event system (types)");
 
-// to check if variables were previously set to 0, otherwise paje won't simulate them
-static std::set<std::string> platform_variables;
-
-namespace simgrid {
-namespace instr {
+namespace simgrid::instr {
 
 long long int new_paje_id()
 {
@@ -22,15 +18,15 @@ long long int new_paje_id()
 }
 
 Type::Type(PajeEventType event_type, const std::string& name, const std::string& alias, const std::string& color,
-           Type* father)
-    : name_(name), color_(color), father_(father)
+           Type* parent)
+    : name_(name), color_(color), parent_(parent)
 {
   if (name_.empty() || alias.empty())
     throw TracingError(XBT_THROW_POINT, "can't create a new type with no name or alias");
 
-  if (father != nullptr){
-    father->children_[alias].reset(this);
-    XBT_DEBUG("new type %s, child of %s", get_cname(), father->get_cname());
+  if (parent != nullptr) {
+    parent->children_[alias].reset(this);
+    XBT_DEBUG("new type %s, child of %s", get_cname(), parent->get_cname());
     on_creation(*this, event_type);
   }
 }
@@ -68,14 +64,12 @@ void VariableType::instr_event(double now, double delta, const char* resource, d
    * non-determined value, hence causing analysis problems.
    */
 
-  // create a key considering the resource and variable
-  std::string key = std::string(resource) + get_name();
-
-  // check if key exists: if it doesn't, set the variable to zero and mark this in the global map.
-  if (platform_variables.find(key) == platform_variables.end()) {
+  // to check if variables were previously set to 0, otherwise paje won't simulate them
+  // create a key considering the resource and variable, and check if key exists in the global map:
+  // if it doesn't, set the variable to zero.
+  if (static std::set<std::string, std::less<>> platform_variables;
+      platform_variables.emplace(std::string(resource) + get_name()).second)
     set_event(now, 0);
-    platform_variables.insert(key);
-  }
 
   add_event(now, value);
   sub_event(now + delta, value);
@@ -96,35 +90,30 @@ void VariableType::sub_event(double timestamp, double value)
   events_.push_back(new VariableEvent(timestamp, get_issuer(), this, PajeEventType::SubVariable, value));
 }
 
-void LinkType::start_event(Container* startContainer, const std::string& value, const std::string& key)
-{
-  start_event(startContainer, value, key, -1);
-}
-
-void LinkType::start_event(Container* startContainer, const std::string& value, const std::string& key, int size)
+void LinkType::start_event(Container* startContainer, const std::string& value, const std::string& key, size_t size)
 {
   new LinkEvent(get_issuer(), this, PajeEventType::StartLink, startContainer, value, key, size);
 }
 
 void LinkType::end_event(Container* endContainer, const std::string& value, const std::string& key)
 {
-  new LinkEvent(get_issuer(), this, PajeEventType::EndLink, endContainer, value, key, -1);
+  new LinkEvent(get_issuer(), this, PajeEventType::EndLink, endContainer, value, key);
 }
 
 Type* Type::by_name(const std::string& name)
 {
   Type* ret = nullptr;
-  for (auto const& elm : children_) {
-    if (elm.second->name_ == name) {
+  for (auto const& [_, child] : children_) {
+    if (child->name_ == name) {
       if (ret != nullptr) {
         throw TracingError(XBT_THROW_POINT, "there are two children types with the same name?");
       } else {
-        ret = elm.second.get();
+        ret = child.get();
       }
     }
   }
   if (ret == nullptr)
-    throw TracingError(XBT_THROW_POINT, xbt::string_printf("type with name (%s) not found in father type (%s)",
+    throw TracingError(XBT_THROW_POINT, xbt::string_printf("type with name (%s) not found in parent type (%s)",
                                                            name.c_str(), get_cname()));
   return ret;
 }
@@ -142,7 +131,7 @@ void ValueType::add_entity_value(const std::string& name, const std::string& col
   auto it = values_.find(name);
   if (it == values_.end()) {
     XBT_DEBUG("new value %s, child of %s", name.c_str(), get_cname());
-    values_.emplace(name, EntityValue(name, color, this));
+    values_.try_emplace(name, name, color, this);
   }
 }
 
@@ -150,7 +139,7 @@ EntityValue* ValueType::get_entity_value(const std::string& name)
 {
   auto ret = values_.find(name);
   if (ret == values_.end()) {
-    throw TracingError(XBT_THROW_POINT, xbt::string_printf("value with name (%s) not found in father type (%s)",
+    throw TracingError(XBT_THROW_POINT, xbt::string_printf("value with name (%s) not found in parent type (%s)",
                                                            name.c_str(), get_cname()));
   }
   return &ret->second;
@@ -173,5 +162,4 @@ LinkType* Type::by_name_or_create(const std::string& name, const Type* source, c
   } else
     return static_cast<LinkType*>(it->second.get());
 }
-} // namespace instr
-} // namespace simgrid
+} // namespace simgrid::instr