summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-07-08 16:14:21 +0200
committerLars Knoll <lars.knoll@qt.io>2020-08-24 00:17:04 +0200
commitbd64f9397ac6c7aa4368d92138929e858e3df107 (patch)
tree4b26719874cdc84f89dc83dec045ebf13f64301d /tests
parent49f2253be31266a26d1720888cd8d2577baf5df9 (diff)
Refactor Q*Iterable
Refactor the methods retrieving data in Q*Iterable so that we don't return pointers with unclear ownership. Instead, copy the data into a out pointer provided by the caller. This also means there is no need for the metatype flags anymore and we can remove those. Change-Id: I517de23a8ccfd608585ca00403aca0df2955f14b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
index b1cf955e93..e18b6e024a 100644
--- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
+++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
@@ -4512,7 +4512,6 @@ void tst_QVariant::shouldDeleteVariantDataWorksForSequential()
iterator._iteratorCapabilities = QtMetaTypePrivate::RandomAccessCapability |
QtMetaTypePrivate::BiDirectionalCapability |
QtMetaTypePrivate::ForwardCapability;
- iterator._metaType_flags = QVariantConstructionFlags::ShouldDeleteVariantData;
iterator._size = [](const void *) {return 1;};
iterator._metaType = QMetaType::fromType<MyType>();
@@ -4522,13 +4521,13 @@ void tst_QVariant::shouldDeleteVariantDataWorksForSequential()
iterator._destroyIter = [](void **){};
iterator._equalIter = [](void * const *, void * const *){return true; /*all iterators are nullptr*/};
iterator._destroyIter = [](void **){};
- iterator._at = [](const void *, int ) -> void const * {
+ iterator._at = [](const void *, int, void *dataPtr) -> void {
MyType mytype {1, "eins"};
- return QMetaType::create(qMetaTypeId<MyType>(), &mytype);
+ *static_cast<MyType *>(dataPtr) = mytype;
};
- iterator._get = [](void * const *, const QMetaType &, uint) -> QtMetaTypePrivate::VariantData {
+ iterator._get = [](void * const *, void *dataPtr) -> void {
MyType mytype {2, "zwei"};
- return {QMetaType::fromType<MyType>(), QMetaType::create(qMetaTypeId<MyType>(), &mytype), QVariantConstructionFlags::ShouldDeleteVariantData};
+ *static_cast<MyType *>(dataPtr) = mytype;
};
QSequentialIterable iterable {iterator};
QVariant value1 = iterable.at(0);
@@ -4546,8 +4545,6 @@ void tst_QVariant::shouldDeleteVariantDataWorksForAssociative()
QCOMPARE(instanceCount, 0);
{
QtMetaTypePrivate::QAssociativeIterableImpl iterator {};
- iterator._metaType_flags_key = QVariantConstructionFlags::ShouldDeleteVariantData;
- iterator._metaType_flags_value = QVariantConstructionFlags::ShouldDeleteVariantData;
iterator._size = [](const void *) {return 1;};
iterator._metaType_value = QMetaType::fromType<MyType>();
@@ -4561,21 +4558,21 @@ void tst_QVariant::shouldDeleteVariantDataWorksForAssociative()
iterator._find = [](const void *, const void *, void **iterator ) -> void {
(*iterator) = reinterpret_cast<void *>(quintptr(42));
};
- iterator._getKey = [](void * const *iterator, const QMetaType &, uint) -> QtMetaTypePrivate::VariantData {
+ iterator._getKey = [](void * const *iterator, void *dataPtr) -> void {
MyType mytype {1, "key"};
if (reinterpret_cast<quintptr>(*iterator) == 42) {
mytype.number = 42;
mytype.text = "find_key";
}
- return {QMetaType::fromType<MyType>(), QMetaType::create(qMetaTypeId<MyType>(), &mytype), QVariantConstructionFlags::ShouldDeleteVariantData};
+ *static_cast<MyType *>(dataPtr) = mytype;
};
- iterator._getValue = [](void * const *iterator, const QMetaType &, uint) -> QtMetaTypePrivate::VariantData {
+ iterator._getValue = [](void * const *iterator, void *dataPtr) -> void {
MyType mytype {2, "value"};
if (reinterpret_cast<quintptr>(*iterator) == 42) {
mytype.number = 42;
mytype.text = "find_value";
}
- return {QMetaType::fromType<MyType>(), QMetaType::create(qMetaTypeId<MyType>(), &mytype), QVariantConstructionFlags::ShouldDeleteVariantData};
+ *static_cast<MyType *>(dataPtr) = mytype;
};
QAssociativeIterable iterable {iterator};
auto it = iterable.begin();