Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
PJ_container_remove_from_parent () becomes Container::removeFromParent
[simgrid.git] / src / instr / instr_private.hpp
index 0982344..6822b26 100644 (file)
@@ -29,6 +29,9 @@
 
 namespace simgrid {
 namespace instr {
+
+class Value;
+
 enum e_event_type {
   PAJE_DefineContainerType,
   PAJE_DefineVariableType,
@@ -55,30 +58,33 @@ enum e_entity_types { TYPE_VARIABLE, TYPE_LINK, TYPE_CONTAINER, TYPE_STATE, TYPE
 //--------------------------------------------------
 
 class Type {
-public:
-  char* id_;
-  char* name_;
-  char* color_;
+  std::string id_;
+  std::string name_;
 
+public:
+  std::string color_;
   e_entity_types kind_;
   Type* father_;
-  xbt_dict_t children_;
-  xbt_dict_t values_; // valid for all types except variable and container
-  Type(const char* typeNameBuff, const char* key, const char* color, e_entity_types kind, Type* father);
+  std::map<std::string, Type*> children_;
+  std::map<std::string, Value*> values_; // valid for all types except variable and container
+  Type(std::string name, const char* key, std::string color, e_entity_types kind, Type* father);
   ~Type();
-  Type* getChild(const char* name);
-  Type* getChildOrNull(const char* name);
+  Type* getChild(std::string name);
+  Type* getChildOrNull(std::string name);
 
   static Type* containerNew(const char* name, Type* father);
   static Type* eventNew(const char* name, Type* father);
-  static Type* variableNew(const char* name, const char* color, Type* father);
+  static Type* variableNew(const char* name, std::string color, Type* father);
   static Type* linkNew(const char* name, Type* father, Type* source, Type* dest);
   static Type* stateNew(const char* name, Type* father);
+  std::string getName() { return name_; }
+  const char* getCname() { return name_.c_str(); }
+  const char* getId() { return id_.c_str(); }
+  bool isColored() { return not color_.empty(); }
 };
 
 //--------------------------------------------------
 class Value {
-private:
   std::string name_;
   std::string id_;
   std::string color_;
@@ -123,6 +129,9 @@ public:
   e_container_types kind_; /* This container is of what kind */
   Container* father_;
   std::map<std::string, Container*> children_;
+  static Container* byNameOrNull(std::string name);
+  static Container* byName(std::string name);
+  void removeFromParent();
 };
 
 //--------------------------------------------------
@@ -138,6 +147,7 @@ public:
       : container(container), type(type), timestamp_(timestamp), eventType_(eventType){};
   virtual void print() = 0;
   virtual ~PajeEvent();
+  void insertIntoBuffer();
 };
 
 //--------------------------------------------------
@@ -208,10 +218,10 @@ class StartLinkEvent : public PajeEvent {
   int size_;
 
 public:
-  StartLinkEvent(double timestamp, Container* container, Type* type, Container* sourceContainer, const char* value,
-                 const char* key);
-  StartLinkEvent(double timestamp, Container* container, Type* type, Container* sourceContainer, const char* value,
-                 const char* key, int size);
+  StartLinkEvent(double timestamp, Container* container, Type* type, Container* sourceContainer, std::string value,
+                 std::string key);
+  StartLinkEvent(double timestamp, Container* container, Type* type, Container* sourceContainer, std::string value,
+                 std::string key, int size);
   void print() override;
 };
 
@@ -301,11 +311,8 @@ XBT_PUBLIC(void) TRACE_surf_resource_utilization_alloc();
 extern XBT_PRIVATE std::set<std::string> trivaNodeTypes;
 extern XBT_PRIVATE std::set<std::string> trivaEdgeTypes;
 XBT_PRIVATE long long int instr_new_paje_id();
-XBT_PUBLIC(container_t) PJ_container_get(const char* name);
-XBT_PUBLIC(simgrid::instr::Container*) PJ_container_get_or_null(const char* name);
 XBT_PUBLIC(container_t) PJ_container_get_root ();
 XBT_PUBLIC(void) PJ_container_set_root (container_t root);
-XBT_PUBLIC(void) PJ_container_remove_from_parent (container_t container);
 
 /* instr_paje_types.c */
 XBT_PUBLIC(simgrid::instr::Type*) PJ_type_get_root();