#pragma once #include "ehs/Version.h" #include "ehs/Array.h" #include "DbVarTmpl.h" #include "DbObject.h" #include "ehs/Serializer.h" namespace ehs { class Database; class EHS_LIB_IO DbTable { private: friend class Database; friend class DbVar; friend class DbObject; Database *parent; UInt_64 hashId; Str_8 id; Array varTmpls; Array objects; public: DbTable(); DbTable(Str_8 id); DbTable(DbTable&& table) noexcept; DbTable(const DbTable& table); DbTable& operator=(DbTable&& table) noexcept; DbTable& operator=(const DbTable& table); UInt_64 GetHashId() const; void SetId(Str_8 newId); Str_8 GetId() const; bool HasVariable(UInt_64 hashId) const; bool HasVariable(const Str_8& id) const; bool CreateVariable(DbVarTmpl var); DbObject *CreateObject(); DbObject *GetObject(UInt_64 variableHashId, const Str_8 &value) const; DbObject *GetObject(const Str_8 &variable, const Str_8 &value) const; DbObject *GetObject(UInt_64 id) const; private: DbVarTmpl *GetVariableTemplate(UInt_64 hashId) const; void Serialize(const Str_8 &dir, Serializer& data) const; void Deserialize(const Str_8 &dir, Serializer& data); }; }