namespace simgrid {
namespace instr {
-enum e_event_type : unsigned int;
-class EntityValue;
class ContainerType;
class EventType;
-class LinkType;
-class StateType;
-class VariableType;
-class StateEvent;
-class VariableEvent;
class Type {
long long int id_;
public:
std::map<std::string, Type*> children_;
+ Container* issuer_ = nullptr;
Type(std::string name, std::string alias, std::string color, Type* father);
virtual ~Type();
bool isColored() { 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);
+ void setCallingContainer(Container* container) { issuer_ = container; }
+
void logDefinition(e_event_type event_type);
void logDefinition(Type* source, Type* dest);
-
- static ContainerType* createRootType();
- static ContainerType* getRootType();
};
class ContainerType : public Type {
public:
- ContainerType(std::string name) : Type(name, name, "", nullptr){};
+ explicit ContainerType(std::string name) : Type(name, name, "", nullptr){};
ContainerType(std::string name, Type* father);
};
class VariableType : public Type {
std::vector<VariableEvent*> events_;
-
public:
VariableType(std::string name, std::string color, Type* father);
~VariableType();
- void setEvent(double timestamp, Container* container, double value);
- void addEvent(double timestamp, Container* container, double value);
- void subEvent(double timestamp, Container* container, double value);
+ void setEvent(double timestamp, double value);
+ void addEvent(double timestamp, double value);
+ void subEvent(double timestamp, double value);
};
class ValueType : public Type {
class LinkType : public ValueType {
public:
LinkType(std::string name, std::string alias, Type* father);
- void startEvent(double timestamp, Container* source_container, Container* sourceContainer, std::string value,
- std::string key);
- void startEvent(double timestamp, Container* source_container, Container* sourceContainer, std::string value,
- std::string key, int size);
- void endEvent(double timestamp, Container* source_container, Container* destContainer, std::string value,
- std::string key);
+ 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);
};
class EventType : public ValueType {
class StateType : public ValueType {
std::vector<StateEvent*> events_;
-
public:
StateType(std::string name, Type* father);
~StateType();
- void setEvent(double timestamp, Container* container, std::string value_name);
- void pushEvent(double timestamp, Container* container, std::string value_name);
- void pushEvent(double timestamp, Container* container, std::string value_name, void* extra);
- void popEvent(double timestamp, Container* container);
+ void setEvent(std::string value_name);
+ void pushEvent(std::string value_name);
+ void pushEvent(std::string value_name, TIData* extra);
+ void popEvent();
};
}
}