-/* Copyright (c) 2012-2020. The SimGrid Team.
+/* Copyright (c) 2012-2023. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
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, std::less<>> platform_variables;
-
-namespace simgrid {
-namespace instr {
+namespace simgrid::instr {
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);
}
}
* 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(resource + get_name()).second)
set_event(now, 0);
- platform_variables.insert(key);
- }
add_event(now, value);
sub_event(now + delta, 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;
}
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);
}
}
{
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;
} else
return static_cast<LinkType*>(it->second.get());
}
-} // namespace instr
-} // namespace simgrid
+} // namespace simgrid::instr