summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2021-11-09 16:11:31 -0800
committerThiago Macieira <thiago.macieira@intel.com>2022-02-15 17:00:03 -0800
commit51fc3170417d02d1a27ce68ec561c31a131f2d75 (patch)
tree0102f54ead5fee7da08598690bfdfce940d2ed1a /src/corelib/serialization
parent64d568b550bb55e7886645727457edf3910ceded (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.h47
-rw-r--r--src/corelib/serialization/qcborvalue.h2
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); }