From 3577c38bb4e54d063bf1ef06fd4b3091cf4f22b7 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Fri, 27 Mar 2020 11:35:11 +0100 Subject: [PATCH] use signals for instr::EntityValue display --- src/instr/instr_config.cpp | 14 ++++++++++++++ src/instr/instr_paje_types.cpp | 3 +-- src/instr/instr_paje_values.cpp | 17 ++--------------- src/instr/instr_paje_values.hpp | 14 +++++++++----- 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/instr/instr_config.cpp b/src/instr/instr_config.cpp index 667dc2ad81..135b2d2f09 100644 --- a/src/instr/instr_config.cpp +++ b/src/instr/instr_config.cpp @@ -239,6 +239,7 @@ static bool trace_active = false; *************/ xbt::signal Container::on_creation; xbt::signal Container::on_destruction; +xbt::signal EntityValue::on_creation; static void on_container_creation_paje(Container& c) { @@ -321,6 +322,18 @@ static void on_container_destruction_ti(Container& c) } } +static void on_entity_value_creation(EntityValue& value) +{ + std::stringstream stream; + XBT_DEBUG("%s: event_type=%u", __func__, PAJE_DefineEntityValue); + stream << std::fixed << std::setprecision(TRACE_precision()) << PAJE_DefineEntityValue; + stream << " " << value.get_id() << " " << value.get_father()->get_id() << " " << value.get_name(); + if (not value.get_color().empty()) + stream << " \"" << value.get_color() << "\""; + XBT_DEBUG("Dump %s", stream.str().c_str()); + tracing_file << stream.str() << std::endl; +} + static void on_simulation_start() { if (trace_active) @@ -342,6 +355,7 @@ static void on_simulation_start() if (format == "Paje") { Container::on_creation.connect(on_container_creation_paje); Container::on_destruction.connect(on_container_destruction_paje); + EntityValue::on_creation.connect(on_entity_value_creation); } else { Container::on_creation.connect(on_container_creation_ti); Container::on_destruction.connect(on_container_destruction_ti); diff --git a/src/instr/instr_paje_types.cpp b/src/instr/instr_paje_types.cpp index 90fe739c2c..b1e388edd0 100644 --- a/src/instr/instr_paje_types.cpp +++ b/src/instr/instr_paje_types.cpp @@ -188,9 +188,8 @@ void ValueType::add_entity_value(const std::string& name, const std::string& col auto it = values_.find(name); if (it == values_.end()) { - auto res = values_.emplace(name, EntityValue(name, color, this)); XBT_DEBUG("new value %s, child of %s", name.c_str(), get_cname()); - res.first->second.print(); + values_.emplace(name, EntityValue(name, color, this)); } } diff --git a/src/instr/instr_paje_values.cpp b/src/instr/instr_paje_values.cpp index 0329d7404c..5f2bcd4742 100644 --- a/src/instr/instr_paje_values.cpp +++ b/src/instr/instr_paje_values.cpp @@ -7,27 +7,14 @@ #include "src/instr/instr_private.hpp" XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_paje_values, instr, "Paje tracing event system (values)"); -extern std::ofstream tracing_file; namespace simgrid { namespace instr { EntityValue::EntityValue(const std::string& name, const std::string& color, Type* father) - : id_(instr_new_paje_id()), name_(name), color_(color), father_(father){} - -void EntityValue::print() + : id_(instr_new_paje_id()), name_(name), color_(color), father_(father) { - if (trace_format != simgrid::instr::TraceFormat::Paje) - return; - std::stringstream stream; - XBT_DEBUG("%s: event_type=%u", __func__, PAJE_DefineEntityValue); - stream << std::fixed << std::setprecision(TRACE_precision()) << PAJE_DefineEntityValue; - stream << " " << id_ << " " << father_->get_id() << " " << name_; - if (not color_.empty()) - stream << " \"" << color_ << "\""; - XBT_DEBUG("Dump %s", stream.str().c_str()); - tracing_file << stream.str() << std::endl; + on_creation(*this); } - } // namespace instr } // namespace simgrid diff --git a/src/instr/instr_paje_values.hpp b/src/instr/instr_paje_values.hpp index e78ac6113c..cec347fed1 100644 --- a/src/instr/instr_paje_values.hpp +++ b/src/instr/instr_paje_values.hpp @@ -19,12 +19,16 @@ class EntityValue { Type* father_; public: + static xbt::signal on_creation; explicit EntityValue(const std::string& name, const std::string& color, Type* father); - const char* get_cname() { return name_.c_str(); } - long long int get_id() { return id_; } - void print(); + + long long int get_id() const { return id_; } + std::string get_name() const { return name_; } + const char* get_cname() const { return name_.c_str(); } + std::string get_color() const { return color_; } + Type* get_father() const { return father_; } }; -} -} +} // namespace instr +} // namespace simgrid #endif -- 2.20.1