#pragma once #include "ehs/Version.h" #include "ehs/Array.h" #include "DbVarTmpl.h" #include "DbObject.h" #include "ehs/Serializer.h" namespace ehs { class DbTable { private: friend class Database; friend class DbVar; 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(Str_8 id, DbType type, const Byte* defaultValue); bool CreateVariable(Str_8 id, DbType type, UInt_64 size, const Byte* defaultValue); DbObject *CreateObject(); private: DbVarTmpl* GetVariableTemplate(UInt_64 hashId) const; void Serialize(Serializer& data) const; void Deserialize(Serializer& data); }; }