From 288244c528ca169d1a3b015e27fc9561d7094563 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 11 Sep 2010 09:58:43 +0200 Subject: Revert "Properly implement qobject_cast for const pointers." This commit added new symbols to the 4.7 branch after 4.7.0 was frozen. This reverts commit 0b0aa7603b27447a5abe55c55d0514bc56b35f9e. --- src/corelib/kernel/qmetaobject.cpp | 20 +------------------- src/corelib/kernel/qobject.h | 6 +++++- src/corelib/kernel/qobjectdefs.h | 1 - 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index 3b9b04a..9854e68 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -266,25 +266,7 @@ QObject *QMetaObject::cast(QObject *obj) const const QMetaObject *m = obj->metaObject(); do { if (m == this) - return obj; - } while ((m = m->d.superdata)); - } - return 0; -} - -/*! - \internal - - Returns \a obj if object \a obj inherits from this - meta-object; otherwise returns 0. -*/ -const QObject *QMetaObject::cast(const QObject *obj) const -{ - if (obj) { - const QMetaObject *m = obj->metaObject(); - do { - if (m == this) - return obj; + return const_cast(obj); } while ((m = m->d.superdata)); } return 0; diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h index b5c772e..d98d1f0 100644 --- a/src/corelib/kernel/qobject.h +++ b/src/corelib/kernel/qobject.h @@ -369,10 +369,14 @@ inline T qobject_cast(QObject *object) template inline T qobject_cast(const QObject *object) { + // this will cause a compilation error if T is not const + register T ptr = static_cast(object); + Q_UNUSED(ptr); + #if !defined(QT_NO_MEMBER_TEMPLATES) && !defined(QT_NO_QOBJECT_CHECK) reinterpret_cast(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast(const_cast(object))); #endif - return static_cast(reinterpret_cast(0)->staticMetaObject.cast(object)); + return static_cast(const_cast(reinterpret_cast(0)->staticMetaObject.cast(const_cast(object)))); } diff --git a/src/corelib/kernel/qobjectdefs.h b/src/corelib/kernel/qobjectdefs.h index 0d045dc..555a1f5 100644 --- a/src/corelib/kernel/qobjectdefs.h +++ b/src/corelib/kernel/qobjectdefs.h @@ -298,7 +298,6 @@ struct Q_CORE_EXPORT QMetaObject const QMetaObject *superClass() const; QObject *cast(QObject *obj) const; - const QObject *cast(const QObject *obj) const; #ifndef QT_NO_TRANSLATION // ### Qt 4: Merge overloads -- cgit v0.12