- void logDefinition(e_event_type event_type);
- void logDefinition(Type* source, Type* dest);
+ Type(e_event_type event_type, const std::string& name, const std::string& alias, const std::string& color,
+ Type* father);
+ virtual ~Type() = default;
+
+ long long int get_id() { return id_; }
+ const std::string& get_name() const { return name_; }
+ const char* get_cname() { return name_.c_str(); }
+ const std::string& get_color() const { return color_; }
+ Type* get_father() const { return father_; }
+ bool is_colored() { return not color_.empty(); }
+
+ Type* by_name(const std::string& name);
+ LinkType* by_name_or_create(const std::string& name, Type* source, Type* dest);
+ VariableType* by_name_or_create(const std::string& name, const std::string& color);
+
+ template <class T> T* by_name_or_create(const std::string& name)
+ {
+ auto cont = children_.find(name);
+ return cont == children_.end() ? new T(name, this) : static_cast<T*>(cont->second.get());
+ }
+
+ Type* set_calling_container(Container* container)
+ {
+ issuer_ = container;
+ return this;
+ }