diff options
-rw-r--r-- | src/corelib/kernel/qvariant.cpp | 8 | ||||
-rw-r--r-- | src/corelib/kernel/qvariant.h | 20 | ||||
-rw-r--r-- | tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp | 21 |
3 files changed, 33 insertions, 16 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index c3ccc74a20..ec90c4ceef 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -3508,6 +3508,10 @@ QDebug operator<<(QDebug dbg, const QVariant::Type p) Creates a copy of \a other. */ +/*! \fn QSequentialIterable::const_iterator::const_iterator& QSequentialIterable::const_iterator::operator=(const const_iterator &other) + Assigns \a other to this. +*/ + /*! \fn QVariant QSequentialIterable::const_iterator::operator*() const Returns the current item, converted to a QVariant. @@ -3684,6 +3688,10 @@ QDebug operator<<(QDebug dbg, const QVariant::Type p) Creates a copy of \a other. */ +/*! \fn QAssociativeIterable::const_iterator::const_iterator& QAssociativeIterable::const_iterator::operator=(const const_iterator &other) + Assigns \a other to this. +*/ + /*! \fn QVariant QAssociativeIterable::const_iterator::operator*() const Returns the current value, converted to a QVariant. diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 1f35850043..b6d5c1aebd 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -602,6 +602,16 @@ public: ref->ref(); } + inline const_iterator& operator=(const const_iterator &other) + { + if (!m_impl.equal(other.m_impl)) { + m_impl = other.m_impl; + ref = other.ref; + } + ref->ref(); + return *this; + } + inline const QVariant operator*() const { const QtMetaTypePrivate::VariantData d = m_impl.getCurrent(); if (d.metaTypeId == qMetaTypeId<QVariant>()) @@ -671,6 +681,16 @@ public: ref->ref(); } + inline const_iterator& operator=(const const_iterator &other) + { + if (!m_impl.equal(other.m_impl)) { + m_impl = other.m_impl; + ref = other.ref; + } + ref->ref(); + return *this; + } + inline const QVariant key() const { const QtMetaTypePrivate::VariantData d = m_impl.getCurrentKey(); QVariant v(d.metaTypeId, d.data, d.flags); diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index a375ac1797..6366c47601 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -3830,13 +3830,8 @@ void tst_QVariant::iterateContainerElements() for ( ; it != end; ++it, ++i) { QCOMPARE(ints.at(i), *it); } - } - { - QVariantList ints; - ints << 1 << 2 << 3; - QVariant var = QVariant::fromValue(ints); - QSequentialIterable iter = var.value<QSequentialIterable>(); - QSequentialIterable::const_iterator it = iter.begin(); + + it = iter.begin(); QVariantList intsCopy; intsCopy << *(it++); @@ -3894,17 +3889,11 @@ void tst_QVariant::iterateContainerElements() for ( ; it != end; ++it, ++i) { QCOMPARE(*(mapping.begin() + i), (*it).toString()); } - } - { + QVariantList nums; nums << "one" << "two" << "three"; - QMap<int, QString> mapping; - mapping.insert(1, "one"); - mapping.insert(2, "two"); - mapping.insert(3, "three"); - QVariant var = QVariant::fromValue(mapping); - QAssociativeIterable iter = var.value<QAssociativeIterable>(); - QAssociativeIterable::const_iterator it = iter.begin(); + + it = iter.begin(); QVariantList numsCopy; numsCopy << *(it++); |