-class Value;
-class ContainerType;
-class EventType;
-class LinkType;
-class StateType;
-class VariableType;
-
-enum e_event_type {
- PAJE_DefineContainerType,
- PAJE_DefineVariableType,
- PAJE_DefineStateType,
- PAJE_DefineEventType,
- PAJE_DefineLinkType,
- PAJE_DefineEntityValue,
- PAJE_CreateContainer,
- PAJE_DestroyContainer,
- PAJE_SetVariable,
- PAJE_AddVariable,
- PAJE_SubVariable,
- PAJE_SetState,
- PAJE_PushState,
- PAJE_PopState,
- PAJE_ResetState,
- PAJE_StartLink,
- PAJE_EndLink,
- PAJE_NewEvent
-};
-
-class Type {
- long long int id_;
- std::string name_;
- std::string color_;
-
-protected:
- Type* father_;
-
-public:
- std::map<std::string, Type*> children_;
-
- Type(std::string name, std::string alias, std::string color, Type* father);
- virtual ~Type();
-
- std::string getName() { return name_; }
- const char* getCname() { return name_.c_str(); }
- long long int getId() { return id_; }
- 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 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* father);
-};
-
-class VariableType : public Type {
-public:
- VariableType(std::string name, std::string color, Type* father);
-};
-
-class ValueType : public Type {
-public:
- std::map<std::string, Value*> values_;
- 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);
- Value* getEntityValue(std::string name);
-};
-
-class LinkType : public ValueType {
-public:
- LinkType(std::string name, std::string alias, Type* father);
-};
-
-class EventType : public ValueType {
-public:
- EventType(std::string name, Type* father);
-};
-
-class StateType : public ValueType {
-public:
- StateType(std::string name, Type* father);
-};
-
-class Value {