#pragma once #include "ehs/EHS.h" #include "ehs/Str.h" #include "JsonBase.h" namespace ehs { class JsonObj; class JsonBool; class JsonNum; class JsonStr; class EHS_LIB_IO JsonArray : public JsonBase { private: UInt_64 size; UInt_64 extra; UInt_64 rawSize; JsonBase** data; public: ~JsonArray() override; JsonArray(); JsonArray(UInt_64 extra); JsonArray(UInt_64 size, UInt_64 extra); JsonArray(JsonArray&& ja) noexcept; JsonArray(const JsonArray& ja); JsonArray& operator=(JsonArray&& ja) noexcept; JsonArray& operator=(const JsonArray& ja); operator JsonBase* const *() const; operator JsonBase**(); UInt_64 RawSize() const; UInt_64 Extra() const; UInt_64 Size() const; void Insert(UInt_64 index, const JsonBase* value); void Push(const JsonBase* value); void Push(const JsonBase& value); void Push(const JsonObj& value); void Push(const JsonArray& value); void Push(const JsonBool& value); void Push(bool value); void Push(const JsonNum& value); void Push(float value); void Push(const JsonStr& value); void Push(const Char_8* value, UInt_64 size = 0); void Push(const Str_8& value); void Pop(); Str_8 ToStr(UInt_64 level, bool compact) const override; }; }