summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qobject_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/kernel/qobject_p.h')
-rw-r--r--src/corelib/kernel/qobject_p.h17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h
index f650a301a7..8dd42d40b6 100644
--- a/src/corelib/kernel/qobject_p.h
+++ b/src/corelib/kernel/qobject_p.h
@@ -286,12 +286,23 @@ private:
void Q_CORE_EXPORT qDeleteInEventHandler(QObject *o);
+struct QAbstractDynamicMetaObject;
+struct Q_CORE_EXPORT QDynamicMetaObjectData
+{
+ virtual ~QDynamicMetaObjectData() {}
+ virtual void objectDestroyed(QObject *) { delete this; }
+
+ virtual QAbstractDynamicMetaObject *toDynamicMetaObject(QObject *) = 0;
+ virtual int metaCall(QObject *, QMetaObject::Call, int _id, void **) = 0;
+};
-struct Q_CORE_EXPORT QAbstractDynamicMetaObject : public QMetaObject
+struct Q_CORE_EXPORT QAbstractDynamicMetaObject : public QDynamicMetaObjectData, public QMetaObject
{
- virtual ~QAbstractDynamicMetaObject() {}
- virtual int metaCall(QMetaObject::Call, int _id, void **) { return _id; }
+ virtual QAbstractDynamicMetaObject *toDynamicMetaObject(QObject *) { return this; }
virtual int createProperty(const char *, const char *) { return -1; }
+ virtual int metaCall(QObject *, QMetaObject::Call c, int _id, void **a)
+ { return metaCall(c, _id, a); }
+ virtual int metaCall(QMetaObject::Call, int _id, void **) { return _id; } // Compat overload
};
QT_END_NAMESPACE