#pragma once #include "ehs/EHS.h" #include "ehs/Str.h" #include "JsonBase.h" namespace ehs { class JsonVar; class EHS_LIB_IO JsonObj final : public JsonBase { protected: UInt_64 size; UInt_64 extra; UInt_64 rawSize; JsonVar* vars; public: ~JsonObj() override; JsonObj(); JsonObj(UInt_64 size, UInt_64 extra); JsonObj(UInt_64 extra); JsonObj(JsonObj &&value) noexcept; JsonObj(const JsonObj &value); JsonObj& operator=(JsonObj &&value) noexcept; JsonObj& operator=(const JsonObj &value); operator JsonVar *() const; UInt_64 Size() const; UInt_64 Extra() const; UInt_64 RawSize() const; bool HasVar(UInt_64 hashId) const; bool HasVar(const Str_8 &identifier) const; bool AddVar(const JsonVar &var); const JsonVar *GetVar(UInt_64 hashId) const; const JsonVar *GetVar(const Str_8& identifier) const; JsonVar *GetVar(UInt_64 hashId); JsonVar *GetVar(const Str_8& identifier); Str_8 ToStr(UInt_64 level, bool compact) const override; }; }