#ifndef NAME_HIERARCHY_H #define NAME_HIERARCHY_H #include #include #include #include "data/name/NameElement.h" class NameHierarchy { public: static std::string serialize(NameHierarchy nameHierarchy); static NameHierarchy deserialize(const std::string& serializedName); static void setDelimiter(const std::string& delimiter); NameHierarchy(); NameHierarchy(const std::string& name); NameHierarchy(const std::vector& names); ~NameHierarchy(); void push(std::shared_ptr element); void pop(); std::shared_ptr back() const; std::shared_ptr operator[](size_t pos) const; size_t size() const; std::string getQualifiedName() const; std::string getQualifiedNameWithSignature() const; std::string getRawName() const; std::string getRawNameWithSignature() const; private: static std::string s_delimiter; std::vector> m_elements; }; #endif // NAME_ELEMENT_H