Util: Add emplace() to Json::Value

This commit is contained in:
Riyyi
2022-06-23 14:54:29 +02:00
parent e5978310bf
commit af678374bc
2 changed files with 34 additions and 1 deletions
+31 -1
View File
@@ -116,17 +116,47 @@ std::string Value::dump(const uint32_t indent, const char indentCharacter) const
return stringify.dump(); return stringify.dump();
} }
void Value::emplace_back(Value value)
{
// Implicitly convert null to an array
if (m_type == Type::Null) {
m_type = Type::Array;
m_value.asArray = new Array;
}
assert(m_type == Type::Array);
m_value.asArray->emplace_back(value);
}
void Value::emplace(const std::string& key, Value value)
{
// Implicitly convert null to an object
if (m_type == Type::Null) {
m_type = Type::Object;
m_value.asObject = new Object;
}
assert(m_type == Type::Array);
m_value.asObject->emplace(key, value);
}
// ------------------------------------------ // ------------------------------------------
Value& Value::operator[](size_t index) Value& Value::operator[](size_t index)
{ {
// Implicitly convert null to an array
if (m_type == Type::Null) {
m_type = Type::Array;
m_value.asArray = new Array;
}
assert(m_type == Type::Array); assert(m_type == Type::Array);
return m_value.asArray->at(index); return m_value.asArray->at(index);
} }
Value& Value::operator[](const std::string& key) Value& Value::operator[](const std::string& key)
{ {
// Implicit conversion to an object // Implicitly convert null to an object
if (m_type == Type::Null) { if (m_type == Type::Null) {
m_type = Type::Object; m_type = Type::Object;
m_value.asObject = new Object; m_value.asObject = new Object;
+3
View File
@@ -51,6 +51,9 @@ public:
static Value parse(const std::string& input); static Value parse(const std::string& input);
std::string dump(const uint32_t indent = 0, const char indentCharacter = ' ') const; std::string dump(const uint32_t indent = 0, const char indentCharacter = ' ') const;
void emplace_back(Value value);
void emplace(const std::string& key, Value value);
// ------------------------------------------ // ------------------------------------------
// Array index operator // Array index operator