From 881b59c36ee38a06aa49ee2280ae9c1e591bfe51 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 8 May 2019 15:36:57 +0200 Subject: [PATCH] ProjectExplorer: Replace ToolChainFactory::supportedLanguange ... by a member-based approach. Change-Id: I5c7fef196df6c37fd26c60a58c774426eca562a0 Reviewed-by: Christian Kandeler --- src/plugins/android/androidtoolchain.cpp | 6 +---- src/plugins/android/androidtoolchain.h | 1 - src/plugins/baremetal/iarewtoolchain.cpp | 8 ++---- src/plugins/baremetal/iarewtoolchain.h | 1 - src/plugins/baremetal/keiltoolchain.cpp | 8 ++---- src/plugins/baremetal/keiltoolchain.h | 1 - src/plugins/baremetal/sdcctoolchain.cpp | 6 +---- src/plugins/baremetal/sdcctoolchain.h | 1 - src/plugins/ios/iosconfigurations.cpp | 8 +++--- src/plugins/ios/iosconfigurations.h | 3 ++- .../nim/project/nimtoolchainfactory.cpp | 6 +---- src/plugins/nim/project/nimtoolchainfactory.h | 1 - .../projectexplorer/customtoolchain.cpp | 6 +---- src/plugins/projectexplorer/customtoolchain.h | 1 - src/plugins/projectexplorer/gcctoolchain.cpp | 26 +++---------------- .../projectexplorer/gcctoolchainfactories.h | 4 --- src/plugins/projectexplorer/msvctoolchain.cpp | 6 +---- src/plugins/projectexplorer/msvctoolchain.h | 1 - src/plugins/projectexplorer/toolchain.cpp | 15 +++++++++++ src/plugins/projectexplorer/toolchain.h | 6 ++++- src/plugins/qnx/qnxtoolchain.cpp | 6 +---- src/plugins/qnx/qnxtoolchain.h | 2 -- 22 files changed, 39 insertions(+), 84 deletions(-) diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp index 4e3cd7b3221..015e4c55c66 100644 --- a/src/plugins/android/androidtoolchain.cpp +++ b/src/plugins/android/androidtoolchain.cpp @@ -155,11 +155,7 @@ AndroidToolChainFactory::AndroidToolChainFactory() { setDisplayName(tr("Android Clang")); setSupportedToolChainType(Constants::ANDROID_TOOLCHAIN_ID); -} - -QSet Android::Internal::AndroidToolChainFactory::supportedLanguages() const -{ - return {ProjectExplorer::Constants::CXX_LANGUAGE_ID}; + setSupportedLanguages({ProjectExplorer::Constants::CXX_LANGUAGE_ID}); } ToolChainList AndroidToolChainFactory::autoDetect(CToolChainList &alreadyKnown) diff --git a/src/plugins/android/androidtoolchain.h b/src/plugins/android/androidtoolchain.h index 6d69f842c88..5fb26694138 100644 --- a/src/plugins/android/androidtoolchain.h +++ b/src/plugins/android/androidtoolchain.h @@ -64,7 +64,6 @@ class AndroidToolChainFactory : public ProjectExplorer::ToolChainFactory public: AndroidToolChainFactory(); - QSet supportedLanguages() const override; ToolChainList autoDetect(CToolChainList &alreadyKnown) override; ProjectExplorer::ToolChain *restore(const QVariantMap &data) override; diff --git a/src/plugins/baremetal/iarewtoolchain.cpp b/src/plugins/baremetal/iarewtoolchain.cpp index 66e915fc9a2..f40798cdb91 100644 --- a/src/plugins/baremetal/iarewtoolchain.cpp +++ b/src/plugins/baremetal/iarewtoolchain.cpp @@ -400,12 +400,8 @@ IarToolChainFactory::IarToolChainFactory() { setDisplayName(tr("IAREW")); setSupportedToolChainType(Constants::IAREW_TOOLCHAIN_TYPEID); -} - -QSet IarToolChainFactory::supportedLanguages() const -{ - return {ProjectExplorer::Constants::C_LANGUAGE_ID, - ProjectExplorer::Constants::CXX_LANGUAGE_ID}; + setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID, + ProjectExplorer::Constants::CXX_LANGUAGE_ID}); } QList IarToolChainFactory::autoDetect(const QList &alreadyKnown) diff --git a/src/plugins/baremetal/iarewtoolchain.h b/src/plugins/baremetal/iarewtoolchain.h index 6c835cc23b8..902288e611b 100644 --- a/src/plugins/baremetal/iarewtoolchain.h +++ b/src/plugins/baremetal/iarewtoolchain.h @@ -107,7 +107,6 @@ class IarToolChainFactory final : public ProjectExplorer::ToolChainFactory public: explicit IarToolChainFactory(); - QSet supportedLanguages() const final; QList autoDetect( const QList &alreadyKnown) final; diff --git a/src/plugins/baremetal/keiltoolchain.cpp b/src/plugins/baremetal/keiltoolchain.cpp index 665e0b0f732..c7d639e9738 100644 --- a/src/plugins/baremetal/keiltoolchain.cpp +++ b/src/plugins/baremetal/keiltoolchain.cpp @@ -410,12 +410,8 @@ KeilToolchainFactory::KeilToolchainFactory() { setDisplayName(tr("KEIL")); setSupportedToolChainType(Constants::KEIL_TOOLCHAIN_TYPEID); -} - -QSet KeilToolchainFactory::supportedLanguages() const -{ - return {ProjectExplorer::Constants::C_LANGUAGE_ID, - ProjectExplorer::Constants::CXX_LANGUAGE_ID}; + setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID, + ProjectExplorer::Constants::CXX_LANGUAGE_ID}); } QList KeilToolchainFactory::autoDetect(const QList &alreadyKnown) diff --git a/src/plugins/baremetal/keiltoolchain.h b/src/plugins/baremetal/keiltoolchain.h index ed3f69935b9..e2c6d749925 100644 --- a/src/plugins/baremetal/keiltoolchain.h +++ b/src/plugins/baremetal/keiltoolchain.h @@ -107,7 +107,6 @@ class KeilToolchainFactory final : public ProjectExplorer::ToolChainFactory public: explicit KeilToolchainFactory(); - QSet supportedLanguages() const final; QList autoDetect( const QList &alreadyKnown) final; diff --git a/src/plugins/baremetal/sdcctoolchain.cpp b/src/plugins/baremetal/sdcctoolchain.cpp index ce0ef2b72ad..79f245b5862 100644 --- a/src/plugins/baremetal/sdcctoolchain.cpp +++ b/src/plugins/baremetal/sdcctoolchain.cpp @@ -395,11 +395,7 @@ SdccToolChainFactory::SdccToolChainFactory() { setDisplayName(tr("SDCC")); setSupportedToolChainType(Constants::SDCC_TOOLCHAIN_TYPEID); -} - -QSet SdccToolChainFactory::supportedLanguages() const -{ - return {ProjectExplorer::Constants::C_LANGUAGE_ID}; + setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID}); } QList SdccToolChainFactory::autoDetect(const QList &alreadyKnown) diff --git a/src/plugins/baremetal/sdcctoolchain.h b/src/plugins/baremetal/sdcctoolchain.h index 65e522a33a3..e98675e7e3b 100644 --- a/src/plugins/baremetal/sdcctoolchain.h +++ b/src/plugins/baremetal/sdcctoolchain.h @@ -107,7 +107,6 @@ class SdccToolChainFactory final : public ProjectExplorer::ToolChainFactory public: explicit SdccToolChainFactory(); - QSet supportedLanguages() const final; QList autoDetect( const QList &alreadyKnown) final; diff --git a/src/plugins/ios/iosconfigurations.cpp b/src/plugins/ios/iosconfigurations.cpp index 3494c0325f8..8e3ac414f2a 100644 --- a/src/plugins/ios/iosconfigurations.cpp +++ b/src/plugins/ios/iosconfigurations.cpp @@ -597,12 +597,10 @@ static ClangToolChain *createToolChain(const XcodePlatform &platform, return toolChain; } -QSet IosToolChainFactory::supportedLanguages() const +IosToolChainFactory::IosToolChainFactory() { - return { - ProjectExplorer::Constants::C_LANGUAGE_ID, - ProjectExplorer::Constants::CXX_LANGUAGE_ID - }; + setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID, + ProjectExplorer::Constants::CXX_LANGUAGE_ID}); } QList IosToolChainFactory::autoDetect(const QList &existingToolChains) diff --git a/src/plugins/ios/iosconfigurations.h b/src/plugins/ios/iosconfigurations.h index 9b3faa348e2..eaafc9eb08b 100644 --- a/src/plugins/ios/iosconfigurations.h +++ b/src/plugins/ios/iosconfigurations.h @@ -98,7 +98,8 @@ class IosToolChainFactory : public ProjectExplorer::ToolChainFactory Q_OBJECT public: - QSet supportedLanguages() const override; + IosToolChainFactory(); + QList autoDetect(const QList &existingToolChains) override; }; diff --git a/src/plugins/nim/project/nimtoolchainfactory.cpp b/src/plugins/nim/project/nimtoolchainfactory.cpp index 30d4e759b50..e38b9db4b25 100644 --- a/src/plugins/nim/project/nimtoolchainfactory.cpp +++ b/src/plugins/nim/project/nimtoolchainfactory.cpp @@ -44,6 +44,7 @@ NimToolChainFactory::NimToolChainFactory() { setDisplayName(tr("Nim")); setSupportedToolChainType(Constants::C_NIMTOOLCHAIN_TYPEID); + setSupportedLanguages({Constants::C_NIMLANGUAGE_ID}); } bool NimToolChainFactory::canCreate() @@ -69,11 +70,6 @@ ToolChain *NimToolChainFactory::restore(const QVariantMap &data) return nullptr; } -QSet NimToolChainFactory::supportedLanguages() const -{ - return {Constants::C_NIMLANGUAGE_ID}; -} - QList NimToolChainFactory::autoDetect(const QList &alreadyKnown) { QList result; diff --git a/src/plugins/nim/project/nimtoolchainfactory.h b/src/plugins/nim/project/nimtoolchainfactory.h index 3730efabf05..e601b71cf6b 100644 --- a/src/plugins/nim/project/nimtoolchainfactory.h +++ b/src/plugins/nim/project/nimtoolchainfactory.h @@ -44,7 +44,6 @@ public: bool canCreate() final; ProjectExplorer::ToolChain *create(Core::Id l) final; ProjectExplorer::ToolChain *restore(const QVariantMap &data) final; - QSet supportedLanguages() const final; QList autoDetect(const QList &alreadyKnown) final; QList autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final; }; diff --git a/src/plugins/projectexplorer/customtoolchain.cpp b/src/plugins/projectexplorer/customtoolchain.cpp index b484f11d720..566ce93c513 100644 --- a/src/plugins/projectexplorer/customtoolchain.cpp +++ b/src/plugins/projectexplorer/customtoolchain.cpp @@ -426,11 +426,7 @@ CustomToolChainFactory::CustomToolChainFactory() { setDisplayName(tr("Custom")); setSupportedToolChainType(Constants::CUSTOM_TOOLCHAIN_TYPEID); -} - -QSet CustomToolChainFactory::supportedLanguages() const -{ - return ToolChainManager::allLanguages(); + setSupportsAllLanguages(true); } bool CustomToolChainFactory::canCreate() diff --git a/src/plugins/projectexplorer/customtoolchain.h b/src/plugins/projectexplorer/customtoolchain.h index 713aeb5cbc3..97ba205e47e 100644 --- a/src/plugins/projectexplorer/customtoolchain.h +++ b/src/plugins/projectexplorer/customtoolchain.h @@ -144,7 +144,6 @@ class CustomToolChainFactory : public ToolChainFactory public: CustomToolChainFactory(); - QSet supportedLanguages() const override; bool canCreate() override; ToolChain *create(Core::Id language) override; diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index 68ada221345..7390da453bc 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -876,11 +876,7 @@ GccToolChainFactory::GccToolChainFactory() { setDisplayName(tr("GCC")); setSupportedToolChainType(Constants::GCC_TOOLCHAIN_TYPEID); -} - -QSet GccToolChainFactory::supportedLanguages() const -{ - return {Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}; + setSupportedLanguages({Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}); } bool GccToolChainFactory::canCreate() @@ -1495,12 +1491,7 @@ ClangToolChainFactory::ClangToolChainFactory() { setDisplayName(tr("Clang")); setSupportedToolChainType(Constants::CLANG_TOOLCHAIN_TYPEID); -} - -QSet ClangToolChainFactory::supportedLanguages() const -{ - return {Constants::CXX_LANGUAGE_ID, - Constants::C_LANGUAGE_ID}; + setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}); } QList ClangToolChainFactory::autoDetect(const QList &alreadyKnown) @@ -1709,12 +1700,7 @@ MingwToolChainFactory::MingwToolChainFactory() { setDisplayName(tr("MinGW")); setSupportedToolChainType(Constants::MINGW_TOOLCHAIN_TYPEID); -} - -QSet MingwToolChainFactory::supportedLanguages() const -{ - return {Constants::CXX_LANGUAGE_ID, - Constants::C_LANGUAGE_ID}; + setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}); } QList MingwToolChainFactory::autoDetect(const QList &alreadyKnown) @@ -1809,11 +1795,7 @@ LinuxIccToolChainFactory::LinuxIccToolChainFactory() { setDisplayName(tr("Linux ICC")); setSupportedToolChainType(Constants::LINUXICC_TOOLCHAIN_TYPEID); -} - -QSet LinuxIccToolChainFactory::supportedLanguages() const -{ - return {Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}; + setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}); } QList LinuxIccToolChainFactory::autoDetect(const QList &alreadyKnown) diff --git a/src/plugins/projectexplorer/gcctoolchainfactories.h b/src/plugins/projectexplorer/gcctoolchainfactories.h index 12409ecb947..4db9131f763 100644 --- a/src/plugins/projectexplorer/gcctoolchainfactories.h +++ b/src/plugins/projectexplorer/gcctoolchainfactories.h @@ -53,7 +53,6 @@ class GccToolChainFactory : public ToolChainFactory public: GccToolChainFactory(); - QSet supportedLanguages() const override; QList autoDetect(const QList &alreadyKnown) override; QList autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) override; @@ -146,7 +145,6 @@ class ClangToolChainFactory : public GccToolChainFactory public: ClangToolChainFactory(); - QSet supportedLanguages() const override; QList autoDetect(const QList &alreadyKnown) override; QList autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final; @@ -165,7 +163,6 @@ class MingwToolChainFactory : public GccToolChainFactory public: MingwToolChainFactory(); - QSet supportedLanguages() const override; QList autoDetect(const QList &alreadyKnown) override; QList autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final; @@ -184,7 +181,6 @@ class LinuxIccToolChainFactory : public GccToolChainFactory public: LinuxIccToolChainFactory(); - QSet supportedLanguages() const override; QList autoDetect(const QList &alreadyKnown) override; QList autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final; diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 1fec74e7d2e..24857e18ae4 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -1641,11 +1641,7 @@ MsvcToolChainFactory::MsvcToolChainFactory() { setDisplayName(tr("MSVC")); setSupportedToolChainType(Constants::MSVC_TOOLCHAIN_TYPEID); -} - -QSet MsvcToolChainFactory::supportedLanguages() const -{ - return {Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}; + setSupportedLanguages({Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}); } QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath, diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index 7bf89794ca5..cdfcb761979 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -224,7 +224,6 @@ class MsvcToolChainFactory : public ToolChainFactory public: MsvcToolChainFactory(); - QSet supportedLanguages() const override; QList autoDetect(const QList &alreadyKnown) override; diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index 142d1239859..56796b1d5b7 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -477,6 +477,11 @@ void ToolChainFactory::autoDetectionToMap(QVariantMap &data, bool detected) data.insert(QLatin1String(AUTODETECT_KEY), detected); } +QSet ToolChainFactory::supportedLanguages() const +{ + return m_supportsAllLanguages ? ToolChainManager::allLanguages() : m_supportedLanguages; +} + Core::Id ToolChainFactory::supportedToolChainType() const { return m_supportedToolChainType; @@ -487,4 +492,14 @@ void ToolChainFactory::setSupportedToolChainType(const Core::Id &supportedToolCh m_supportedToolChainType = supportedToolChain; } +void ToolChainFactory::setSupportedLanguages(const QSet &supportedLanguages) +{ + m_supportedLanguages = supportedLanguages; +} + +void ToolChainFactory::setSupportsAllLanguages(bool supportsAllLanguages) +{ + m_supportsAllLanguages = supportsAllLanguages; +} + } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h index a035905155e..c54c539c7c3 100644 --- a/src/plugins/projectexplorer/toolchain.h +++ b/src/plugins/projectexplorer/toolchain.h @@ -206,11 +206,13 @@ public: static Core::Id typeIdFromMap(const QVariantMap &data); static void autoDetectionToMap(QVariantMap &data, bool detected); - virtual QSet supportedLanguages() const = 0; + QSet supportedLanguages() const; protected: void setDisplayName(const QString &name) { m_displayName = name; } void setSupportedToolChainType(const Core::Id &supportedToolChainType); + void setSupportedLanguages(const QSet &supportedLanguages); + void setSupportsAllLanguages(bool supportsAllLanguages); class Candidate { public: @@ -228,6 +230,8 @@ protected: private: QString m_displayName; Core::Id m_supportedToolChainType; + QSet m_supportedLanguages; + bool m_supportsAllLanguages = false; }; } // namespace ProjectExplorer diff --git a/src/plugins/qnx/qnxtoolchain.cpp b/src/plugins/qnx/qnxtoolchain.cpp index 7c5425c63f8..d2dc1f50c45 100644 --- a/src/plugins/qnx/qnxtoolchain.cpp +++ b/src/plugins/qnx/qnxtoolchain.cpp @@ -214,6 +214,7 @@ QnxToolChainFactory::QnxToolChainFactory() { setDisplayName(tr("QCC")); setSupportedToolChainType(Constants::QNX_TOOLCHAIN_ID); + setSupportedLanguages({ProjectExplorer::Constants::CXX_LANGUAGE_ID}); } QList QnxToolChainFactory::autoDetect( @@ -227,11 +228,6 @@ QList QnxToolChainFactory::autoDetect( return tcs; } -QSet QnxToolChainFactory::supportedLanguages() const -{ - return {ProjectExplorer::Constants::CXX_LANGUAGE_ID}; -} - ToolChain *QnxToolChainFactory::restore(const QVariantMap &data) { auto tc = new QnxToolChain(ToolChain::ManualDetection); diff --git a/src/plugins/qnx/qnxtoolchain.h b/src/plugins/qnx/qnxtoolchain.h index 77e583912c8..a700f20b178 100644 --- a/src/plugins/qnx/qnxtoolchain.h +++ b/src/plugins/qnx/qnxtoolchain.h @@ -76,8 +76,6 @@ public: QList autoDetect( const QList &alreadyKnown) override; - QSet supportedLanguages() const override; - ProjectExplorer::ToolChain *restore(const QVariantMap &data) override; bool canCreate() override;