summaryrefslogtreecommitdiffstats
path: root/src/corelib/json/qjsonvalue.h
diff options
context:
space:
mode:
authorJędrzej Nowacki <jedrzej.nowacki@digia.com>2014-06-26 13:02:54 +0200
committerJędrzej Nowacki <jedrzej.nowacki@digia.com>2014-07-25 15:25:17 +0200
commit20cf632ad5f3ffe7b0fd231724c971f4e07304eb (patch)
tree6c393d91728928e5aaa33c64fea6a1797dcde7b9 /src/corelib/json/qjsonvalue.h
parentc8edde3b833cb3d15377afed13d6fcd2e5fa5cd9 (diff)
Reading QJsonObject property should not modify the object itself.
Before this change such code: QJsonObject o; o["blah"]; would create property "blah" and assign null value to it, while this code: const QJsonObject o; o["blah"]; would not. The change unifies the confusing behavior. Now reading a non-existing property, is not causing a property to be added in any visible way. Internally QJsonObject stores a special hash of undefined, but referenced values. Such reference is supposed to not live long, only to the first compacting or assignment. Change-Id: Ib022acf74ff49bad88d45d65d7093c4281d468f1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/corelib/json/qjsonvalue.h')
-rw-r--r--src/corelib/json/qjsonvalue.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/corelib/json/qjsonvalue.h b/src/corelib/json/qjsonvalue.h
index 97e20b574d..a00bc0b72f 100644
--- a/src/corelib/json/qjsonvalue.h
+++ b/src/corelib/json/qjsonvalue.h
@@ -149,6 +149,7 @@ public:
: a(array), is_object(false), index(idx) {}
QJsonValueRef(QJsonObject *object, int idx)
: o(object), is_object(true), index(idx) {}
+ inline QJsonValueRef(QJsonObject *object, const QString &key);
inline operator QJsonValue() const { return toValue(); }
QJsonValueRef &operator = (const QJsonValue &val);
@@ -188,6 +189,7 @@ private:
};
uint is_object : 1;
uint index : 31;
+ struct UnionHelper;
};
#if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_JSON_READONLY)