X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8a0225ea633d9d3b665d709037dd5b9619d15ed7..51c23076e2b42ff07dc167dea1cb0e3a4ab3cf68:/src/instr/instr_paje_types.hpp diff --git a/src/instr/instr_paje_types.hpp b/src/instr/instr_paje_types.hpp index 71a08d38cd..7784cfa881 100644 --- a/src/instr/instr_paje_types.hpp +++ b/src/instr/instr_paje_types.hpp @@ -7,6 +7,7 @@ #define INSTR_PAJE_TYPES_HPP #include "src/instr/instr_private.hpp" +#include #include #include @@ -24,6 +25,7 @@ class Type { public: std::map children_; Container* issuer_ = nullptr; + std::stringstream stream_; Type(std::string name, std::string alias, std::string color, Type* father); virtual ~Type(); @@ -31,19 +33,22 @@ public: std::string get_name() { return name_; } const char* get_cname() { return name_.c_str(); } long long int get_id() { return id_; } - bool isColored() { return not color_.empty(); } + bool is_colored() { return not color_.empty(); } - Type* byName(std::string name); - ContainerType* getOrCreateContainerType(std::string name); - EventType* getOrCreateEventType(std::string name); - LinkType* getOrCreateLinkType(std::string name, Type* source, Type* dest); - StateType* getOrCreateStateType(std::string name); - VariableType* getOrCreateVariableType(std::string name, std::string color); + Type* by_name(std::string name); + LinkType* by_name_or_create(std::string name, Type* source, Type* dest); + VariableType* by_name_or_create(std::string name, std::string color); - void setCallingContainer(Container* container) { issuer_ = container; } + template T* by_name_or_create(std::string name) + { + auto cont = children_.find(name); + return cont == children_.end() ? new T(name, this) : static_cast(cont->second); + } - void logDefinition(e_event_type event_type); - void logDefinition(Type* source, Type* dest); + void set_calling_container(Container* container) { issuer_ = container; } + + void log_definition(e_event_type event_type); + void log_definition(Type* source, Type* dest); }; class ContainerType : public Type { @@ -57,9 +62,10 @@ class VariableType : public Type { public: VariableType(std::string name, std::string color, Type* father); ~VariableType(); - void setEvent(double timestamp, double value); - void addEvent(double timestamp, double value); - void subEvent(double timestamp, double value); + void instr_event(double now, double delta, const char* resource, double value); + void set_event(double timestamp, double value); + void add_event(double timestamp, double value); + void sub_event(double timestamp, double value); }; class ValueType : public Type { @@ -68,17 +74,17 @@ public: ValueType(std::string name, std::string alias, Type* father) : Type(name, alias, "", father){}; ValueType(std::string name, Type* father) : Type(name, name, "", father){}; virtual ~ValueType(); - void addEntityValue(std::string name, std::string color); - void addEntityValue(std::string name); - EntityValue* getEntityValue(std::string name); + void add_entity_value(std::string name, std::string color); + void add_entity_value(std::string name); + EntityValue* get_entity_value(std::string name); }; class LinkType : public ValueType { public: LinkType(std::string name, std::string alias, Type* father); - void startEvent(Container* startContainer, std::string value, std::string key); - void startEvent(Container* startContainer, std::string value, std::string key, int size); - void endEvent(Container* endContainer, std::string value, std::string key); + void start_event(Container* startContainer, std::string value, std::string key); + void start_event(Container* startContainer, std::string value, std::string key, int size); + void end_event(Container* endContainer, std::string value, std::string key); }; class EventType : public ValueType { @@ -91,11 +97,11 @@ class StateType : public ValueType { public: StateType(std::string name, Type* father); ~StateType(); - void setEvent(std::string value_name); - void pushEvent(std::string value_name); - void pushEvent(std::string value_name, TIData* extra); - void popEvent(); - void popEvent(TIData* extra); + void set_event(std::string value_name); + void push_event(std::string value_name); + void push_event(std::string value_name, TIData* extra); + void pop_event(); + void pop_event(TIData* extra); }; } }