From 579ea489a40ae0240f22c3d31bde1fc2cd8aaf15 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Thu, 24 May 2012 14:35:45 +0200 Subject: Record if a metatype is a smart pointer to a QObject derived. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows QVariant/QMetaType software (such as QtDeclarative) to deal with smart pointers in a similar way to how they can deal with naked pointers (accessing properties etc). This also adds a requirement that T be fully defined when QSharedPointer is inserted into a QVariant. Change-Id: I29e12b8a6aa5f4aadbd62f92b89bc238f64b5725 Reviewed-by: Jędrzej Nowacki --- src/corelib/tools/qsharedpointer.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/corelib/tools/qsharedpointer.cpp') diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp index 73a1e6c607..673b90c99a 100644 --- a/src/corelib/tools/qsharedpointer.cpp +++ b/src/corelib/tools/qsharedpointer.cpp @@ -1221,6 +1221,7 @@ QtSharedPointer::ExternalRefCountData *QtSharedPointer::ExternalRefCountData::ge */ QSharedPointer QtSharedPointer::sharedPointerFromVariant_internal(const QVariant &variant) { + Q_ASSERT(QMetaType::typeFlags(variant.userType()) & QMetaType::SharedPointerToQObject); return *reinterpret_cast*>(variant.constData()); } @@ -1231,6 +1232,7 @@ QSharedPointer QtSharedPointer::sharedPointerFromVariant_internal(const */ QWeakPointer QtSharedPointer::weakPointerFromVariant_internal(const QVariant &variant) { + Q_ASSERT(QMetaType::typeFlags(variant.userType()) & QMetaType::WeakPointerToQObject || QMetaType::typeFlags(variant.userType()) & QMetaType::TrackingPointerToQObject); return *reinterpret_cast*>(variant.constData()); } -- cgit v1.2.3