summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qmetaobject.cpp
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-03-07 13:41:14 +0000
committerSean Harmer <sean.harmer@kdab.com>2016-03-15 16:36:22 +0000
commitaa21ac1043d58b9749077a237aab51e14f06d16e (patch)
treedbb57115e6edb595cf41458b6c70ad066008a48d /src/corelib/kernel/qmetaobject.cpp
parent8eb721468e9462605368d0469d404c0ee6fab854 (diff)
Add a function to QMetaObject to check for inheritance
This is analogous to QObject::inherits() but only requires the metaobjects rather than pointers to a QObject instances. This is needed for type checking on the backend of Qt 3D where we do not have access to QObject pointers. Change-Id: I14d26c4cbb5cc3fbecb57725f2c14ee0ffda4a11 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Milian Wolff <milian.wolff@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Diffstat (limited to 'src/corelib/kernel/qmetaobject.cpp')
-rw-r--r--src/corelib/kernel/qmetaobject.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index 1c426225a5..8024c97373 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -325,6 +325,24 @@ const char *QMetaObject::className() const
\sa className()
*/
+/*
+ Returns \c true if the class described by this QMetaObject inherits
+ the type described by \a metaObject; otherwise returns false.
+
+ A type is considered to inherit itself.
+
+ \since 5.7
+*/
+bool QMetaObject::inherits(const QMetaObject *metaObject) const Q_DECL_NOEXCEPT
+{
+ const QMetaObject *m = this;
+ do {
+ if (metaObject == m)
+ return true;
+ } while ((m = m->d.superdata));
+ return false;
+}
+
/*!
\internal