diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2021-11-09 16:11:31 -0800 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2022-02-15 17:00:03 -0800 |
commit | 51fc3170417d02d1a27ce68ec561c31a131f2d75 (patch) | |
tree | 0102f54ead5fee7da08598690bfdfce940d2ed1a /src/corelib/serialization | |
parent | 64d568b550bb55e7886645727457edf3910ceded (diff) |
QCborMap: use QCborValueConstRef
Change-Id: I5e52dc5b093c43a3b678fffd16b606e4249a205b
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Diffstat (limited to 'src/corelib/serialization')
-rw-r--r-- | src/corelib/serialization/qcbormap.h | 47 | ||||
-rw-r--r-- | src/corelib/serialization/qcborvalue.h | 2 |
2 files changed, 31 insertions, 18 deletions
diff --git a/src/corelib/serialization/qcbormap.h b/src/corelib/serialization/qcbormap.h index fce05d2729..90ad0ae412 100644 --- a/src/corelib/serialization/qcbormap.h +++ b/src/corelib/serialization/qcbormap.h @@ -63,16 +63,16 @@ public: class ConstIterator; class Iterator { - mutable QCborValueRef item; // points to the value + QCborValueRef item {}; // points to the value friend class ConstIterator; friend class QCborMap; Iterator(QCborContainerPrivate *dd, qsizetype ii) : item(dd, ii) {} public: typedef std::random_access_iterator_tag iterator_category; typedef qsizetype difference_type; - typedef QPair<const QCborValueRef, QCborValueRef> value_type; - typedef QPair<const QCborValueRef, QCborValueRef> reference; - typedef QPair<const QCborValueRef, QCborValueRef> pointer; + typedef QPair<QCborValueConstRef, QCborValueRef> value_type; + typedef QPair<QCborValueConstRef, QCborValueRef> reference; + typedef QPair<QCborValueConstRef, QCborValueRef> pointer; constexpr Iterator() = default; constexpr Iterator(const Iterator &) = default; @@ -84,10 +84,16 @@ public: return *this; } - value_type operator*() const { return { {item.d, item.i - 1}, item }; } + value_type operator*() const { return { QCborValueRef{item.d, item.i - 1}, item }; } value_type operator[](qsizetype j) const { return *(*this + j); } - QCborValueRef *operator->() const { return &item; } - QCborValue key() const { return QCborValueRef(item.d, item.i - 1); } + QCborValueRef *operator->() { return &item; } + const QCborValueConstRef *operator->() const { return &item; } +#if QT_VERSION >= QT_VERSION_CHECK(7,0,0) + QCborValueConstRef +#else + QCborValue +#endif + key() const { return QCborValueRef(item.d, item.i - 1); } QCborValueRef value() const { return item; } bool operator==(const Iterator &o) const { return item.d == o.item.d && item.i == o.item.i; } @@ -114,18 +120,19 @@ public: }; class ConstIterator { - QCborValueRef item; // points to the value + QCborValueConstRef item; // points to the value friend class Iterator; friend class QCborMap; friend class QCborValue; friend class QCborValueRef; + constexpr ConstIterator(QCborValueConstRef it) : item{it} {} ConstIterator(QCborContainerPrivate *dd, qsizetype ii) : item(dd, ii) {} public: typedef std::random_access_iterator_tag iterator_category; typedef qsizetype difference_type; - typedef QPair<const QCborValueRef, const QCborValueRef> value_type; - typedef QPair<const QCborValueRef, const QCborValueRef> reference; - typedef QPair<const QCborValueRef, const QCborValueRef> pointer; + typedef QPair<QCborValueConstRef, QCborValueConstRef> value_type; + typedef QPair<QCborValueConstRef, QCborValueConstRef> reference; + typedef QPair<QCborValueConstRef, QCborValueConstRef> pointer; constexpr ConstIterator() = default; constexpr ConstIterator(const ConstIterator &) = default; @@ -137,11 +144,16 @@ public: return *this; } - value_type operator*() const { return { {item.d, item.i - 1}, item }; } + value_type operator*() const { return { QCborValueRef(item.d, item.i - 1), item }; } value_type operator[](qsizetype j) const { return *(*this + j); } - const QCborValueRef *operator->() const { return &item; } - QCborValue key() const { return QCborValueRef(item.d, item.i - 1); } - QCborValueRef value() const { return item; } + const QCborValueConstRef *operator->() const { return &item; } +#if QT_VERSION >= QT_VERSION_CHECK(7,0,0) + QCborValueConstRef +#else + QCborValue +#endif + key() const { return QCborValueRef(item.d, item.i - 1); } + QCborValueConstRef value() const { return item; } bool operator==(const Iterator &o) const { return item.d == o.item.d && item.i == o.item.i; } bool operator!=(const Iterator &o) const { return !(*this == o); } @@ -161,8 +173,8 @@ public: ConstIterator operator--(int) { ConstIterator n = *this; item.i -= 2; return n; } ConstIterator &operator+=(qsizetype j) { item.i += 2 * j; return *this; } ConstIterator &operator-=(qsizetype j) { item.i -= 2 * j; return *this; } - ConstIterator operator+(qsizetype j) const { return ConstIterator({ item.d, item.i + 2 * j }); } - ConstIterator operator-(qsizetype j) const { return ConstIterator({ item.d, item.i - 2 * j }); } + ConstIterator operator+(qsizetype j) const { return ConstIterator{ item.d, item.i + 2 * j }; } + ConstIterator operator-(qsizetype j) const { return ConstIterator{ item.d, item.i - 2 * j }; } qsizetype operator-(ConstIterator j) const { return (item.i - j.item.i) / 2; } }; @@ -326,6 +338,7 @@ public: QJsonObject toJsonObject() const; private: + friend class QCborContainerPrivate; friend class QCborValue; friend class QCborValueRef; friend class QJsonPrivate::Variant; diff --git a/src/corelib/serialization/qcborvalue.h b/src/corelib/serialization/qcborvalue.h index d7b5ec68aa..710165057c 100644 --- a/src/corelib/serialization/qcborvalue.h +++ b/src/corelib/serialization/qcborvalue.h @@ -437,9 +437,9 @@ public: protected: friend class QCborValue; + friend class QCborValueRef; friend class QCborArray; friend class QCborMap; - friend class QCborContainerPrivate; QCborValue concrete() const noexcept { return concrete(*this); } |