From 073977a7a1e79d0cf4ebeaa044045986f29c1d04 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Fri, 1 Mar 2019 17:04:41 +0100 Subject: qmlplugindump: Make compositeTypes non-static Change-Id: Ia4f35781ed96a347464b5e423bd7446f5a7f6752 Reviewed-by: Ulf Hermann --- tools/qmlplugindump/main.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'tools') diff --git a/tools/qmlplugindump/main.cpp b/tools/qmlplugindump/main.cpp index f5bd6d2291..06dd6abe2b 100644 --- a/tools/qmlplugindump/main.cpp +++ b/tools/qmlplugindump/main.cpp @@ -163,10 +163,6 @@ public: */ static QHash > qmlTypesByCppName; -/* A composite type is completely specified by name, major version and minor version. -*/ -static QMap > qmlTypesByCompositeName; - static QHash cppToId; /* Takes a C++ type name, such as Qt::LayoutDirection or QString and @@ -208,14 +204,15 @@ QByteArray convertToId(const QMetaObject *mo) // Collect all metaobjects for types registered with qmlRegisterType() without parameters -void collectReachableMetaObjectsWithoutQmlName(QQmlEnginePrivate *engine, QSet& metas ) { +void collectReachableMetaObjectsWithoutQmlName(QQmlEnginePrivate *engine, QSet& metas, + QMap> &compositeTypes) { const auto qmlAllTypes = QQmlMetaType::qmlAllTypes(); for (const QQmlType &ty : qmlAllTypes) { if (!metas.contains(ty.baseMetaObject())) { if (!ty.isComposite()) { collectReachableMetaObjects(engine, ty, &metas); } else { - qmlTypesByCompositeName[ty.elementName()].insert(ty); + compositeTypes[ty.elementName()].insert(ty); } } } @@ -224,6 +221,7 @@ void collectReachableMetaObjectsWithoutQmlName(QQmlEnginePrivate *engine, QSet collectReachableMetaObjects(QQmlEngine *engine, QSet &noncreatables, QSet &singletons, + QMap> &compositeTypes, const QList &skip = QList()) { QSet metas; @@ -239,7 +237,7 @@ QSet collectReachableMetaObjects(QQmlEngine *engine, qmlTypesByCppName[ty.baseMetaObject()->className()].insert(ty); collectReachableMetaObjects(QQmlEnginePrivate::get(engine), ty, &metas); } else { - qmlTypesByCompositeName[ty.elementName()].insert(ty); + compositeTypes[ty.elementName()].insert(ty); } } @@ -304,7 +302,7 @@ QSet collectReachableMetaObjects(QQmlEngine *engine, } } - collectReachableMetaObjectsWithoutQmlName(QQmlEnginePrivate::get(engine), metas); + collectReachableMetaObjectsWithoutQmlName(QQmlEnginePrivate::get(engine), metas, compositeTypes); return metas; } @@ -1185,7 +1183,8 @@ int main(int argc, char *argv[]) // find all QMetaObjects reachable from the builtin module QSet uncreatableMetas; QSet singletonMetas; - QSet defaultReachable = collectReachableMetaObjects(&engine, uncreatableMetas, singletonMetas); + QMap> compositeTypes; + QSet defaultReachable = collectReachableMetaObjects(&engine, uncreatableMetas, singletonMetas, compositeTypes); QList defaultTypes = QQmlMetaType::qmlTypes(); // add some otherwise unreachable QMetaObjects @@ -1269,7 +1268,7 @@ int main(int argc, char *argv[]) } } - QSet candidates = collectReachableMetaObjects(&engine, uncreatableMetas, singletonMetas, defaultTypes); + QSet candidates = collectReachableMetaObjects(&engine, uncreatableMetas, singletonMetas, compositeTypes, defaultTypes); candidates.subtract(defaultReachable); // Also eliminate meta objects with the same classname. @@ -1325,8 +1324,8 @@ int main(int argc, char *argv[]) dumper.dump(QQmlEnginePrivate::get(&engine), meta, uncreatableMetas.contains(meta), singletonMetas.contains(meta)); } - QMap >::const_iterator iter = qmlTypesByCompositeName.constBegin(); - for (; iter != qmlTypesByCompositeName.constEnd(); ++iter) + QMap >::const_iterator iter = compositeTypes.constBegin(); + for (; iter != compositeTypes.constEnd(); ++iter) dumper.dumpComposite(&engine, iter.value(), defaultReachableNames); // define QEasingCurve as an extension of QQmlEasingValueType, this way -- cgit v1.2.3