#pragma once #include "Types.h" #include "Type.h" namespace ehs { class BaseObj { private: Type* hierarchy; UInt_64 hierarchySize; public: virtual ~BaseObj(); BaseObj(); BaseObj(BaseObj&& base) noexcept; BaseObj(const BaseObj& base); BaseObj& operator=(BaseObj&& base) noexcept; BaseObj& operator=(const BaseObj& base); bool operator==(const BaseObj& base) const; bool operator!=(const BaseObj& base) const; const Type* GetHierarchy() const; UInt_64 GetHierarchySize() const; bool HasType(UInt_64 typeHashId) const; bool HasType(const Char_8* typeId) const; Type GetType() const; UInt_64 GetTypeIdSize() const; const Char_8* GetTypeId() const; UInt_64 GetTypeHashId() const; virtual BaseObj* Clone() const; protected: void AddType(const Char_8* id); }; }