Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Prefer using "try_emplace" (sonar, c++17).
[simgrid.git] / src / instr / instr_paje_types.cpp
index 213c45b..0e31281 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,9 +9,6 @@
 
 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 {
 
@@ -21,33 +18,34 @@ long long int new_paje_id()
   return type_id++;
 }
 
-Type::Type(e_event_type event_type, const std::string& name, const std::string& alias, const std::string& color,
-           Type* father)
-    : name_(name), color_(color), father_(father)
+Type::Type(PajeEventType event_type, const std::string& name, const std::string& alias, const std::string& color,
+           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);
   }
 }
 
 void StateType::set_event(const std::string& value_name)
 {
-  events_.push_back(new StateEvent(get_issuer(), this, PAJE_SetState, get_entity_value(value_name), nullptr));
+  events_.push_back(new StateEvent(get_issuer(), this, PajeEventType::SetState, get_entity_value(value_name), nullptr));
 }
 
 void StateType::push_event(const std::string& value_name, TIData* extra)
 {
-  events_.push_back(new StateEvent(get_issuer(), this, PAJE_PushState, get_entity_value(value_name), extra));
+  events_.push_back(new StateEvent(get_issuer(), this, PajeEventType::PushState, get_entity_value(value_name), extra));
 }
 
 void StateType::push_event(const std::string& value_name)
 {
-  events_.push_back(new StateEvent(get_issuer(), this, PAJE_PushState, get_entity_value(value_name), nullptr));
+  events_.push_back(
+      new StateEvent(get_issuer(), this, PajeEventType::PushState, get_entity_value(value_name), nullptr));
 }
 
 void StateType::pop_event()
@@ -57,7 +55,7 @@ void StateType::pop_event()
 
 void StateType::pop_event(TIData* extra)
 {
-  events_.push_back(new StateEvent(get_issuer(), this, PAJE_PopState, nullptr, extra));
+  events_.push_back(new StateEvent(get_issuer(), this, PajeEventType::PopState, nullptr, extra));
 }
 
 void VariableType::instr_event(double now, double delta, const char* resource, double value)
@@ -67,6 +65,9 @@ void VariableType::instr_event(double now, double delta, const char* resource, d
    * non-determined value, hence causing analysis problems.
    */
 
+  // to check if variables were previously set to 0, otherwise paje won't simulate them
+  static std::set<std::string, std::less<>> platform_variables;
+
   // create a key considering the resource and variable
   std::string key = std::string(resource) + get_name();
 
@@ -82,32 +83,27 @@ void VariableType::instr_event(double now, double delta, const char* resource, d
 
 void VariableType::set_event(double timestamp, double value)
 {
-  events_.push_back(new VariableEvent(timestamp, get_issuer(), this, PAJE_SetVariable, value));
+  events_.push_back(new VariableEvent(timestamp, get_issuer(), this, PajeEventType::SetVariable, value));
 }
 
 void VariableType::add_event(double timestamp, double value)
 {
-  events_.push_back(new VariableEvent(timestamp, get_issuer(), this, PAJE_AddVariable, value));
+  events_.push_back(new VariableEvent(timestamp, get_issuer(), this, PajeEventType::AddVariable, value));
 }
 
 void VariableType::sub_event(double timestamp, double value)
 {
-  events_.push_back(new VariableEvent(timestamp, get_issuer(), this, PAJE_SubVariable, value));
-}
-
-void LinkType::start_event(Container* startContainer, const std::string& value, const std::string& key)
-{
-  start_event(startContainer, value, key, -1);
+  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, int size)
+void LinkType::start_event(Container* startContainer, const std::string& value, const std::string& key, size_t size)
 {
-  new LinkEvent(get_issuer(), this, PAJE_StartLink, startContainer, value, key, 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, PAJE_EndLink, endContainer, value, key, -1);
+  new LinkEvent(get_issuer(), this, PajeEventType::EndLink, endContainer, value, key);
 }
 
 Type* Type::by_name(const std::string& name)
@@ -123,7 +119,7 @@ Type* Type::by_name(const std::string& name)
     }
   }
   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;
 }
@@ -141,7 +137,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, EntityValue(name, color, this));
   }
 }
 
@@ -149,7 +145,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;