diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2012-01-13 20:09:19 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-25 20:19:29 +0200 |
commit | 67f58040ea10255af2c09149f16ce683f00dc7a2 (patch) | |
tree | e6bc102b638da2821d9211d9134a46e57f6fa7d8 /src/corelib/kernel/qmetaobject.cpp | |
parent | 7b118c6456ba85a9f1c2fc0406d52829f1c8cdae (diff) |
Remove QMetaObjectExtraData and put everything into QMetaObject
QMetaObjectExtraData was added when support for QMetaObject::newInstance
was added. One needed a place to put the pointer to static_metacall in
the QMetaObject.
But as we break binary compatibility, one can change the size of
QMetaObject, and put everything back inside QMetaObject's own structure.
Meaning it is not required anymore to have one QMetaObjectExtraData
instance per QMetaObject anymore.
Change-Id: If0b8f586cbaf633eed10045adee3ba3366826c86
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Diffstat (limited to 'src/corelib/kernel/qmetaobject.cpp')
-rw-r--r-- | src/corelib/kernel/qmetaobject.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index 359dbfcf23..4414393d37 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -288,11 +288,10 @@ QObject *QMetaObject::newInstance(QGenericArgument val0, */ int QMetaObject::static_metacall(Call cl, int idx, void **argv) const { - const QMetaObjectExtraData *extra = reinterpret_cast<const QMetaObjectExtraData *>(d.extradata); Q_ASSERT(priv(d.data)->revision >= 6); - if (!extra || !extra->static_metacall) + if (!d.static_metacall) return 0; - extra->static_metacall(0, cl, idx, argv); + d.static_metacall(0, cl, idx, argv); return -1; } @@ -863,11 +862,9 @@ static const QMetaObject *QMetaObject_findMetaObject(const QMetaObject *self, co while (self) { if (strcmp(rawStringData(self, 0), name) == 0) return self; - if (self->d.extradata) { - const QMetaObject **e; + if (self->d.relatedMetaObjects) { Q_ASSERT(priv(self->d.data)->revision >= 2); - const QMetaObjectExtraData *extra = (const QMetaObjectExtraData*)(self->d.extradata); - e = extra->objects; + const QMetaObject **e = self->d.relatedMetaObjects; if (e) { while (*e) { if (const QMetaObject *m =QMetaObject_findMetaObject((*e), name)) @@ -2024,8 +2021,7 @@ bool QMetaMethod::invoke(QObject *object, int idx_relative = ((handle - priv(mobj->d.data)->methodData) / 5); int idx_offset = mobj->methodOffset(); Q_ASSERT(QMetaObjectPrivate::get(mobj)->revision >= 6); - QObjectPrivate::StaticMetaCallFunction callFunction = mobj->d.extradata - ? reinterpret_cast<const QMetaObjectExtraData *>(mobj->d.extradata)->static_metacall : 0; + QObjectPrivate::StaticMetaCallFunction callFunction = mobj->d.static_metacall; if (connectionType == Qt::DirectConnection) { if (callFunction) { |