diff options
Diffstat (limited to 'src/corelib/json/qjsonobject.h')
-rw-r--r-- | src/corelib/json/qjsonobject.h | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/corelib/json/qjsonobject.h b/src/corelib/json/qjsonobject.h index ad3184b1f2..7973b8ab92 100644 --- a/src/corelib/json/qjsonobject.h +++ b/src/corelib/json/qjsonobject.h @@ -44,6 +44,10 @@ #include <QtCore/qjsonvalue.h> #include <QtCore/qiterator.h> +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include <QtCore/qpair.h> +#include <initializer_list> +#endif QT_BEGIN_NAMESPACE @@ -55,6 +59,16 @@ class Q_CORE_EXPORT QJsonObject { public: QJsonObject(); + +#if defined(Q_COMPILER_INITIALIZER_LISTS) || defined(Q_QDOC) + QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args) + { + initialize(); + for (std::initializer_list<QPair<QString, QJsonValue> >::const_iterator i = args.begin(); i != args.end(); ++i) + insert(i->first, i->second); + } +#endif + ~QJsonObject(); QJsonObject(const QJsonObject &other); @@ -93,7 +107,6 @@ public: typedef std::bidirectional_iterator_tag iterator_category; typedef int difference_type; typedef QJsonValue value_type; -// typedef T *pointer; typedef QJsonValueRef reference; Q_DECL_CONSTEXPR inline iterator() : o(0), i(0) {} @@ -102,7 +115,11 @@ public: inline QString key() const { return o->keyAt(i); } inline QJsonValueRef value() const { return QJsonValueRef(o, i); } inline QJsonValueRef operator*() const { return QJsonValueRef(o, i); } - //inline T *operator->() const { return &concrete(i)->value; } +#ifdef Q_QDOC + inline QJsonValueRef* operator->() const; +#else + inline QJsonValueRefPtr operator->() const { return QJsonValueRefPtr(o, i); } +#endif inline bool operator==(const iterator &other) const { return i == other.i; } inline bool operator!=(const iterator &other) const { return i != other.i; } @@ -143,7 +160,11 @@ public: inline QString key() const { return o->keyAt(i); } inline QJsonValue value() const { return o->valueAt(i); } inline QJsonValue operator*() const { return o->valueAt(i); } - //inline const T *operator->() const { return &concrete(i)->value; } +#ifdef Q_QDOC + inline QJsonValue* operator->() const; +#else + inline QJsonValuePtr operator->() const { return QJsonValuePtr(o->valueAt(i)); } +#endif inline bool operator==(const const_iterator &other) const { return i == other.i; } inline bool operator!=(const const_iterator &other) const { return i != other.i; } @@ -195,6 +216,7 @@ private: friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonObject &); QJsonObject(QJsonPrivate::Data *data, QJsonPrivate::Object *object); + void initialize(); void detach(uint reserve = 0); void compact(); |