JsonObject: Add move constructors for JsonObject(Json{Array,Object}&&)

This also helps avoid JsonValue copying during parse.
This commit is contained in:
Andreas Kling 2019-08-04 11:46:31 +02:00
parent 82826104e0
commit 93596dc00d
2 changed files with 19 additions and 0 deletions

View file

@ -127,6 +127,18 @@ JsonValue::JsonValue(const JsonArray& value)
m_value.as_array = new JsonArray(value);
}
JsonValue::JsonValue(JsonObject&& value)
: m_type(Type::Object)
{
m_value.as_object = new JsonObject(move(value));
}
JsonValue::JsonValue(JsonArray&& value)
: m_type(Type::Array)
{
m_value.as_array = new JsonArray(move(value));
}
void JsonValue::clear()
{
switch (m_type) {

View file

@ -50,6 +50,13 @@ public:
JsonValue(const JsonArray&);
JsonValue(const JsonObject&);
JsonValue(JsonArray&&);
JsonValue(JsonObject&&);
// FIXME: Implement these
JsonValue& operator=(JsonArray&&) = delete;
JsonValue& operator=(JsonObject&&) = delete;
String serialized() const;
void serialize(StringBuilder&) const;