Cleaned up and fixed some errors in the Json Parser.
This commit is contained in:
parent
2e705627ac
commit
c607b20bad
@ -12,57 +12,57 @@
|
|||||||
|
|
||||||
namespace ehs
|
namespace ehs
|
||||||
{
|
{
|
||||||
class EHS_LIB_IO Json
|
class EHS_LIB_IO Json final
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
JsonBase* value;
|
JsonBase *value;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ~Json();
|
~Json();
|
||||||
|
|
||||||
Json();
|
Json();
|
||||||
|
|
||||||
Json(const JsonBase& value);
|
Json(const JsonBase &value);
|
||||||
|
|
||||||
Json(const JsonObj& value);
|
Json(const JsonObj &value);
|
||||||
|
|
||||||
Json(const JsonArray& value);
|
Json(const JsonArray &value);
|
||||||
|
|
||||||
Json(const JsonBool& value);
|
Json(const JsonBool &value);
|
||||||
|
|
||||||
Json(const JsonNum& value);
|
Json(const JsonNum &value);
|
||||||
|
|
||||||
Json(const JsonStr& value);
|
Json(const JsonStr &value);
|
||||||
|
|
||||||
Json(const char* data, const UInt_64 size, const UInt_64 extra);
|
Json(const char *data, UInt_64 size, UInt_64 extra);
|
||||||
|
|
||||||
Json(const Str_8& data, const UInt_64 extra);
|
Json(const Str_8 &data, UInt_64 extra);
|
||||||
|
|
||||||
Json(Json&& json) noexcept;
|
Json(Json &&json) noexcept;
|
||||||
|
|
||||||
Json(const Json &json);
|
Json(const Json &json);
|
||||||
|
|
||||||
Json& operator=(Json&& json) noexcept;
|
Json &operator=(Json &&json) noexcept;
|
||||||
|
|
||||||
Json& operator=(const Json& json);
|
Json &operator=(const Json &json);
|
||||||
|
|
||||||
JsonBase* GetValue();
|
JsonBase *GetValue();
|
||||||
|
|
||||||
JsonBase* RetrieveValue(const Str_8& access);
|
JsonBase *RetrieveValue(const Str_8 &access);
|
||||||
|
|
||||||
Str_8 ToStr(const bool compact) const;
|
Str_8 ToStr(bool compact) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static Vector<Str_8> ParseAccess(const Str_8& access);
|
static Vector<Str_8> ParseAccess(const Str_8 &access);
|
||||||
|
|
||||||
void ParseValue(JsonVar* var, const Char_8** begin, const Char_8* end, const UInt_64 extra);
|
void ParseValue(JsonVar *var, const Char_8 **begin, const Char_8 *end, UInt_64 extra);
|
||||||
|
|
||||||
JsonVar ParseVar(const Char_8** begin, const Char_8* end, const UInt_64 extra);
|
JsonVar ParseVar(const Char_8 **begin, const Char_8 *end, UInt_64 extra);
|
||||||
|
|
||||||
void ParseObject(JsonObj* obj, const Char_8** begin, const Char_8* end, const UInt_64 extra);
|
void ParseObject(JsonObj *obj, const Char_8 **begin, const Char_8 *end, UInt_64 extra);
|
||||||
|
|
||||||
void ParseArray(JsonArray* arr, const Char_8** begin, const Char_8* end, const UInt_64 extra);
|
void ParseArray(JsonArray *arr, const Char_8 **begin, const Char_8 *end, UInt_64 extra);
|
||||||
|
|
||||||
void Parse(const Str_8& data, const UInt_64 extra);
|
void Parse(const Str_8 &data, UInt_64 extra);
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -20,13 +20,13 @@ namespace ehs
|
|||||||
JsonBase** data;
|
JsonBase** data;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ~JsonArray();
|
~JsonArray() override;
|
||||||
|
|
||||||
JsonArray();
|
JsonArray();
|
||||||
|
|
||||||
JsonArray(const UInt_64 extra);
|
JsonArray(UInt_64 extra);
|
||||||
|
|
||||||
JsonArray(const UInt_64 size, const UInt_64 extra);
|
JsonArray(UInt_64 size, UInt_64 extra);
|
||||||
|
|
||||||
JsonArray(JsonArray&& ja) noexcept;
|
JsonArray(JsonArray&& ja) noexcept;
|
||||||
|
|
||||||
@ -46,9 +46,9 @@ namespace ehs
|
|||||||
|
|
||||||
UInt_64 Size() const;
|
UInt_64 Size() const;
|
||||||
|
|
||||||
void Insert(const UInt_64 index, const JsonBase* const value);
|
void Insert(UInt_64 index, const JsonBase* value);
|
||||||
|
|
||||||
void Push(const JsonBase* const value);
|
void Push(const JsonBase* value);
|
||||||
|
|
||||||
void Push(const JsonBase& value);
|
void Push(const JsonBase& value);
|
||||||
|
|
||||||
@ -58,20 +58,20 @@ namespace ehs
|
|||||||
|
|
||||||
void Push(const JsonBool& value);
|
void Push(const JsonBool& value);
|
||||||
|
|
||||||
void Push(const bool value);
|
void Push(bool value);
|
||||||
|
|
||||||
void Push(const JsonNum& value);
|
void Push(const JsonNum& value);
|
||||||
|
|
||||||
void Push(const float value);
|
void Push(float value);
|
||||||
|
|
||||||
void Push(const JsonStr& value);
|
void Push(const JsonStr& value);
|
||||||
|
|
||||||
void Push(const Char_8* value, const UInt_64 size = 0);
|
void Push(const Char_8* value, UInt_64 size = 0);
|
||||||
|
|
||||||
void Push(const Str_8& value);
|
void Push(const Str_8& value);
|
||||||
|
|
||||||
void Pop();
|
void Pop();
|
||||||
|
|
||||||
Str_8 ToStr(const UInt_64 level, const bool compact) const;
|
Str_8 ToStr(UInt_64 level, bool compact) const override;
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -21,14 +21,16 @@ namespace ehs
|
|||||||
JsonType type;
|
JsonType type;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
virtual ~JsonBase() = default;
|
||||||
|
|
||||||
JsonBase();
|
JsonBase();
|
||||||
|
|
||||||
JsonBase(const JsonType type);
|
JsonBase(JsonType type);
|
||||||
|
|
||||||
JsonBase(const JsonBase& base) = default;
|
JsonBase(const JsonBase& base) = default;
|
||||||
|
|
||||||
JsonType GetType() const;
|
JsonType GetType() const;
|
||||||
|
|
||||||
virtual Str_8 ToStr(const UInt_64 level, const bool compact) const;
|
virtual Str_8 ToStr(UInt_64 level, bool compact) const;
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -7,14 +7,14 @@
|
|||||||
|
|
||||||
namespace ehs
|
namespace ehs
|
||||||
{
|
{
|
||||||
class EHS_LIB_IO JsonBool : public JsonBase
|
class EHS_LIB_IO JsonBool final : public JsonBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool value;
|
bool value;
|
||||||
|
|
||||||
JsonBool();
|
JsonBool();
|
||||||
|
|
||||||
JsonBool(const bool value);
|
JsonBool(bool value);
|
||||||
|
|
||||||
JsonBool(const JsonBool& jb) = default;
|
JsonBool(const JsonBool& jb) = default;
|
||||||
|
|
||||||
@ -22,6 +22,6 @@ namespace ehs
|
|||||||
|
|
||||||
operator bool&();
|
operator bool&();
|
||||||
|
|
||||||
Str_8 ToStr(const UInt_64 level, const bool compact) const;
|
Str_8 ToStr(UInt_64 level, bool compact) const override;
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -7,39 +7,37 @@
|
|||||||
|
|
||||||
namespace ehs
|
namespace ehs
|
||||||
{
|
{
|
||||||
class EHS_LIB_IO JsonNum : public JsonBase
|
class EHS_LIB_IO JsonNum final : public JsonBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
float value;
|
float value;
|
||||||
|
|
||||||
JsonNum();
|
JsonNum();
|
||||||
|
|
||||||
JsonNum(const SInt_64 value);
|
JsonNum(SInt_64 value);
|
||||||
|
|
||||||
JsonNum(const UInt_64 value);
|
JsonNum(UInt_64 value);
|
||||||
|
|
||||||
JsonNum(const SInt_32 value);
|
JsonNum(SInt_32 value);
|
||||||
|
|
||||||
JsonNum(const UInt_32 value);
|
JsonNum(UInt_32 value);
|
||||||
|
|
||||||
JsonNum(const SInt_16 value);
|
JsonNum(SInt_16 value);
|
||||||
|
|
||||||
JsonNum(const UInt_16 value);
|
JsonNum(UInt_16 value);
|
||||||
|
|
||||||
JsonNum(const SInt_8 value);
|
JsonNum(SInt_8 value);
|
||||||
|
|
||||||
JsonNum(const UInt_8 value);
|
JsonNum(UInt_8 value);
|
||||||
|
|
||||||
JsonNum(const double value);
|
JsonNum(double value);
|
||||||
|
|
||||||
JsonNum(const float value);
|
JsonNum(float value);
|
||||||
|
|
||||||
JsonNum(const JsonNum& jn) = default;
|
JsonNum(const JsonNum& jn) = default;
|
||||||
|
|
||||||
operator float() const;
|
operator float() const;
|
||||||
|
|
||||||
operator float&();
|
Str_8 ToStr(UInt_64 level, bool compact) const override;
|
||||||
|
|
||||||
Str_8 ToStr(const UInt_64 level, const bool compact) const;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -9,7 +9,7 @@ namespace ehs
|
|||||||
{
|
{
|
||||||
class JsonVar;
|
class JsonVar;
|
||||||
|
|
||||||
class EHS_LIB_IO JsonObj : public JsonBase
|
class EHS_LIB_IO JsonObj final : public JsonBase
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
UInt_64 size;
|
UInt_64 size;
|
||||||
@ -18,25 +18,23 @@ namespace ehs
|
|||||||
JsonVar* vars;
|
JsonVar* vars;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ~JsonObj();
|
~JsonObj() override;
|
||||||
|
|
||||||
JsonObj();
|
JsonObj();
|
||||||
|
|
||||||
JsonObj(const UInt_64 size, const UInt_64 extra);
|
JsonObj(UInt_64 size, UInt_64 extra);
|
||||||
|
|
||||||
JsonObj(const UInt_64 extra);
|
JsonObj(UInt_64 extra);
|
||||||
|
|
||||||
JsonObj(JsonObj&& value) noexcept;
|
JsonObj(JsonObj &&value) noexcept;
|
||||||
|
|
||||||
JsonObj(const JsonObj& value);
|
JsonObj(const JsonObj &value);
|
||||||
|
|
||||||
JsonObj& operator=(JsonObj&& value) noexcept;
|
JsonObj& operator=(JsonObj &&value) noexcept;
|
||||||
|
|
||||||
JsonObj& operator=(const JsonObj& value);
|
JsonObj& operator=(const JsonObj &value);
|
||||||
|
|
||||||
operator const JsonVar*() const;
|
operator JsonVar *() const;
|
||||||
|
|
||||||
operator JsonVar*();
|
|
||||||
|
|
||||||
UInt_64 Size() const;
|
UInt_64 Size() const;
|
||||||
|
|
||||||
@ -44,20 +42,20 @@ namespace ehs
|
|||||||
|
|
||||||
UInt_64 RawSize() const;
|
UInt_64 RawSize() const;
|
||||||
|
|
||||||
bool HasVar(const UInt_64 hashId) const;
|
bool HasVar(UInt_64 hashId) const;
|
||||||
|
|
||||||
bool HasVar(const Str_8& identifier) const;
|
bool HasVar(const Str_8 &identifier) const;
|
||||||
|
|
||||||
bool AddVar(const JsonVar& var);
|
bool AddVar(const JsonVar &var);
|
||||||
|
|
||||||
const JsonVar* GetVar(const UInt_64 hashId) const;
|
const JsonVar *GetVar(UInt_64 hashId) const;
|
||||||
|
|
||||||
const JsonVar* GetVar(const Str_8& identifier) const;
|
const JsonVar *GetVar(const Str_8& identifier) const;
|
||||||
|
|
||||||
JsonVar* GetVar(const UInt_64 hashId);
|
JsonVar *GetVar(UInt_64 hashId);
|
||||||
|
|
||||||
JsonVar* GetVar(const Str_8& identifier);
|
JsonVar *GetVar(const Str_8& identifier);
|
||||||
|
|
||||||
Str_8 ToStr(const UInt_64 level, const bool compact) const;
|
Str_8 ToStr(UInt_64 level, bool compact) const override;
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
namespace ehs
|
namespace ehs
|
||||||
{
|
{
|
||||||
class EHS_LIB_IO JsonStr : public JsonBase
|
class EHS_LIB_IO JsonStr final : public JsonBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Str_8 value;
|
Str_8 value;
|
||||||
@ -16,18 +16,18 @@ namespace ehs
|
|||||||
|
|
||||||
JsonStr(Str_8 value);
|
JsonStr(Str_8 value);
|
||||||
|
|
||||||
JsonStr(const Char_8* value, const UInt_64 size = 0);
|
JsonStr(const Char_8 *value, UInt_64 size = 0);
|
||||||
|
|
||||||
JsonStr(JsonStr&& js) noexcept;
|
JsonStr(JsonStr &&js) noexcept;
|
||||||
|
|
||||||
JsonStr(const JsonStr& js) = default;
|
JsonStr(const JsonStr &js) = default;
|
||||||
|
|
||||||
JsonStr& operator=(JsonStr&& js) noexcept;
|
JsonStr& operator=(JsonStr &&js) noexcept;
|
||||||
|
|
||||||
operator Str_8() const;
|
operator Str_8() const;
|
||||||
|
|
||||||
operator Str_8&();
|
operator Str_8 &();
|
||||||
|
|
||||||
Str_8 ToStr(const UInt_64 level, const bool compact) const;
|
Str_8 ToStr(UInt_64 level, bool compact) const override;
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -12,7 +12,7 @@ namespace ehs
|
|||||||
class JsonNum;
|
class JsonNum;
|
||||||
class JsonStr;
|
class JsonStr;
|
||||||
|
|
||||||
class EHS_LIB_IO JsonVar
|
class EHS_LIB_IO JsonVar final
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
UInt_64 hashId;
|
UInt_64 hashId;
|
||||||
@ -20,49 +20,49 @@ namespace ehs
|
|||||||
JsonBase* value;
|
JsonBase* value;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ~JsonVar();
|
~JsonVar();
|
||||||
|
|
||||||
JsonVar();
|
JsonVar();
|
||||||
|
|
||||||
JsonVar(Str_8 id);
|
JsonVar(Str_8 id);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const JsonBase* const value);
|
JsonVar(Str_8 id, const JsonBase *value);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const JsonBase& value);
|
JsonVar(Str_8 id, const JsonBase &value);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const JsonObj& value);
|
JsonVar(Str_8 id, const JsonObj &value);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const JsonArray& value);
|
JsonVar(Str_8 id, const JsonArray &value);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const JsonBool& value);
|
JsonVar(Str_8 id, const JsonBool &value);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const bool boolean);
|
JsonVar(Str_8 id, bool boolean);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const JsonNum& value);
|
JsonVar(Str_8 id, const JsonNum &value);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const SInt_64 num);
|
JsonVar(Str_8 id, SInt_64 num);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const UInt_64 num);
|
JsonVar(Str_8 id, UInt_64 num);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const SInt_32 num);
|
JsonVar(Str_8 id, SInt_32 num);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const UInt_32 num);
|
JsonVar(Str_8 id, UInt_32 num);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const SInt_16 num);
|
JsonVar(Str_8 id, SInt_16 num);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const UInt_16 num);
|
JsonVar(Str_8 id, UInt_16 num);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const SInt_8 num);
|
JsonVar(Str_8 id, SInt_8 num);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const UInt_8 num);
|
JsonVar(Str_8 id, UInt_8 num);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const double num);
|
JsonVar(Str_8 id, double num);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const float num);
|
JsonVar(Str_8 id, float num);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const JsonStr& value);
|
JsonVar(Str_8 id, const JsonStr &value);
|
||||||
|
|
||||||
JsonVar(Str_8 id, const Char_8* str, const UInt_64 size = 0);
|
JsonVar(Str_8 id, const Char_8 *str, UInt_64 size = 0);
|
||||||
|
|
||||||
JsonVar(Str_8 id, Str_8 str);
|
JsonVar(Str_8 id, Str_8 str);
|
||||||
|
|
||||||
@ -78,25 +78,25 @@ namespace ehs
|
|||||||
|
|
||||||
Str_8 GetId() const;
|
Str_8 GetId() const;
|
||||||
|
|
||||||
void SetValue(const JsonBase* const newValue);
|
void SetValue(const JsonBase *newValue);
|
||||||
|
|
||||||
void SetValue(const JsonBase& newValue);
|
void SetValue(const JsonBase &newValue);
|
||||||
|
|
||||||
void SetValue(const JsonObj& newValue);
|
void SetValue(const JsonObj &newValue);
|
||||||
|
|
||||||
void SetValue(const JsonArray& newValue);
|
void SetValue(const JsonArray &newValue);
|
||||||
|
|
||||||
void SetValue(const JsonBool& newValue);
|
void SetValue(const JsonBool &newValue);
|
||||||
|
|
||||||
void SetValue(const bool newValue);
|
void SetValue(bool newValue);
|
||||||
|
|
||||||
void SetValue(const JsonNum& newValue);
|
void SetValue(const JsonNum& newValue);
|
||||||
|
|
||||||
void SetValue(const float newValue);
|
void SetValue(float newValue);
|
||||||
|
|
||||||
void SetValue(const JsonStr& newValue);
|
void SetValue(const JsonStr& newValue);
|
||||||
|
|
||||||
void SetValue(const Char_8* newValue, const UInt_64 size = 0);
|
void SetValue(const Char_8* newValue, UInt_64 size = 0);
|
||||||
|
|
||||||
void SetValue(const Str_8& newValue);
|
void SetValue(const Str_8& newValue);
|
||||||
|
|
||||||
@ -104,6 +104,6 @@ namespace ehs
|
|||||||
|
|
||||||
JsonBase* GetValue();
|
JsonBase* GetValue();
|
||||||
|
|
||||||
Str_8 ToStr(const UInt_64 level, const bool compact) const;
|
Str_8 ToStr(UInt_64 level, bool compact) const;
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -13,55 +13,55 @@ namespace ehs
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Json(const JsonBase& value)
|
Json::Json(const JsonBase &value)
|
||||||
: value(new JsonBase(value))
|
: value(new JsonBase(value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Json(const JsonObj& value)
|
Json::Json(const JsonObj &value)
|
||||||
: value((JsonBase*)new JsonObj(value))
|
: value((JsonBase *)new JsonObj(value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Json(const JsonArray& value)
|
Json::Json(const JsonArray &value)
|
||||||
: value((JsonBase*)new JsonArray(value))
|
: value((JsonBase *)new JsonArray(value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Json(const JsonBool& value)
|
Json::Json(const JsonBool &value)
|
||||||
: value((JsonBase*)new JsonBool(value))
|
: value((JsonBase*)new JsonBool(value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Json(const JsonNum& value)
|
Json::Json(const JsonNum &value)
|
||||||
: value((JsonBase*)new JsonNum(value))
|
: value((JsonBase *)new JsonNum(value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Json(const JsonStr& value)
|
Json::Json(const JsonStr &value)
|
||||||
: value((JsonBase*)new JsonStr(value))
|
: value((JsonBase *)new JsonStr(value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Json(const char* data, const UInt_64 size, const UInt_64 extra)
|
Json::Json(const char *data, const UInt_64 size, const UInt_64 extra)
|
||||||
: value(nullptr)
|
: value(nullptr)
|
||||||
{
|
{
|
||||||
Parse({data, size}, extra);
|
Parse({data, size}, extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Json(const Str_8& data, const UInt_64 extra)
|
Json::Json(const Str_8 &data, const UInt_64 extra)
|
||||||
: value(nullptr)
|
: value(nullptr)
|
||||||
{
|
{
|
||||||
Parse(data, extra);
|
Parse(data, extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Json(Json&& json) noexcept
|
Json::Json(Json &&json) noexcept
|
||||||
: value(json.value)
|
: value(json.value)
|
||||||
{
|
{
|
||||||
json.value = nullptr;
|
json.value = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Json(const Json& json)
|
Json::Json(const Json &json)
|
||||||
: value(nullptr)
|
: value(nullptr)
|
||||||
{
|
{
|
||||||
if (!json.value)
|
if (!json.value)
|
||||||
@ -70,19 +70,19 @@ namespace ehs
|
|||||||
switch (json.value->GetType())
|
switch (json.value->GetType())
|
||||||
{
|
{
|
||||||
case JsonType::OBJ:
|
case JsonType::OBJ:
|
||||||
value = (JsonBase*)new JsonObj(*(JsonObj*)json.value);
|
value = (JsonBase *)new JsonObj(*(JsonObj *)json.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::ARRAY:
|
case JsonType::ARRAY:
|
||||||
value = (JsonBase*)new JsonArray(*(JsonArray*)json.value);
|
value = (JsonBase *)new JsonArray(*(JsonArray *)json.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::BOOL:
|
case JsonType::BOOL:
|
||||||
value = (JsonBase*)new JsonBool(*(JsonBool*)json.value);
|
value = (JsonBase *)new JsonBool(*(JsonBool *)json.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::NUM:
|
case JsonType::NUM:
|
||||||
value = (JsonBase*)new JsonNum(*(JsonNum*)json.value);
|
value = (JsonBase *)new JsonNum(*(JsonNum *)json.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::STR:
|
case JsonType::STR:
|
||||||
value = (JsonBase*)new JsonStr(*(JsonStr*)json.value);
|
value = (JsonBase *)new JsonStr(*(JsonStr *)json.value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
value = new JsonBase();
|
value = new JsonBase();
|
||||||
@ -90,7 +90,7 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Json& Json::operator=(Json&& json) noexcept
|
Json& Json::operator=(Json &&json) noexcept
|
||||||
{
|
{
|
||||||
if (this == &json)
|
if (this == &json)
|
||||||
return *this;
|
return *this;
|
||||||
@ -103,7 +103,7 @@ namespace ehs
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Json& Json::operator=(const Json& json)
|
Json& Json::operator=(const Json &json)
|
||||||
{
|
{
|
||||||
if (this == &json)
|
if (this == &json)
|
||||||
return *this;
|
return *this;
|
||||||
@ -117,19 +117,19 @@ namespace ehs
|
|||||||
switch (json.value->GetType())
|
switch (json.value->GetType())
|
||||||
{
|
{
|
||||||
case JsonType::OBJ:
|
case JsonType::OBJ:
|
||||||
value = (JsonBase*)new JsonObj(*(JsonObj*)json.value);
|
value = (JsonBase *)new JsonObj(*(JsonObj *)json.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::ARRAY:
|
case JsonType::ARRAY:
|
||||||
value = (JsonBase*)new JsonArray(*(JsonArray*)json.value);
|
value = (JsonBase *)new JsonArray(*(JsonArray *)json.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::BOOL:
|
case JsonType::BOOL:
|
||||||
value = (JsonBase*)new JsonBool(*(JsonBool*)json.value);
|
value = (JsonBase *)new JsonBool(*(JsonBool *)json.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::NUM:
|
case JsonType::NUM:
|
||||||
value = (JsonBase*)new JsonNum(*(JsonNum*)json.value);
|
value = (JsonBase *)new JsonNum(*(JsonNum *)json.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::STR:
|
case JsonType::STR:
|
||||||
value = (JsonBase*)new JsonStr(*(JsonStr*)json.value);
|
value = (JsonBase *)new JsonStr(*(JsonStr *)json.value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
value = new JsonBase();
|
value = new JsonBase();
|
||||||
@ -139,12 +139,12 @@ namespace ehs
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonBase* Json::GetValue()
|
JsonBase *Json::GetValue()
|
||||||
{
|
{
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonBase* Json::RetrieveValue(const Str_8& access)
|
JsonBase *Json::RetrieveValue(const Str_8 &access)
|
||||||
{
|
{
|
||||||
if (!value || !access.Size())
|
if (!value || !access.Size())
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -192,8 +192,8 @@ namespace ehs
|
|||||||
Vector<Str_8> Json::ParseAccess(const Str_8& access)
|
Vector<Str_8> Json::ParseAccess(const Str_8& access)
|
||||||
{
|
{
|
||||||
bool isIndex = false;
|
bool isIndex = false;
|
||||||
const Char_8* start = &access[0];
|
const Char_8 *start = &access[0];
|
||||||
const Char_8* end = &access[access.Size() - 1];
|
const Char_8 *end = &access[access.Size() - 1];
|
||||||
|
|
||||||
Vector<Str_8> levels(0, 5);
|
Vector<Str_8> levels(0, 5);
|
||||||
|
|
||||||
@ -251,7 +251,7 @@ namespace ehs
|
|||||||
return levels;
|
return levels;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Json::ParseValue(JsonVar* var, const Char_8** begin, const Char_8* end, const UInt_64 extra)
|
void Json::ParseValue(JsonVar *var, const Char_8 **begin, const Char_8 *end, const UInt_64 extra)
|
||||||
{
|
{
|
||||||
const Char_8* start = nullptr;
|
const Char_8* start = nullptr;
|
||||||
bool isStr = false;
|
bool isStr = false;
|
||||||
@ -263,7 +263,7 @@ namespace ehs
|
|||||||
if (start)
|
if (start)
|
||||||
{
|
{
|
||||||
if (*begin - start)
|
if (*begin - start)
|
||||||
((JsonStr*)var->GetValue())->value = Str_8(start, *begin - start);
|
((JsonStr *)var->GetValue())->value = Str_8(start, *begin - start);
|
||||||
|
|
||||||
++(*begin);
|
++(*begin);
|
||||||
return;
|
return;
|
||||||
@ -312,11 +312,11 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonVar Json::ParseVar(const Char_8** begin, const Char_8* end, const UInt_64 extra)
|
JsonVar Json::ParseVar(const Char_8 **begin, const Char_8 *end, const UInt_64 extra)
|
||||||
{
|
{
|
||||||
JsonVar var;
|
JsonVar var;
|
||||||
|
|
||||||
const Char_8* start = nullptr;
|
const Char_8 *start = nullptr;
|
||||||
|
|
||||||
for (; *begin <= end; ++(*begin))
|
for (; *begin <= end; ++(*begin))
|
||||||
{
|
{
|
||||||
@ -351,7 +351,7 @@ namespace ehs
|
|||||||
return var;
|
return var;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Json::ParseObject(JsonObj* obj, const Char_8** begin, const Char_8* end, const UInt_64 extra)
|
void Json::ParseObject(JsonObj *obj, const Char_8 **begin, const Char_8 *end, const UInt_64 extra)
|
||||||
{
|
{
|
||||||
JsonVar var;
|
JsonVar var;
|
||||||
do
|
do
|
||||||
@ -361,9 +361,9 @@ namespace ehs
|
|||||||
while(obj->AddVar(var));
|
while(obj->AddVar(var));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Json::ParseArray(JsonArray* arr, const Char_8** begin, const Char_8* end, const UInt_64 extra)
|
void Json::ParseArray(JsonArray *arr, const Char_8 **begin, const Char_8 *end, const UInt_64 extra)
|
||||||
{
|
{
|
||||||
const Char_8* start = nullptr;
|
const Char_8 *start = nullptr;
|
||||||
|
|
||||||
for (; *begin <= end; ++(*begin))
|
for (; *begin <= end; ++(*begin))
|
||||||
{
|
{
|
||||||
@ -423,12 +423,12 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Json::Parse(const Str_8& data, const UInt_64 extra)
|
void Json::Parse(const Str_8 &data, const UInt_64 extra)
|
||||||
{
|
{
|
||||||
const Char_8* start = nullptr;
|
const Char_8 *start = nullptr;
|
||||||
const Char_8* end = &data[data.Size() - 1];
|
const Char_8 *end = &data[data.Size() - 1];
|
||||||
|
|
||||||
for (const Char_8* i = &data[0]; i <= end; ++i)
|
for (const Char_8 *i = &data[0]; i <= end; ++i)
|
||||||
{
|
{
|
||||||
if (*i == '}' || *i == ']')
|
if (*i == '}' || *i == ']')
|
||||||
{
|
{
|
||||||
|
@ -29,7 +29,7 @@ namespace ehs
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonArray::JsonArray(JsonArray&& ja) noexcept
|
JsonArray::JsonArray(JsonArray &&ja) noexcept
|
||||||
: JsonBase(ja), size(ja.size), extra(ja.extra), rawSize(ja.rawSize), data(ja.data)
|
: JsonBase(ja), size(ja.size), extra(ja.extra), rawSize(ja.rawSize), data(ja.data)
|
||||||
{
|
{
|
||||||
ja.size = 0;
|
ja.size = 0;
|
||||||
@ -38,7 +38,7 @@ namespace ehs
|
|||||||
ja.data = nullptr;
|
ja.data = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonArray::JsonArray(const JsonArray& ja)
|
JsonArray::JsonArray(const JsonArray &ja)
|
||||||
: JsonBase(ja), size(ja.size), extra(ja.extra), rawSize(ja.rawSize), data(new JsonBase*[ja.rawSize])
|
: JsonBase(ja), size(ja.size), extra(ja.extra), rawSize(ja.rawSize), data(new JsonBase*[ja.rawSize])
|
||||||
{
|
{
|
||||||
for (UInt_64 i = 0; i < size; ++i)
|
for (UInt_64 i = 0; i < size; ++i)
|
||||||
@ -46,19 +46,19 @@ namespace ehs
|
|||||||
switch (ja.data[i]->GetType())
|
switch (ja.data[i]->GetType())
|
||||||
{
|
{
|
||||||
case JsonType::OBJ:
|
case JsonType::OBJ:
|
||||||
data[i] = (JsonBase*)new JsonObj(*(JsonObj*)ja.data[i]);
|
data[i] = (JsonBase *)new JsonObj(*(JsonObj *)ja.data[i]);
|
||||||
break;
|
break;
|
||||||
case JsonType::ARRAY:
|
case JsonType::ARRAY:
|
||||||
data[i] = (JsonBase*)new JsonArray(*(JsonArray*)ja.data[i]);
|
data[i] = (JsonBase *)new JsonArray(*(JsonArray *)ja.data[i]);
|
||||||
break;
|
break;
|
||||||
case JsonType::BOOL:
|
case JsonType::BOOL:
|
||||||
data[i] = (JsonBase*)new JsonBool(*(JsonBool*)ja.data[i]);
|
data[i] = (JsonBase *)new JsonBool(*(JsonBool *)ja.data[i]);
|
||||||
break;
|
break;
|
||||||
case JsonType::NUM:
|
case JsonType::NUM:
|
||||||
data[i] = (JsonBase*)new JsonNum(*(JsonNum*)ja.data[i]);
|
data[i] = (JsonBase *)new JsonNum(*(JsonNum *)ja.data[i]);
|
||||||
break;
|
break;
|
||||||
case JsonType::STR:
|
case JsonType::STR:
|
||||||
data[i] = (JsonBase*)new JsonStr(*(JsonStr*)ja.data[i]);
|
data[i] = (JsonBase *)new JsonStr(*(JsonStr *)ja.data[i]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
data[i] = new JsonBase();
|
data[i] = new JsonBase();
|
||||||
@ -67,7 +67,7 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonArray& JsonArray::operator=(JsonArray&& ja) noexcept
|
JsonArray &JsonArray::operator=(JsonArray &&ja) noexcept
|
||||||
{
|
{
|
||||||
if (this == &ja)
|
if (this == &ja)
|
||||||
return *this;
|
return *this;
|
||||||
@ -88,7 +88,7 @@ namespace ehs
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonArray& JsonArray::operator=(const JsonArray& ja)
|
JsonArray &JsonArray::operator=(const JsonArray &ja)
|
||||||
{
|
{
|
||||||
if (this == &ja)
|
if (this == &ja)
|
||||||
return *this;
|
return *this;
|
||||||
@ -134,7 +134,7 @@ namespace ehs
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonArray::operator JsonBase**()
|
JsonArray::operator JsonBase **()
|
||||||
{
|
{
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
@ -154,12 +154,12 @@ namespace ehs
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonArray::Insert(const UInt_64 index, const JsonBase* const value)
|
void JsonArray::Insert(const UInt_64 index, const JsonBase * const value)
|
||||||
{
|
{
|
||||||
if (size + 1 >= rawSize)
|
if (size + 1 >= rawSize)
|
||||||
rawSize = size + extra;
|
rawSize = size + extra;
|
||||||
|
|
||||||
JsonBase** result = new JsonBase*[rawSize];
|
JsonBase **result = new JsonBase*[rawSize];
|
||||||
|
|
||||||
for (UInt_64 i = 0; i < index; ++i)
|
for (UInt_64 i = 0; i < index; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
@ -195,12 +195,12 @@ namespace ehs
|
|||||||
++size;
|
++size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonArray::Push(const JsonBase* const value)
|
void JsonArray::Push(const JsonBase * const value)
|
||||||
{
|
{
|
||||||
if (size + 1 > rawSize)
|
if (size + 1 > rawSize)
|
||||||
{
|
{
|
||||||
rawSize = size + extra + 1;
|
rawSize = size + extra + 1;
|
||||||
JsonBase** result = new JsonBase*[rawSize];
|
JsonBase **result = new JsonBase*[rawSize];
|
||||||
|
|
||||||
for (UInt_64 i = 0; i < size; ++i)
|
for (UInt_64 i = 0; i < size; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
@ -257,12 +257,12 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonArray::Push(const JsonBase& value)
|
void JsonArray::Push(const JsonBase &value)
|
||||||
{
|
{
|
||||||
if (size + 1 > rawSize)
|
if (size + 1 > rawSize)
|
||||||
{
|
{
|
||||||
rawSize = size + extra + 1;
|
rawSize = size + extra + 1;
|
||||||
JsonBase** result = new JsonBase*[rawSize];
|
JsonBase **result = new JsonBase*[rawSize];
|
||||||
|
|
||||||
for (UInt_64 i = 0; i < size; ++i)
|
for (UInt_64 i = 0; i < size; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
@ -279,7 +279,29 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonArray::Push(const JsonObj& value)
|
void JsonArray::Push(const JsonObj &value)
|
||||||
|
{
|
||||||
|
if (size + 1 > rawSize)
|
||||||
|
{
|
||||||
|
rawSize = size + extra + 1;
|
||||||
|
JsonBase **result = new JsonBase*[rawSize];
|
||||||
|
|
||||||
|
for (UInt_64 i = 0; i < size; ++i)
|
||||||
|
result[i] = data[i];
|
||||||
|
|
||||||
|
result[size++] = (JsonBase *)new JsonObj(value);
|
||||||
|
|
||||||
|
delete[] data;
|
||||||
|
|
||||||
|
data = result;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data[size++] = (JsonBase *)new JsonObj(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void JsonArray::Push(const JsonArray &value)
|
||||||
{
|
{
|
||||||
if (size + 1 > rawSize)
|
if (size + 1 > rawSize)
|
||||||
{
|
{
|
||||||
@ -289,7 +311,7 @@ namespace ehs
|
|||||||
for (UInt_64 i = 0; i < size; ++i)
|
for (UInt_64 i = 0; i < size; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
|
|
||||||
result[size++] = (JsonBase*)new JsonObj(value);
|
result[size++] = (JsonBase *)new JsonArray(value);
|
||||||
|
|
||||||
delete[] data;
|
delete[] data;
|
||||||
|
|
||||||
@ -297,11 +319,11 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data[size++] = (JsonBase*)new JsonObj(value);
|
data[size++] = (JsonBase *)new JsonArray(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonArray::Push(const JsonArray& value)
|
void JsonArray::Push(const JsonBool &value)
|
||||||
{
|
{
|
||||||
if (size + 1 > rawSize)
|
if (size + 1 > rawSize)
|
||||||
{
|
{
|
||||||
@ -311,7 +333,7 @@ namespace ehs
|
|||||||
for (UInt_64 i = 0; i < size; ++i)
|
for (UInt_64 i = 0; i < size; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
|
|
||||||
result[size++] = (JsonBase*)new JsonArray(value);
|
result[size++] = (JsonBase *)new JsonBool(value);
|
||||||
|
|
||||||
delete[] data;
|
delete[] data;
|
||||||
|
|
||||||
@ -319,29 +341,7 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data[size++] = (JsonBase*)new JsonArray(value);
|
data[size++] = (JsonBase *)new JsonBool(value);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void JsonArray::Push(const JsonBool& value)
|
|
||||||
{
|
|
||||||
if (size + 1 > rawSize)
|
|
||||||
{
|
|
||||||
rawSize = size + extra + 1;
|
|
||||||
JsonBase** result = new JsonBase*[rawSize];
|
|
||||||
|
|
||||||
for (UInt_64 i = 0; i < size; ++i)
|
|
||||||
result[i] = data[i];
|
|
||||||
|
|
||||||
result[size++] = (JsonBase*)new JsonBool(value);
|
|
||||||
|
|
||||||
delete[] data;
|
|
||||||
|
|
||||||
data = result;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
data[size++] = (JsonBase*)new JsonBool(value);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -355,7 +355,7 @@ namespace ehs
|
|||||||
for (UInt_64 i = 0; i < size; ++i)
|
for (UInt_64 i = 0; i < size; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
|
|
||||||
result[size++] = (JsonBase*)new JsonBool(value);
|
result[size++] = (JsonBase *)new JsonBool(value);
|
||||||
|
|
||||||
delete[] data;
|
delete[] data;
|
||||||
|
|
||||||
@ -363,21 +363,21 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data[size++] = (JsonBase*)new JsonBool(value);
|
data[size++] = (JsonBase *)new JsonBool(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonArray::Push(const JsonNum& value)
|
void JsonArray::Push(const JsonNum &value)
|
||||||
{
|
{
|
||||||
if (size + 1 > rawSize)
|
if (size + 1 > rawSize)
|
||||||
{
|
{
|
||||||
rawSize = size + extra + 1;
|
rawSize = size + extra + 1;
|
||||||
JsonBase** result = new JsonBase*[rawSize];
|
JsonBase **result = new JsonBase*[rawSize];
|
||||||
|
|
||||||
for (UInt_64 i = 0; i < size; ++i)
|
for (UInt_64 i = 0; i < size; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
|
|
||||||
result[size++] = (JsonBase*)new JsonNum(value);
|
result[size++] = (JsonBase *)new JsonNum(value);
|
||||||
|
|
||||||
delete[] data;
|
delete[] data;
|
||||||
|
|
||||||
@ -385,7 +385,7 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data[size++] = (JsonBase*)new JsonNum(value);
|
data[size++] = (JsonBase *)new JsonNum(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -394,12 +394,12 @@ namespace ehs
|
|||||||
if (size + 1 > rawSize)
|
if (size + 1 > rawSize)
|
||||||
{
|
{
|
||||||
rawSize = size + extra + 1;
|
rawSize = size + extra + 1;
|
||||||
JsonBase** result = new JsonBase*[rawSize];
|
JsonBase **result = new JsonBase*[rawSize];
|
||||||
|
|
||||||
for (UInt_64 i = 0; i < size; ++i)
|
for (UInt_64 i = 0; i < size; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
|
|
||||||
result[size++] = (JsonBase*)new JsonNum(value);
|
result[size++] = (JsonBase *)new JsonNum(value);
|
||||||
|
|
||||||
delete[] data;
|
delete[] data;
|
||||||
|
|
||||||
@ -407,11 +407,11 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data[size++] = (JsonBase*)new JsonNum(value);
|
data[size++] = (JsonBase *)new JsonNum(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonArray::Push(const JsonStr& value)
|
void JsonArray::Push(const JsonStr &value)
|
||||||
{
|
{
|
||||||
if (size + 1 > rawSize)
|
if (size + 1 > rawSize)
|
||||||
{
|
{
|
||||||
@ -421,7 +421,7 @@ namespace ehs
|
|||||||
for (UInt_64 i = 0; i < size; ++i)
|
for (UInt_64 i = 0; i < size; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
|
|
||||||
result[size++] = (JsonBase*)new JsonStr(value);
|
result[size++] = (JsonBase *)new JsonStr(value);
|
||||||
|
|
||||||
delete[] data;
|
delete[] data;
|
||||||
|
|
||||||
@ -429,11 +429,11 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data[size++] = (JsonBase*)new JsonStr(value);
|
data[size++] = (JsonBase *)new JsonStr(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonArray::Push(const Char_8* value, const UInt_64 size)
|
void JsonArray::Push(const Char_8 *value, const UInt_64 size)
|
||||||
{
|
{
|
||||||
if (this->size + 1 > rawSize)
|
if (this->size + 1 > rawSize)
|
||||||
{
|
{
|
||||||
@ -443,7 +443,7 @@ namespace ehs
|
|||||||
for (UInt_64 i = 0; i < this->size; ++i)
|
for (UInt_64 i = 0; i < this->size; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
|
|
||||||
result[this->size++] = (JsonBase*)new JsonStr(Str_8(value, size));
|
result[this->size++] = (JsonBase *)new JsonStr(Str_8(value, size));
|
||||||
|
|
||||||
delete[] data;
|
delete[] data;
|
||||||
|
|
||||||
@ -451,11 +451,11 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data[this->size++] = (JsonBase*)new JsonStr(Str_8(value, size));
|
data[this->size++] = (JsonBase *)new JsonStr(Str_8(value, size));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonArray::Push(const Str_8& value)
|
void JsonArray::Push(const Str_8 &value)
|
||||||
{
|
{
|
||||||
if (this->size + 1 > rawSize)
|
if (this->size + 1 > rawSize)
|
||||||
{
|
{
|
||||||
@ -465,7 +465,7 @@ namespace ehs
|
|||||||
for (UInt_64 i = 0; i < this->size; ++i)
|
for (UInt_64 i = 0; i < this->size; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
|
|
||||||
result[this->size++] = (JsonBase*)new JsonStr(value);
|
result[this->size++] = (JsonBase *)new JsonStr(value);
|
||||||
|
|
||||||
delete[] data;
|
delete[] data;
|
||||||
|
|
||||||
@ -473,7 +473,7 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data[this->size++] = (JsonBase*)new JsonStr(value);
|
data[this->size++] = (JsonBase *)new JsonStr(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -482,7 +482,7 @@ namespace ehs
|
|||||||
if (rawSize - --size >= extra * 2)
|
if (rawSize - --size >= extra * 2)
|
||||||
rawSize -= extra;
|
rawSize -= extra;
|
||||||
|
|
||||||
JsonBase** result = new JsonBase*[rawSize];
|
JsonBase **result = new JsonBase*[rawSize];
|
||||||
for (UInt_64 i = 0; i < size; ++i)
|
for (UInt_64 i = 0; i < size; ++i)
|
||||||
result[i] = data[i];
|
result[i] = data[i];
|
||||||
|
|
||||||
|
@ -71,11 +71,6 @@ namespace ehs
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonNum::operator float&()
|
|
||||||
{
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
Str_8 JsonNum::ToStr(const UInt_64 level, const bool compact) const
|
Str_8 JsonNum::ToStr(const UInt_64 level, const bool compact) const
|
||||||
{
|
{
|
||||||
Str_8 result;
|
Str_8 result;
|
||||||
|
@ -79,12 +79,7 @@ namespace ehs
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonObj::operator const JsonVar*() const
|
JsonObj::operator JsonVar*() const
|
||||||
{
|
|
||||||
return vars;
|
|
||||||
}
|
|
||||||
|
|
||||||
JsonObj::operator JsonVar*()
|
|
||||||
{
|
{
|
||||||
return vars;
|
return vars;
|
||||||
}
|
}
|
||||||
|
@ -13,17 +13,17 @@ namespace ehs
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonStr::JsonStr(const Char_8* value, const UInt_64 size)
|
JsonStr::JsonStr(const Char_8 *value, const UInt_64 size)
|
||||||
: JsonBase(JsonType::STR), value(value, size)
|
: JsonBase(JsonType::STR), value(value, size)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonStr::JsonStr(JsonStr&& js) noexcept
|
JsonStr::JsonStr(JsonStr &&js) noexcept
|
||||||
: JsonBase(js), value(std::move(js.value))
|
: JsonBase(js), value(std::move(js.value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonStr& JsonStr::operator=(JsonStr&& js) noexcept
|
JsonStr& JsonStr::operator=(JsonStr &&js) noexcept
|
||||||
{
|
{
|
||||||
if (this == &js)
|
if (this == &js)
|
||||||
return *this;
|
return *this;
|
||||||
@ -40,7 +40,7 @@ namespace ehs
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonStr::operator Str_8&()
|
JsonStr::operator Str_8 &()
|
||||||
{
|
{
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
@ -23,25 +23,25 @@ namespace ehs
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonVar::JsonVar(Str_8 id, const JsonBase* const value)
|
JsonVar::JsonVar(Str_8 id, const JsonBase * const value)
|
||||||
: hashId(id.Hash_64()), id(std::move(id))
|
: hashId(id.Hash_64()), id(std::move(id))
|
||||||
{
|
{
|
||||||
switch (value->GetType())
|
switch (value->GetType())
|
||||||
{
|
{
|
||||||
case JsonType::OBJ:
|
case JsonType::OBJ:
|
||||||
this->value = (JsonBase*)new JsonObj(*(JsonObj*)value);
|
this->value = (JsonBase *)new JsonObj(*(JsonObj *)value);
|
||||||
break;
|
break;
|
||||||
case JsonType::ARRAY:
|
case JsonType::ARRAY:
|
||||||
this->value = (JsonBase*)new JsonArray(*(JsonArray*)value);
|
this->value = (JsonBase *)new JsonArray(*(JsonArray *)value);
|
||||||
break;
|
break;
|
||||||
case JsonType::BOOL:
|
case JsonType::BOOL:
|
||||||
this->value = (JsonBase*)new JsonBool(*(JsonBool*)value);
|
this->value = (JsonBase *)new JsonBool(*(JsonBool *)value);
|
||||||
break;
|
break;
|
||||||
case JsonType::NUM:
|
case JsonType::NUM:
|
||||||
this->value = (JsonBase*)new JsonNum(*(JsonNum*)value);
|
this->value = (JsonBase *)new JsonNum(*(JsonNum *)value);
|
||||||
break;
|
break;
|
||||||
case JsonType::STR:
|
case JsonType::STR:
|
||||||
this->value = (JsonBase*)new JsonStr(*(JsonStr*)value);
|
this->value = (JsonBase *)new JsonStr(*(JsonStr *)value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
this->value = new JsonBase(JsonType::NULLOBJ);
|
this->value = new JsonBase(JsonType::NULLOBJ);
|
||||||
@ -49,22 +49,22 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonVar::JsonVar(Str_8 id, const JsonBase& value)
|
JsonVar::JsonVar(Str_8 id, const JsonBase &value)
|
||||||
: hashId(id.Hash_64()), id(std::move(id)), value(new JsonBase(value))
|
: hashId(id.Hash_64()), id(std::move(id)), value(new JsonBase(value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonVar::JsonVar(Str_8 id, const JsonObj& value)
|
JsonVar::JsonVar(Str_8 id, const JsonObj &value)
|
||||||
: hashId(id.Hash_64()), id(std::move(id)), value((JsonBase*)new JsonObj(value))
|
: hashId(id.Hash_64()), id(std::move(id)), value((JsonBase*)new JsonObj(value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonVar::JsonVar(Str_8 id, const JsonArray& value)
|
JsonVar::JsonVar(Str_8 id, const JsonArray &value)
|
||||||
: hashId(id.Hash_64()), id(std::move(id)), value((JsonBase*)new JsonArray(value))
|
: hashId(id.Hash_64()), id(std::move(id)), value((JsonBase*)new JsonArray(value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonVar::JsonVar(Str_8 id, const JsonBool& value)
|
JsonVar::JsonVar(Str_8 id, const JsonBool &value)
|
||||||
: hashId(id.Hash_64()), id(std::move(id)), value((JsonBase*)new JsonBool(value))
|
: hashId(id.Hash_64()), id(std::move(id)), value((JsonBase*)new JsonBool(value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -74,7 +74,7 @@ namespace ehs
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonVar::JsonVar(Str_8 id, const JsonNum& value)
|
JsonVar::JsonVar(Str_8 id, const JsonNum &value)
|
||||||
: hashId(id.Hash_64()), id(std::move(id)), value((JsonBase*)new JsonNum(value))
|
: hashId(id.Hash_64()), id(std::move(id)), value((JsonBase*)new JsonNum(value))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -144,14 +144,14 @@ namespace ehs
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonVar::JsonVar(JsonVar&& var) noexcept
|
JsonVar::JsonVar(JsonVar &&var) noexcept
|
||||||
: hashId(var.hashId), id(std::move(var.id)), value(var.value)
|
: hashId(var.hashId), id(std::move(var.id)), value(var.value)
|
||||||
{
|
{
|
||||||
var.hashId = 0;
|
var.hashId = 0;
|
||||||
var.value = nullptr;
|
var.value = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonVar::JsonVar(const JsonVar& var)
|
JsonVar::JsonVar(const JsonVar &var)
|
||||||
: hashId(var.hashId), id(var.id), value(nullptr)
|
: hashId(var.hashId), id(var.id), value(nullptr)
|
||||||
{
|
{
|
||||||
if (!var.value)
|
if (!var.value)
|
||||||
@ -180,7 +180,7 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonVar& JsonVar::operator=(JsonVar&& var) noexcept
|
JsonVar& JsonVar::operator=(JsonVar &&var) noexcept
|
||||||
{
|
{
|
||||||
if (this == &var)
|
if (this == &var)
|
||||||
return *this;
|
return *this;
|
||||||
@ -196,7 +196,7 @@ namespace ehs
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonVar& JsonVar::operator=(const JsonVar& var)
|
JsonVar& JsonVar::operator=(const JsonVar &var)
|
||||||
{
|
{
|
||||||
if (this == &var)
|
if (this == &var)
|
||||||
return *this;
|
return *this;
|
||||||
@ -212,19 +212,19 @@ namespace ehs
|
|||||||
switch (var.value->GetType())
|
switch (var.value->GetType())
|
||||||
{
|
{
|
||||||
case JsonType::OBJ:
|
case JsonType::OBJ:
|
||||||
value = (JsonBase*)new JsonObj(*(JsonObj*)var.value);
|
value = (JsonBase *)new JsonObj(*(JsonObj *)var.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::ARRAY:
|
case JsonType::ARRAY:
|
||||||
value = (JsonBase*)new JsonArray(*(JsonArray*)var.value);
|
value = (JsonBase *)new JsonArray(*(JsonArray *)var.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::BOOL:
|
case JsonType::BOOL:
|
||||||
value = (JsonBase*)new JsonBool(*(JsonBool*)var.value);
|
value = (JsonBase *)new JsonBool(*(JsonBool *)var.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::NUM:
|
case JsonType::NUM:
|
||||||
value = (JsonBase*)new JsonNum(*(JsonNum*)var.value);
|
value = (JsonBase *)new JsonNum(*(JsonNum *)var.value);
|
||||||
break;
|
break;
|
||||||
case JsonType::STR:
|
case JsonType::STR:
|
||||||
value = (JsonBase*)new JsonStr(*(JsonStr*)var.value);
|
value = (JsonBase *)new JsonStr(*(JsonStr *)var.value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
value = new JsonBase();
|
value = new JsonBase();
|
||||||
@ -244,7 +244,7 @@ namespace ehs
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonVar::SetValue(const JsonBase* const newValue)
|
void JsonVar::SetValue(const JsonBase * const newValue)
|
||||||
{
|
{
|
||||||
if (!newValue)
|
if (!newValue)
|
||||||
return;
|
return;
|
||||||
@ -254,19 +254,19 @@ namespace ehs
|
|||||||
switch (newValue->GetType())
|
switch (newValue->GetType())
|
||||||
{
|
{
|
||||||
case JsonType::OBJ:
|
case JsonType::OBJ:
|
||||||
value = (JsonBase*)new JsonObj(*(JsonObj*)newValue);
|
value = (JsonBase *)new JsonObj(*(JsonObj *)newValue);
|
||||||
break;
|
break;
|
||||||
case JsonType::ARRAY:
|
case JsonType::ARRAY:
|
||||||
value = (JsonBase*)new JsonArray(*(JsonArray*)newValue);
|
value = (JsonBase *)new JsonArray(*(JsonArray *)newValue);
|
||||||
break;
|
break;
|
||||||
case JsonType::BOOL:
|
case JsonType::BOOL:
|
||||||
value = (JsonBase*)new JsonBool(*(JsonBool*)newValue);
|
value = (JsonBase *)new JsonBool(*(JsonBool *)newValue);
|
||||||
break;
|
break;
|
||||||
case JsonType::NUM:
|
case JsonType::NUM:
|
||||||
value = (JsonBase*)new JsonNum(*(JsonNum*)newValue);
|
value = (JsonBase *)new JsonNum(*(JsonNum *)newValue);
|
||||||
break;
|
break;
|
||||||
case JsonType::STR:
|
case JsonType::STR:
|
||||||
value = (JsonBase*)new JsonStr(*(JsonStr*)newValue);
|
value = (JsonBase *)new JsonStr(*(JsonStr *)newValue);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
value = new JsonBase();
|
value = new JsonBase();
|
||||||
@ -274,72 +274,72 @@ namespace ehs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonVar::SetValue(const JsonBase& newValue)
|
void JsonVar::SetValue(const JsonBase &newValue)
|
||||||
{
|
{
|
||||||
delete value;
|
delete value;
|
||||||
value = new JsonBase(newValue);
|
value = new JsonBase(newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonVar::SetValue(const JsonObj& newValue)
|
void JsonVar::SetValue(const JsonObj &newValue)
|
||||||
{
|
{
|
||||||
delete value;
|
delete value;
|
||||||
value = (JsonBase*)new JsonObj(newValue);
|
value = (JsonBase *)new JsonObj(newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonVar::SetValue(const JsonArray& newValue)
|
void JsonVar::SetValue(const JsonArray &newValue)
|
||||||
{
|
{
|
||||||
delete value;
|
delete value;
|
||||||
value = (JsonBase*)new JsonArray(newValue);
|
value = (JsonBase *)new JsonArray(newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonVar::SetValue(const JsonBool& newValue)
|
void JsonVar::SetValue(const JsonBool &newValue)
|
||||||
{
|
{
|
||||||
delete value;
|
delete value;
|
||||||
value = (JsonBase*)new JsonBool(newValue);
|
value = (JsonBase *)new JsonBool(newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonVar::SetValue(const bool newValue)
|
void JsonVar::SetValue(const bool newValue)
|
||||||
{
|
{
|
||||||
delete value;
|
delete value;
|
||||||
value = (JsonBase*)new JsonBool(newValue);
|
value = (JsonBase *)new JsonBool(newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonVar::SetValue(const JsonNum& newValue)
|
void JsonVar::SetValue(const JsonNum &newValue)
|
||||||
{
|
{
|
||||||
delete value;
|
delete value;
|
||||||
value = (JsonBase*)new JsonNum(newValue);
|
value = (JsonBase *)new JsonNum(newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonVar::SetValue(const float newValue)
|
void JsonVar::SetValue(const float newValue)
|
||||||
{
|
{
|
||||||
delete value;
|
delete value;
|
||||||
value = (JsonBase*)new JsonNum(newValue);
|
value = (JsonBase *)new JsonNum(newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonVar::SetValue(const JsonStr& newValue)
|
void JsonVar::SetValue(const JsonStr &newValue)
|
||||||
{
|
{
|
||||||
delete value;
|
delete value;
|
||||||
value = (JsonBase*)new JsonStr(newValue);
|
value = (JsonBase *)new JsonStr(newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonVar::SetValue(const Char_8* newValue, const UInt_64 size)
|
void JsonVar::SetValue(const Char_8 *newValue, const UInt_64 size)
|
||||||
{
|
{
|
||||||
delete value;
|
delete value;
|
||||||
value = (JsonBase*)new JsonStr(newValue, size);
|
value = (JsonBase *)new JsonStr(newValue, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonVar::SetValue(const Str_8& newValue)
|
void JsonVar::SetValue(const Str_8 &newValue)
|
||||||
{
|
{
|
||||||
delete value;
|
delete value;
|
||||||
value = (JsonBase*)new JsonStr(newValue);
|
value = (JsonBase *)new JsonStr(newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
const JsonBase* JsonVar::GetValue() const
|
const JsonBase *JsonVar::GetValue() const
|
||||||
{
|
{
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonBase* JsonVar::GetValue()
|
JsonBase *JsonVar::GetValue()
|
||||||
{
|
{
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user