3 #include "Core/Global.h"
4 #include "Core/Exceptions.h"
5 #include "IO/JsonObject/JsonObject.h"
6 #include "IO/Buffer/Buffer.h"
11 static auto InvalidFormatException = std::runtime_error(
"Object format is invalid!");
12 static auto InvalidEncodingException = std::runtime_error(
"Object encoding is invalid!");
75 void removeWhitespace();
81 void selectParser(std::string &i_stOutBuffer,
CJsonObject *i_pObject =
nullptr);
87 uint parseUnicodeHex();
94 void parseNull(std::string &i_stOutBuffer,
CJsonObject *i_pObject);
100 void parseBool(std::string &i_stOutBuffer,
CJsonObject *i_pObject);
106 void parseObject(std::string &i_stOutBuffer,
CJsonObject *i_pObject);
112 void parseString(std::string &i_stOutBuffer,
CJsonObject *i_pObject =
nullptr);
118 void parseNumber(std::string &i_stOutBuffer,
CJsonObject *i_pObject);
131 static void selectSerializer(std::string &i_stBuffer,
CJsonObject &i_oObject,
bool i_bFormatted =
false);
138 static void serializeArray(std::string &i_stBuffer,
CJsonObject &i_oObject,
bool i_bFormatted =
false);
145 static void serializeObject(std::string &i_stBuffer,
CJsonObject &i_oObject,
bool i_bFormatted =
false);
151 static void serializeNumber(std::string &i_stBuffer,
CJsonObject &i_oObject);
157 static void serializeString(std::string &i_stBuffer,
CJsonObject &i_oObject);
162 static void serializeNull(std::string &i_stBuffer);
168 static void serializeBool(std::string &i_stBuffer,
CJsonObject &i_oObject);
175 inline void setBuffer(
char *i_pBuffer,
const size_t i_nSize) {
177 this->m_pBuffer = i_pBuffer;
178 this->m_pPointer = i_pBuffer;
179 this->m_pEnd = i_pBuffer + i_nSize;
184 inline void clearBuffer() {
186 this->m_pBuffer =
nullptr;
187 this->m_pPointer =
nullptr;
188 this->m_pEnd =
nullptr;
193 inline void skipChar() {
201 inline size_t getBufferSize()
const {
return this->m_pEnd - this->m_pBuffer; }
207 inline bool checkChar(
const char i_chExpect) {
208 if (*this->m_pPointer == i_chExpect) {
219 void parse(
const std::string &i_stJson);
225 std::string
serialize(
bool i_bFormatted);
231 this->m_oObject.clear();
252 return this->m_oObject.operator[](i_stKey);
260 this->m_oObject = i_oOther.m_oObject;
269 this->m_oObject = std::move(i_oOther.m_oObject);
unsigned int uint
An unsigned integer type.
Definition: Typedef.h:19
A class for representing and handling a JSON document.
Definition: JsonDocument.h:35
void clear()
Clears the encapsulated JSON object.
Definition: JsonDocument.h:230
CJsonObject & getObject(const std::string &i_stKey)
Gets a JSON object by key from the encapsulated JSON object.
Definition: JsonDocument.h:239
virtual ~CJsonDocument()
Destructor for CJsonDocument.
Definition: JsonDocument.cpp:15
CJsonDocument()
Default constructor for CJsonDocument.
Definition: JsonDocument.cpp:4
CJsonDocument & operator=(CJsonDocument &&i_oOther) noexcept
Moves the ownership of the CJsonObject from the given CJsonDocument to this CJsonDocument.
Definition: JsonDocument.h:268
CJsonObject & toObject()
Gets the encapsulated JSON object.
Definition: JsonDocument.h:244
CJsonDocument(const CJsonDocument &i_oOther)
Copy constructor for CJsonDocument.
Definition: JsonDocument.h:48
std::string serialize(bool i_bFormatted)
Serializes the encapsulated JSON object into a JSON string.
Definition: JsonDocument.cpp:406
CJsonDocument(CJsonDocument &&i_oOther) noexcept
Move constructor for CJsonDocument.
Definition: JsonDocument.h:53
void parse(const std::string &i_stJson)
Parses a JSON string.
Definition: JsonDocument.cpp:378
CJsonDocument & operator=(const CJsonDocument &i_oOther)
Overload of move assignment operator for CJsonDocument.
Definition: JsonDocument.h:259
CJsonObject & operator[](const std::string &i_stKey)
Overload of assignment operator for CJsonDocument.
Definition: JsonDocument.h:251
A class that encapsulates a JSON object.
Definition: JsonObject.h:50
The namespace encapsulating I/O related classes and functions in the Devel framework.