namespace simgrid {
namespace instr {
-static Container* rootContainer = nullptr; /* the root container */
-static std::map<std::string, Container*> allContainers; /* all created containers indexed by name */
+Container* Container::root_container_ = nullptr; /* the root container */
+std::map<std::string, Container*> Container::all_containers_; /* all created containers indexed by name */
long long int new_paje_id()
{
return type_id++;
}
-Container* Container::get_root()
-{
- return rootContainer;
-}
-
NetZoneContainer::NetZoneContainer(const std::string& name, unsigned int level, NetZoneContainer* father)
: Container::Container(name, "", father)
{
on_creation(*this);
} else {
type_ = new ContainerType("0");
- rootContainer = this;
+ set_root(this);
}
}
}
//register all kinds by name
- if (not allContainers.emplace(name_, this).second)
+ if (not all_containers_.emplace(name_, this).second)
throw TracingError(XBT_THROW_POINT,
- xbt::string_printf("container %s already present in allContainers data structure", get_cname()));
+ xbt::string_printf("container %s already present in all_containers_", get_cname()));
XBT_DEBUG("Add container name '%s'", get_cname());
}
for (auto child : children_)
delete child.second;
- // remove me from the allContainers data structure
- allContainers.erase(name_);
+ // remove me from the all_containers_ data structure
+ all_containers_.erase(name_);
// obligation to dump previous events because they might reference the container that is about to be destroyed
last_timestamp_to_dump = SIMIX_get_clock();
Container* Container::by_name_or_null(const std::string& name)
{
- auto cont = allContainers.find(name);
- return cont == allContainers.end() ? nullptr : cont->second;
+ auto cont = all_containers_.find(name);
+ return cont == all_containers_.end() ? nullptr : cont->second;
}
Container* Container::by_name(const std::string& name)
class VariableType;
class Container {
+ static Container* root_container_;
+ static std::map<std::string, Container*> all_containers_;
+
long long int id_;
std::string name_; /* Unique name of this container */
+protected:
+ static void set_root(Container* root) { root_container_ = root; }
+
public:
static xbt::signal<void(Container const&)> on_creation;
static xbt::signal<void(Container const&)> on_destruction;
LinkType* get_link(const std::string& name);
VariableType* get_variable(const std::string& name);
void create_child(const std::string& name, const std::string& type_name);
- static Container* get_root();
+ static Container* get_root() { return root_container_; }
};
class NetZoneContainer : public Container {