diff options
author | Alessandro Portale <alessandro.portale@qt.io> | 2024-05-10 15:48:32 +0200 |
---|---|---|
committer | Alessandro Portale <alessandro.portale@qt.io> | 2024-05-13 13:46:53 +0000 |
commit | 6663f7c9bdc2afe36fabeffada541d7f241eb8ab (patch) | |
tree | 8360622a1811d0a7c00603ca533847f6a537ac2d | |
parent | 465ad7b0fca1cfed3d161a771bfaf06448436fd2 (diff) |
ExtensionSystem: Introduce alias PluginSpecs
Change-Id: Ic7b87246cf91328c4291bbce5760a45dfa0b14e5
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r-- | src/app/main.cpp | 4 | ||||
-rw-r--r-- | src/libs/extensionsystem/pluginmanager.cpp | 41 | ||||
-rw-r--r-- | src/libs/extensionsystem/pluginspec.cpp | 6 | ||||
-rw-r--r-- | src/libs/extensionsystem/pluginspec.h | 6 | ||||
-rw-r--r-- | src/libs/extensionsystem/pluginview.cpp | 8 | ||||
-rw-r--r-- | src/plugins/clangformat/clangformatindenter.cpp | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/iwizardfactory.cpp | 2 | ||||
-rw-r--r-- | src/plugins/extensionmanager/extensionsbrowser.cpp | 1 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp | 4 | ||||
-rw-r--r-- | tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp | 4 | ||||
-rw-r--r-- | tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp | 8 |
14 files changed, 47 insertions, 45 deletions
diff --git a/src/app/main.cpp b/src/app/main.cpp index 5ebb3ff4d7..86c9106a56 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -91,8 +91,6 @@ const char PLUGINPATH_OPTION[] = "-pluginpath"; const char LANGUAGE_OPTION[] = "-language"; const char USER_LIBRARY_PATH_OPTION[] = "-user-library-path"; // hidden option for qtcreator.sh -using PluginSpecSet = QVector<PluginSpec *>; - // Helpers for displaying messages. Note that there is no console on Windows. // Format as <pre> HTML @@ -795,7 +793,7 @@ int main(int argc, char **argv) settingspath}; PluginManager::setCreatorProcessData(processData); - const PluginSpecSet plugins = PluginManager::plugins(); + const PluginSpecs plugins = PluginManager::plugins(); PluginSpec *coreplugin = nullptr; for (PluginSpec *spec : plugins) { if (spec->name() == QLatin1String(corePluginNameC)) { diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index 718a66a727..f0c7e930b4 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -50,6 +50,7 @@ #include <functional> #include <memory> +#include <type_traits> Q_LOGGING_CATEGORY(pluginLog, "qtc.extensionsystem", QtWarningMsg) @@ -327,7 +328,7 @@ void PluginManager::loadPluginsAtRuntime(const QSet<PluginSpec *> &plugins) d->loadPluginsAtRuntime(plugins); } -void PluginManager::addPlugins(const QVector<PluginSpec *> &specs) +void PluginManager::addPlugins(const PluginSpecs &specs) { d->addPlugins(specs); } @@ -556,12 +557,12 @@ QStringList PluginManager::argumentsForRestart() \sa setPluginPaths() */ -const QVector<PluginSpec *> PluginManager::plugins() +const PluginSpecs PluginManager::plugins() { return d->pluginSpecs; } -QHash<QString, QVector<PluginSpec *>> PluginManager::pluginCollections() +QHash<QString, PluginSpecs> PluginManager::pluginCollections() { return d->pluginCategories; } @@ -903,8 +904,10 @@ PluginManager::ProcessData PluginManager::creatorProcessData() /*! Returns a list of plugins in load order. */ -QVector<PluginSpec *> PluginManager::loadQueue() +PluginSpecs PluginManager::loadQueue() { + // Ensure order preservation + static_assert(std::is_same<PluginSpecs, QList<class PluginSpec *> >::value); return d->loadQueue(); } @@ -1034,7 +1037,7 @@ void PluginManagerPrivate::stopAll() m_isShuttingDown = true; delayedInitializeTimer.stop(); - const QVector<PluginSpec *> queue = loadQueue(); + const PluginSpecs queue = loadQueue(); for (PluginSpec *spec : queue) loadPlugin(spec, PluginSpec::Stopped); } @@ -1371,7 +1374,7 @@ void PluginManagerPrivate::loadPlugins() if (m_profilingVerbosity > 0) qDebug("Profiling started"); - const QVector<PluginSpec *> queue = loadQueue(); + const PluginSpecs queue = loadQueue(); Utils::setMimeStartupPhase(MimeStartupPhase::PluginsLoading); { NANOTRACE_SCOPE("ExtensionSystem", "Load"); @@ -1477,11 +1480,11 @@ void PluginManagerPrivate::shutdown() /*! \internal */ -const QVector<PluginSpec *> PluginManagerPrivate::loadQueue() +const PluginSpecs PluginManagerPrivate::loadQueue() { - QVector<PluginSpec *> queue; + PluginSpecs queue; for (PluginSpec *spec : std::as_const(pluginSpecs)) { - QVector<PluginSpec *> circularityCheckQueue; + PluginSpecs circularityCheckQueue; loadQueue(spec, queue, circularityCheckQueue); } return queue; @@ -1491,8 +1494,8 @@ const QVector<PluginSpec *> PluginManagerPrivate::loadQueue() \internal */ bool PluginManagerPrivate::loadQueue(PluginSpec *spec, - QVector<PluginSpec *> &queue, - QVector<PluginSpec *> &circularityCheckQueue) + PluginSpecs &queue, + PluginSpecs &circularityCheckQueue) { if (queue.contains(spec)) return true; @@ -1757,7 +1760,7 @@ static const FilePaths pluginFiles(const FilePaths &pluginPaths) return pluginFiles; } -void PluginManagerPrivate::addPlugins(const QVector<PluginSpec *> &specs) +void PluginManagerPrivate::addPlugins(const PluginSpecs &specs) { pluginSpecs += specs; @@ -1791,7 +1794,7 @@ void PluginManagerPrivate::addPlugins(const QVector<PluginSpec *> &specs) */ void PluginManagerPrivate::readPluginPaths() { - QVector<PluginSpec *> newSpecs; + PluginSpecs newSpecs; // from the file system for (const FilePath &pluginFile : pluginFiles(pluginPaths)) { @@ -1826,7 +1829,7 @@ void PluginManagerPrivate::enableDependenciesIndirectly() for (PluginSpec *spec : std::as_const(pluginSpecs)) spec->setEnabledIndirectly(false); // cannot use reverse loadQueue here, because test dependencies can introduce circles - QVector<PluginSpec *> queue = Utils::filtered(pluginSpecs, &PluginSpec::isEffectivelyEnabled); + PluginSpecs queue = Utils::filtered(pluginSpecs, &PluginSpec::isEffectivelyEnabled); while (!queue.isEmpty()) { PluginSpec *spec = queue.takeFirst(); queue += spec->enableDependenciesIndirectly(containsTestSpec(spec)); @@ -1900,11 +1903,11 @@ void PluginManagerPrivate::profilingReport(const char *what, const PluginSpec *s QString PluginManagerPrivate::profilingSummary(qint64 *totalOut) const { QString summary; - const QVector<PluginSpec *> specs = Utils::sorted(pluginSpecs, - [](PluginSpec *s1, PluginSpec *s2) { - return s1->performanceData().total() - < s2->performanceData().total(); - }); + const PluginSpecs specs = Utils::sorted(pluginSpecs, + [](PluginSpec *s1, PluginSpec *s2) { + return s1->performanceData().total() + < s2->performanceData().total(); + }); const qint64 total = std::accumulate(specs.constBegin(), specs.constEnd(), 0, [](qint64 t, PluginSpec *s) { return t + s->performanceData().total(); diff --git a/src/libs/extensionsystem/pluginspec.cpp b/src/libs/extensionsystem/pluginspec.cpp index 2d492c385f..5c65dd5192 100644 --- a/src/libs/extensionsystem/pluginspec.cpp +++ b/src/libs/extensionsystem/pluginspec.cpp @@ -635,12 +635,12 @@ void PluginSpec::setForceEnabled(bool value) } // returns the plugins that it actually indirectly enabled -QVector<PluginSpec *> PluginSpec::enableDependenciesIndirectly(bool enableTestDependencies) +PluginSpecs PluginSpec::enableDependenciesIndirectly(bool enableTestDependencies) { if (!isEffectivelyEnabled()) // plugin not enabled, nothing to do return {}; - QVector<PluginSpec *> enabled; + PluginSpecs enabled; for (auto it = d->dependencySpecs.cbegin(), end = d->dependencySpecs.cend(); it != end; ++it) { if (it.key().type != PluginDependency::Required && (!enableTestDependencies || it.key().type != PluginDependency::Test)) @@ -1058,7 +1058,7 @@ int PluginSpec::versionCompare(const QString &version1, const QString &version2) /*! \internal */ -bool PluginSpec::resolveDependencies(const QVector<PluginSpec *> &specs) +bool PluginSpec::resolveDependencies(const PluginSpecs &specs) { if (hasError()) return false; diff --git a/src/libs/extensionsystem/pluginspec.h b/src/libs/extensionsystem/pluginspec.h index 7d45fe82c1..49a972d914 100644 --- a/src/libs/extensionsystem/pluginspec.h +++ b/src/libs/extensionsystem/pluginspec.h @@ -78,6 +78,8 @@ struct EXTENSIONSYSTEM_EXPORT PerformanceData } }; +using PluginSpecs = QList<class PluginSpec *>; + class EXTENSIONSYSTEM_EXPORT PluginSpec { friend class ::tst_PluginSpec; @@ -130,8 +132,8 @@ public: virtual bool provides(const QString &pluginName, const QString &pluginVersion) const; virtual bool requiresAny(const QSet<PluginSpec *> &plugins) const; - virtual QVector<PluginSpec *> enableDependenciesIndirectly(bool enableTestDependencies); - virtual bool resolveDependencies(const QVector<PluginSpec *> &pluginSpecs); + virtual PluginSpecs enableDependenciesIndirectly(bool enableTestDependencies); + virtual bool resolveDependencies(const PluginSpecs &pluginSpecs); virtual IPlugin *plugin() const = 0; virtual State state() const; diff --git a/src/libs/extensionsystem/pluginview.cpp b/src/libs/extensionsystem/pluginview.cpp index 902f90aca4..f4a86a41d4 100644 --- a/src/libs/extensionsystem/pluginview.cpp +++ b/src/libs/extensionsystem/pluginview.cpp @@ -198,7 +198,7 @@ public: class CollectionItem : public TreeItem { public: - CollectionItem(const QString &name, const QVector<PluginSpec *> &plugins, PluginView *view) + CollectionItem(const QString &name, const PluginSpecs &plugins, PluginView *view) : m_name(name) , m_plugins(plugins) , m_view(view) @@ -238,7 +238,7 @@ public: bool setData(int column, const QVariant &data, int role) override { if (column == LoadedColumn && role == Qt::CheckStateRole) { - const QVector<PluginSpec *> affectedPlugins + const PluginSpecs affectedPlugins = Utils::filtered(m_plugins, [](PluginSpec *spec) { return !spec->isRequired(); }); if (m_view->setPluginsEnabled(toSet(affectedPlugins), data.toBool())) { update(); @@ -258,7 +258,7 @@ public: public: QString m_name; - const QVector<PluginSpec *> m_plugins; + const PluginSpecs m_plugins; PluginView *m_view; // Not owned. }; @@ -346,7 +346,7 @@ void PluginView::updatePlugins() // Model. m_model->clear(); - const QHash<QString, QVector<PluginSpec *>> pluginCollections + const QHash<QString, PluginSpecs> pluginCollections = PluginManager::pluginCollections(); std::vector<CollectionItem *> collections; const auto end = pluginCollections.cend(); diff --git a/src/plugins/clangformat/clangformatindenter.cpp b/src/plugins/clangformat/clangformatindenter.cpp index 95d847150f..fc213da18c 100644 --- a/src/plugins/clangformat/clangformatindenter.cpp +++ b/src/plugins/clangformat/clangformatindenter.cpp @@ -33,7 +33,7 @@ namespace ClangFormat { static bool isBeautifierPluginActivated() { - const QVector<ExtensionSystem::PluginSpec *> specs = ExtensionSystem::PluginManager::plugins(); + const ExtensionSystem::PluginSpecs specs = ExtensionSystem::PluginManager::plugins(); return std::find_if(specs.begin(), specs.end(), [](ExtensionSystem::PluginSpec *spec) { diff --git a/src/plugins/coreplugin/iwizardfactory.cpp b/src/plugins/coreplugin/iwizardfactory.cpp index dc7a6da3e5..20adfda16b 100644 --- a/src/plugins/coreplugin/iwizardfactory.cpp +++ b/src/plugins/coreplugin/iwizardfactory.cpp @@ -401,7 +401,7 @@ QSet<Id> IWizardFactory::pluginFeatures() { if (s_plugins.isEmpty()) { // Implicitly create a feature for each plugin loaded: - const QVector<ExtensionSystem::PluginSpec *> pluginVector = ExtensionSystem::PluginManager::plugins(); + const ExtensionSystem::PluginSpecs pluginVector = ExtensionSystem::PluginManager::plugins(); for (const ExtensionSystem::PluginSpec *s : pluginVector) { if (s->state() == ExtensionSystem::PluginSpec::Running) s_plugins.insert(Id::fromString(s->name())); diff --git a/src/plugins/extensionmanager/extensionsbrowser.cpp b/src/plugins/extensionmanager/extensionsbrowser.cpp index d83c1ef3ee..48eff3a16a 100644 --- a/src/plugins/extensionmanager/extensionsbrowser.cpp +++ b/src/plugins/extensionmanager/extensionsbrowser.cpp @@ -37,7 +37,6 @@ namespace ExtensionManager::Internal { Q_LOGGING_CATEGORY(browserLog, "qtc.extensionmanager.browser", QtWarningMsg) -using PluginSpecList = QList<const PluginSpec *>; using Tags = QStringList; constexpr QSize itemSize = {330, 86}; diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index c24ec9aa3e..f46b2daf78 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -1722,7 +1722,7 @@ void editIn3dView(const SelectionContext &selectionContext) bool isEffectComposerActivated() { - const QVector<ExtensionSystem::PluginSpec *> specs = ExtensionSystem::PluginManager::plugins(); + const ExtensionSystem::PluginSpecs specs = ExtensionSystem::PluginManager::plugins(); return std::find_if(specs.begin(), specs.end(), [](ExtensionSystem::PluginSpec *spec) { return spec->name() == "EffectComposer" && spec->isEffectivelyEnabled(); diff --git a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp index d5036c939c..34cd4338ac 100644 --- a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp +++ b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp @@ -165,7 +165,7 @@ void QmlPreviewWidgetPlugin::setLanguageLocale(const QString &locale) QObject *QmlPreviewWidgetPlugin::getPreviewPlugin() { - const QVector<ExtensionSystem::PluginSpec *> &specs = ExtensionSystem::PluginManager::plugins(); + const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins(); const auto pluginIt = std::find_if(specs.cbegin(), specs.cend(), [](const ExtensionSystem::PluginSpec *p) { return p->name() == "QmlPreview"; diff --git a/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp b/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp index d041afbffd..0b005d538f 100644 --- a/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp +++ b/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp @@ -29,7 +29,7 @@ private slots: static ExtensionSystem::IPlugin *getPlugin() { - const QVector<ExtensionSystem::PluginSpec *> plugins = ExtensionSystem::PluginManager::plugins(); + const ExtensionSystem::PluginSpecs plugins = ExtensionSystem::PluginManager::plugins(); auto it = std::find_if(plugins.begin(), plugins.end(), [](ExtensionSystem::PluginSpec *spec) { return spec->name() == "QmlPreview"; }); diff --git a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp index ae16f09fc2..e6028e1d7d 100644 --- a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp +++ b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp @@ -21,7 +21,7 @@ namespace QmlProjectManager { static bool isMultilanguagePresent() { - const QVector<ExtensionSystem::PluginSpec *> &specs = ExtensionSystem::PluginManager::plugins(); + const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins(); return std::find_if(specs.cbegin(), specs.cend(), [](ExtensionSystem::PluginSpec *spec) { return spec->name() == "MultiLanguage"; @@ -41,7 +41,7 @@ static FilePath getMultilanguageDatabaseFilePath(ProjectExplorer::Target *target static QObject *getPreviewPlugin() { - const QVector<ExtensionSystem::PluginSpec *> &specs = ExtensionSystem::PluginManager::plugins(); + const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins(); const auto pluginIt = std::find_if(specs.cbegin(), specs.cend(), [](const ExtensionSystem::PluginSpec *p) { return p->name() == "QmlPreview"; diff --git a/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp b/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp index 4a9b0210a0..35ed607813 100644 --- a/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp +++ b/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp @@ -140,7 +140,7 @@ void tst_PluginManager::circularPlugins() { PluginManager::setPluginPaths({pluginFolder(QLatin1String("circularplugins"))}); PluginManager::loadPlugins(); - const QVector<PluginSpec *> plugins = PluginManager::plugins(); + const PluginSpecs plugins = PluginManager::plugins(); QCOMPARE(plugins.count(), 3); for (PluginSpec *spec : plugins) { if (spec->name() == "plugin1") { @@ -164,7 +164,7 @@ void tst_PluginManager::correctPlugins1() PluginManager::loadPlugins(); bool specError = false; bool runError = false; - const QVector<PluginSpec *> plugins = PluginManager::plugins(); + const PluginSpecs plugins = PluginManager::plugins(); for (PluginSpec *spec : plugins) { if (spec->hasError()) { qDebug() << spec->filePath(); diff --git a/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp b/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp index f52b0cf19a..66828f8e63 100644 --- a/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp +++ b/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp @@ -232,7 +232,7 @@ void tst_PluginSpec::locationAndPath() void tst_PluginSpec::resolveDependencies() { - QVector<PluginSpec *> specs; + PluginSpecs specs; PluginSpec *spec1 = new CppPluginSpec(); specs.append(spec1); spec1->readMetaData(metaData("testdependencies/spec1.json")); @@ -276,7 +276,7 @@ void tst_PluginSpec::loadLibrary() QVERIFY(ps); CppPluginSpec *spec = static_cast<CppPluginSpec *>(ps.value()); - QVERIFY(spec->resolveDependencies(QVector<PluginSpec *>())); + QVERIFY(spec->resolveDependencies({})); QVERIFY2(spec->loadLibrary(), qPrintable(spec->errorString())); QVERIFY(spec->plugin() != 0); QVERIFY(QLatin1String(spec->plugin()->metaObject()->className()) @@ -293,7 +293,7 @@ void tst_PluginSpec::initializePlugin() PLUGIN_DIR_PATH / "testplugin" / libraryName(QLatin1String("test"))); QVERIFY(ps); CppPluginSpec *spec = static_cast<CppPluginSpec *>(ps.value()); - QVERIFY(spec->resolveDependencies(QVector<PluginSpec *>())); + QVERIFY(spec->resolveDependencies({})); QVERIFY2(spec->loadLibrary(), qPrintable(spec->errorString())); bool isInitialized; QMetaObject::invokeMethod(spec->plugin(), @@ -317,7 +317,7 @@ void tst_PluginSpec::initializeExtensions() PLUGIN_DIR_PATH / "testplugin" / libraryName(QLatin1String("test"))); QVERIFY(ps); CppPluginSpec *spec = static_cast<CppPluginSpec *>(ps.value()); - QVERIFY(spec->resolveDependencies(QVector<PluginSpec *>())); + QVERIFY(spec->resolveDependencies({})); QVERIFY2(spec->loadLibrary(), qPrintable(spec->errorString())); bool isExtensionsInitialized; QVERIFY(spec->initializePlugin()); |