From b997214abbb352df2392ed8e6377cfefdbb8dce2 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 10 May 2019 18:22:58 +0200 Subject: ProjectExplorer: Use a member for ToolChainFactory::canCreate ... in all but one case (ClangCL, which is special). Change-Id: I6429f2f37b18524c29b6be78801ea0e5517cad4c Reviewed-by: Christian Kandeler --- src/plugins/baremetal/iarewtoolchain.cpp | 6 +----- src/plugins/baremetal/iarewtoolchain.h | 2 -- src/plugins/baremetal/keiltoolchain.cpp | 6 +----- src/plugins/baremetal/keiltoolchain.h | 2 -- src/plugins/baremetal/sdcctoolchain.cpp | 6 +----- src/plugins/baremetal/sdcctoolchain.h | 4 +--- src/plugins/nim/project/nimtoolchainfactory.cpp | 6 +----- src/plugins/nim/project/nimtoolchainfactory.h | 2 -- src/plugins/projectexplorer/customtoolchain.cpp | 6 +----- src/plugins/projectexplorer/customtoolchain.h | 2 -- src/plugins/projectexplorer/gcctoolchain.cpp | 6 +----- src/plugins/projectexplorer/gcctoolchainfactories.h | 2 -- src/plugins/projectexplorer/msvctoolchain.cpp | 2 +- src/plugins/projectexplorer/msvctoolchain.h | 2 +- src/plugins/projectexplorer/toolchain.cpp | 9 +++++++-- src/plugins/projectexplorer/toolchain.h | 5 ++++- src/plugins/qnx/qnxtoolchain.cpp | 6 +----- src/plugins/qnx/qnxtoolchain.h | 2 -- 18 files changed, 21 insertions(+), 55 deletions(-) diff --git a/src/plugins/baremetal/iarewtoolchain.cpp b/src/plugins/baremetal/iarewtoolchain.cpp index a74f1798d8..d287ef9f4e 100644 --- a/src/plugins/baremetal/iarewtoolchain.cpp +++ b/src/plugins/baremetal/iarewtoolchain.cpp @@ -402,6 +402,7 @@ IarToolChainFactory::IarToolChainFactory() setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID, ProjectExplorer::Constants::CXX_LANGUAGE_ID}); setToolchainConstructor([] { return new IarToolChain; }); + setUserCreatable(true); } QList IarToolChainFactory::autoDetect(const QList &alreadyKnown) @@ -460,11 +461,6 @@ QList IarToolChainFactory::autoDetect(const QList &alr return autoDetectToolchains(candidates, alreadyKnown); } -bool IarToolChainFactory::canCreate() -{ - return true; -} - QList IarToolChainFactory::autoDetectToolchains( const Candidates &candidates, const QList &alreadyKnown) const { diff --git a/src/plugins/baremetal/iarewtoolchain.h b/src/plugins/baremetal/iarewtoolchain.h index 569f012b43..810bfbd0b3 100644 --- a/src/plugins/baremetal/iarewtoolchain.h +++ b/src/plugins/baremetal/iarewtoolchain.h @@ -110,8 +110,6 @@ public: QList autoDetect( const QList &alreadyKnown) final; - bool canCreate() final; - private: QList autoDetectToolchains(const Candidates &candidates, const QList &alreadyKnown) const; diff --git a/src/plugins/baremetal/keiltoolchain.cpp b/src/plugins/baremetal/keiltoolchain.cpp index fbdd600281..29375ac440 100644 --- a/src/plugins/baremetal/keiltoolchain.cpp +++ b/src/plugins/baremetal/keiltoolchain.cpp @@ -407,6 +407,7 @@ KeilToolchainFactory::KeilToolchainFactory() setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID, ProjectExplorer::Constants::CXX_LANGUAGE_ID}); setToolchainConstructor([] { return new KeilToolchain; }); + setUserCreatable(true); } QList KeilToolchainFactory::autoDetect(const QList &alreadyKnown) @@ -459,11 +460,6 @@ QList KeilToolchainFactory::autoDetect(const QList &al return autoDetectToolchains(candidates, alreadyKnown); } -bool KeilToolchainFactory::canCreate() -{ - return true; -} - QList KeilToolchainFactory::autoDetectToolchains( const Candidates &candidates, const QList &alreadyKnown) const { diff --git a/src/plugins/baremetal/keiltoolchain.h b/src/plugins/baremetal/keiltoolchain.h index 95a968286e..55c523f1d4 100644 --- a/src/plugins/baremetal/keiltoolchain.h +++ b/src/plugins/baremetal/keiltoolchain.h @@ -110,8 +110,6 @@ public: QList autoDetect( const QList &alreadyKnown) final; - bool canCreate() final; - private: QList autoDetectToolchains(const Candidates &candidates, const QList &alreadyKnown) const; diff --git a/src/plugins/baremetal/sdcctoolchain.cpp b/src/plugins/baremetal/sdcctoolchain.cpp index b95c218298..dd29073284 100644 --- a/src/plugins/baremetal/sdcctoolchain.cpp +++ b/src/plugins/baremetal/sdcctoolchain.cpp @@ -391,6 +391,7 @@ SdccToolChainFactory::SdccToolChainFactory() setSupportedToolChainType(Constants::SDCC_TOOLCHAIN_TYPEID); setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID}); setToolchainConstructor([] { return new SdccToolChain; }); + setUserCreatable(true); } QList SdccToolChainFactory::autoDetect(const QList &alreadyKnown) @@ -436,11 +437,6 @@ QList SdccToolChainFactory::autoDetect(const QList &al return autoDetectToolchains(candidates, alreadyKnown); } -bool SdccToolChainFactory::canCreate() -{ - return true; -} - QList SdccToolChainFactory::autoDetectToolchains( const Candidates &candidates, const QList &alreadyKnown) const { diff --git a/src/plugins/baremetal/sdcctoolchain.h b/src/plugins/baremetal/sdcctoolchain.h index 787470bf9d..711207d209 100644 --- a/src/plugins/baremetal/sdcctoolchain.h +++ b/src/plugins/baremetal/sdcctoolchain.h @@ -105,13 +105,11 @@ class SdccToolChainFactory final : public ProjectExplorer::ToolChainFactory Q_OBJECT public: - explicit SdccToolChainFactory(); + SdccToolChainFactory(); QList autoDetect( const QList &alreadyKnown) final; - bool canCreate() final; - private: QList autoDetectToolchains(const Candidates &candidates, const QList &alreadyKnown) const; diff --git a/src/plugins/nim/project/nimtoolchainfactory.cpp b/src/plugins/nim/project/nimtoolchainfactory.cpp index b59f83303b..953ad569b1 100644 --- a/src/plugins/nim/project/nimtoolchainfactory.cpp +++ b/src/plugins/nim/project/nimtoolchainfactory.cpp @@ -46,11 +46,7 @@ NimToolChainFactory::NimToolChainFactory() setSupportedToolChainType(Constants::C_NIMTOOLCHAIN_TYPEID); setSupportedLanguages({Constants::C_NIMLANGUAGE_ID}); setToolchainConstructor([] { return new NimToolChain; }); -} - -bool NimToolChainFactory::canCreate() -{ - return true; + setUserCreatable(true); } QList NimToolChainFactory::autoDetect(const QList &alreadyKnown) diff --git a/src/plugins/nim/project/nimtoolchainfactory.h b/src/plugins/nim/project/nimtoolchainfactory.h index ab7a8584ec..ed40bfeb62 100644 --- a/src/plugins/nim/project/nimtoolchainfactory.h +++ b/src/plugins/nim/project/nimtoolchainfactory.h @@ -41,8 +41,6 @@ class NimToolChainFactory : public ProjectExplorer::ToolChainFactory public: NimToolChainFactory(); - bool canCreate() 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 a46702e38d..199e1faca1 100644 --- a/src/plugins/projectexplorer/customtoolchain.cpp +++ b/src/plugins/projectexplorer/customtoolchain.cpp @@ -422,11 +422,7 @@ CustomToolChainFactory::CustomToolChainFactory() setSupportedToolChainType(Constants::CUSTOM_TOOLCHAIN_TYPEID); setSupportsAllLanguages(true); setToolchainConstructor([] { return new CustomToolChain; }); -} - -bool CustomToolChainFactory::canCreate() -{ - return true; + setUserCreatable(true); } // -------------------------------------------------------------------------- diff --git a/src/plugins/projectexplorer/customtoolchain.h b/src/plugins/projectexplorer/customtoolchain.h index 0fda88c5b1..ef403851a0 100644 --- a/src/plugins/projectexplorer/customtoolchain.h +++ b/src/plugins/projectexplorer/customtoolchain.h @@ -143,8 +143,6 @@ class CustomToolChainFactory : public ToolChainFactory public: CustomToolChainFactory(); - - bool canCreate() override; }; // -------------------------------------------------------------------------- diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index a49f79484a..bfb179bdfa 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -878,11 +878,7 @@ GccToolChainFactory::GccToolChainFactory() setSupportedToolChainType(Constants::GCC_TOOLCHAIN_TYPEID); setSupportedLanguages({Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}); setToolchainConstructor([] { return new GccToolChain; }); -} - -bool GccToolChainFactory::canCreate() -{ - return true; + setUserCreatable(true); } QList GccToolChainFactory::autoDetect(const QList &alreadyKnown) diff --git a/src/plugins/projectexplorer/gcctoolchainfactories.h b/src/plugins/projectexplorer/gcctoolchainfactories.h index 1c917da035..90d76ea734 100644 --- a/src/plugins/projectexplorer/gcctoolchainfactories.h +++ b/src/plugins/projectexplorer/gcctoolchainfactories.h @@ -57,8 +57,6 @@ public: QList autoDetect(const QList &alreadyKnown) override; QList autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) override; - bool canCreate() override; - protected: enum class DetectVariants { Yes, No }; using ToolchainChecker = std::function; diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index fdd617d9d6..ce40d4ea91 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -1878,7 +1878,7 @@ ClangClToolChainFactory::ClangClToolChainFactory() setToolchainConstructor([] { return new ClangClToolChain; }); } -bool ClangClToolChainFactory::canCreate() +bool ClangClToolChainFactory::canCreate() const { return !g_availableMsvcToolchains.isEmpty(); } diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index bf3ecdbcec..03f7a2fc47 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -239,7 +239,7 @@ public: QList autoDetect(const QList &alreadyKnown) override; - bool canCreate() override; + bool canCreate() const override; ToolChain *create() override; }; diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index 47b33fe4da..fd81769cb4 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -438,9 +438,9 @@ QList ToolChainFactory::autoDetect(const Utils::FileName &compilerP return QList(); } -bool ToolChainFactory::canCreate() +bool ToolChainFactory::canCreate() const { - return false; + return m_userCreatable; } ToolChain *ToolChainFactory::create() @@ -517,4 +517,9 @@ void ToolChainFactory::setToolchainConstructor m_toolchainConstructor = toolchainContructor; } +void ToolChainFactory::setUserCreatable(bool userCreatable) +{ + m_userCreatable = userCreatable; +} + } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h index d8ac0458fb..e4eedcd980 100644 --- a/src/plugins/projectexplorer/toolchain.h +++ b/src/plugins/projectexplorer/toolchain.h @@ -196,7 +196,7 @@ public: virtual QList autoDetect(const QList &alreadyKnown); virtual QList autoDetect(const Utils::FileName &compilerPath, const Core::Id &language); - virtual bool canCreate(); + virtual bool canCreate() const; virtual ToolChain *create(); virtual ToolChain *restore(const QVariantMap &data); @@ -207,6 +207,8 @@ public: QSet supportedLanguages() const; + void setUserCreatable(bool userCreatable); + protected: void setDisplayName(const QString &name) { m_displayName = name; } void setSupportedToolChainType(const Core::Id &supportedToolChainType); @@ -232,6 +234,7 @@ private: Core::Id m_supportedToolChainType; QSet m_supportedLanguages; bool m_supportsAllLanguages = false; + bool m_userCreatable = false; std::function m_toolchainConstructor; }; diff --git a/src/plugins/qnx/qnxtoolchain.cpp b/src/plugins/qnx/qnxtoolchain.cpp index 0adeec6136..d1880da40f 100644 --- a/src/plugins/qnx/qnxtoolchain.cpp +++ b/src/plugins/qnx/qnxtoolchain.cpp @@ -209,6 +209,7 @@ QnxToolChainFactory::QnxToolChainFactory() setSupportedToolChainType(Constants::QNX_TOOLCHAIN_ID); setSupportedLanguages({ProjectExplorer::Constants::CXX_LANGUAGE_ID}); setToolchainConstructor([] { return new QnxToolChain; }); + setUserCreatable(true); } QList QnxToolChainFactory::autoDetect( @@ -222,11 +223,6 @@ QList QnxToolChainFactory::autoDetect( return tcs; } -bool QnxToolChainFactory::canCreate() -{ - return true; -} - //--------------------------------------------------------------------------------- // QnxToolChainConfigWidget //--------------------------------------------------------------------------------- diff --git a/src/plugins/qnx/qnxtoolchain.h b/src/plugins/qnx/qnxtoolchain.h index b63c883a11..074c1ff6cd 100644 --- a/src/plugins/qnx/qnxtoolchain.h +++ b/src/plugins/qnx/qnxtoolchain.h @@ -74,8 +74,6 @@ public: QList autoDetect( const QList &alreadyKnown) override; - - bool canCreate() override; }; //---------------------------------------------------------------------------- -- cgit v1.2.1