diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2012-05-17 11:02:59 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-18 10:36:42 +0200 |
commit | 276a86592a529eb0a1659764acaa4cf9f5e112a0 (patch) | |
tree | bf078acf86a4249b23b7cf048f6c5add3bbe2741 /src/corelib/kernel/qobject_p.h | |
parent | 6d7b003ac8381cf2af6ebcd255786d8e3afd21b8 (diff) |
Encapsulate the dynamic meta object pointer
This change allows us to delay creating the actual meta object
until it is actually required.
Change-Id: I1c4a4226bd82fa606b206dd60322f49b49c32463
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'src/corelib/kernel/qobject_p.h')
-rw-r--r-- | src/corelib/kernel/qobject_p.h | 17 |
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 |