From 8529d537ac63e2562bf3af413d2820397f3b8d02 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Mon, 19 Jun 2023 14:01:06 +0200 Subject: [PATCH] QMetaContainer: Allow retrieving the d pointer This is in line with how QMetaType handles QMetaTypeInterface*. You can retrieve a const pointer to it. Task-number: QTBUG-113690 Change-Id: Iaf3c10603dc6049a5553987c90006807867abc0d Reviewed-by: Fabian Kosmale (cherry picked from commit 937751f427fd0cfd8d5f9a8722309e4870eb5e7d) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/kernel/qmetacontainer.h | 4 ++++ .../corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/src/corelib/kernel/qmetacontainer.h b/src/corelib/kernel/qmetacontainer.h index 68d62bd2ea4..bdbf2ae369d 100644 --- a/src/corelib/kernel/qmetacontainer.h +++ b/src/corelib/kernel/qmetacontainer.h @@ -982,6 +982,8 @@ public: return a.d() != b.d(); } + const QtMetaContainerPrivate::QMetaSequenceInterface *iface() const { return d(); } + private: template struct MetaSequence @@ -1176,6 +1178,8 @@ public: return a.d() != b.d(); } + const QtMetaContainerPrivate::QMetaAssociationInterface *iface() const { return d(); } + private: template struct MetaAssociation diff --git a/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp b/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp index 606e94787a2..2eeb7ede8a7 100644 --- a/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp +++ b/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp @@ -497,6 +497,10 @@ void tst_QMetaContainer::testSequence() QVERIFY(metaSequence.compareConstIterator(constIt, constEnd)); metaSequence.destroyConstIterator(constIt); metaSequence.destroyConstIterator(constEnd); + + QVERIFY(metaSequence.iface() != nullptr); + QMetaSequence defaultConstructed; + QVERIFY(defaultConstructed.iface() == nullptr); } void tst_QMetaContainer::testAssociation_data() @@ -722,6 +726,10 @@ void tst_QMetaContainer::testAssociation() QVERIFY(metaAssociation.compareConstIterator(constIt, constEnd)); metaAssociation.destroyConstIterator(constIt); metaAssociation.destroyConstIterator(constEnd); + + QVERIFY(metaAssociation.iface() != nullptr); + QMetaSequence defaultConstructed; + QVERIFY(defaultConstructed.iface() == nullptr); } QTEST_MAIN(tst_QMetaContainer)