diff options
Diffstat (limited to 'src/corelib/kernel/qmetaobjectbuilder.cpp')
-rw-r--r-- | src/corelib/kernel/qmetaobjectbuilder.cpp | 44 |
1 files changed, 14 insertions, 30 deletions
diff --git a/src/corelib/kernel/qmetaobjectbuilder.cpp b/src/corelib/kernel/qmetaobjectbuilder.cpp index 1dda9f2f05..7736181463 100644 --- a/src/corelib/kernel/qmetaobjectbuilder.cpp +++ b/src/corelib/kernel/qmetaobjectbuilder.cpp @@ -737,13 +737,8 @@ void QMetaObjectBuilder::addMetaObject } if ((members & RelatedMetaObjects) != 0) { - const QMetaObject **objects; Q_ASSERT(priv(prototype->d.data)->revision >= 2); - const QMetaObjectExtraData *extra = (const QMetaObjectExtraData *)(prototype->d.extradata); - if (extra) - objects = extra->objects; - else - objects = 0; + const QMetaObject **objects = prototype->d.relatedMetaObjects; if (objects) { while (*objects != 0) { addRelatedMetaObject(*objects); @@ -754,10 +749,8 @@ void QMetaObjectBuilder::addMetaObject if ((members & StaticMetacall) != 0) { Q_ASSERT(priv(prototype->d.data)->revision >= 6); - const QMetaObjectExtraData *extra = - (const QMetaObjectExtraData *)(prototype->d.extradata); - if (extra && extra->static_metacall) - setStaticMetacallFunction(extra->static_metacall); + if (prototype->d.static_metacall) + setStaticMetacallFunction(prototype->d.static_metacall); } } @@ -1150,7 +1143,7 @@ static int aggregateParameterCount(const QList<QMetaMethodBuilderPrivate> &metho // Build a QMetaObject in "buf" based on the information in "d". // If "buf" is null, then return the number of bytes needed to // build the QMetaObject. Returns -1 if the metaobject if -// relocatable is set, but the metaobject contains extradata. +// relocatable is set, but the metaobject contains relatedMetaObjects. static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf, int expectedSize, bool relocatable) { @@ -1174,7 +1167,9 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf, ALIGN(size, int); if (buf) { if (!relocatable) meta->d.superdata = d->superClass; + meta->d.relatedMetaObjects = 0; meta->d.extradata = 0; + meta->d.static_metacall = d->staticMetacallFunction; } // Populate the QMetaObjectPrivate structure. @@ -1446,30 +1441,18 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf, if (buf) data[enumIndex] = 0; - // Create the extradata block if we need one. - if (d->relatedMetaObjects.size() > 0 || d->staticMetacallFunction) { - ALIGN(size, QMetaObject **); - ALIGN(size, QMetaObjectBuilder::StaticMetacallFunction); - QMetaObjectExtraData *extra = - reinterpret_cast<QMetaObjectExtraData *>(buf + size); - size += sizeof(QMetaObjectExtraData); + // Create the relatedMetaObjects block if we need one. + if (d->relatedMetaObjects.size() > 0) { ALIGN(size, QMetaObject *); const QMetaObject **objects = reinterpret_cast<const QMetaObject **>(buf + size); if (buf) { - if (d->relatedMetaObjects.size() > 0) { - extra->objects = objects; - for (index = 0; index < d->relatedMetaObjects.size(); ++index) - objects[index] = d->relatedMetaObjects[index]; - objects[index] = 0; - } else { - extra->objects = 0; - } - extra->static_metacall = d->staticMetacallFunction; - meta->d.extradata = reinterpret_cast<void *>(extra); + meta->d.relatedMetaObjects = objects; + for (index = 0; index < d->relatedMetaObjects.size(); ++index) + objects[index] = d->relatedMetaObjects[index]; + objects[index] = 0; } - if (d->relatedMetaObjects.size() > 0) - size += sizeof(QMetaObject *) * (d->relatedMetaObjects.size() + 1); + size += sizeof(QMetaObject *) * (d->relatedMetaObjects.size() + 1); } // Align the final size and return it. @@ -1552,6 +1535,7 @@ void QMetaObjectBuilder::fromRelocatableData(QMetaObject *output, output->d.stringdata = reinterpret_cast<const QByteArrayData *>(buf + stringdataOffset); output->d.data = reinterpret_cast<const uint *>(buf + dataOffset); output->d.extradata = 0; + output->d.relatedMetaObjects = 0; } /*! |