summaryrefslogtreecommitdiffstats
path: root/src/corelib/json/qjsonarray.h
diff options
context:
space:
mode:
authorJędrzej Nowacki <jedrzej.nowacki@digia.com>2014-05-21 12:28:27 +0200
committerJędrzej Nowacki <jedrzej.nowacki@digia.com>2014-07-04 08:24:05 +0200
commit9c79f6dfb3b5724b52421f74fbee6f5c0005d0e3 (patch)
treeee4e2722c3bc40d99a95753a2cc6140b061ffaf5 /src/corelib/json/qjsonarray.h
parent391b2accd87f02c9c0b1a4e766e50377d5918887 (diff)
Add initializer list support in QJsonArray
It allows to create a QJsonArray instance in C++ by using a similar expression to JSON. For example: QJsonArray a = {1, 2, 4}; [ChangeLog][QtCore][QtJson] QJsonArray now supports C++11 initializer lists. Task-number: QTBUG-26606 Change-Id: Icc352e518d9649d24176c89e7113d200d5c50b0d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/json/qjsonarray.h')
-rw-r--r--src/corelib/json/qjsonarray.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/corelib/json/qjsonarray.h b/src/corelib/json/qjsonarray.h
index 84c162f0a0..4cada7cec1 100644
--- a/src/corelib/json/qjsonarray.h
+++ b/src/corelib/json/qjsonarray.h
@@ -44,6 +44,9 @@
#include <QtCore/qjsonvalue.h>
#include <QtCore/qiterator.h>
+#if defined(Q_COMPILER_INITIALIZER_LISTS)
+#include <initializer_list>
+#endif
QT_BEGIN_NAMESPACE
@@ -56,6 +59,16 @@ class Q_CORE_EXPORT QJsonArray
{
public:
QJsonArray();
+
+#if defined(Q_COMPILER_INITIALIZER_LISTS) || defined(Q_QDOC)
+ QJsonArray(std::initializer_list<QJsonValue> args)
+ {
+ initialize();
+ for (std::initializer_list<QJsonValue>::const_iterator i = args.begin(); i != args.end(); ++i)
+ append(*i);
+ }
+#endif
+
~QJsonArray();
QJsonArray(const QJsonArray &other);
@@ -212,6 +225,7 @@ private:
friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonArray &);
QJsonArray(QJsonPrivate::Data *data, QJsonPrivate::Array *array);
+ void initialize();
void compact();
void detach(uint reserve = 0);