ProjectExplorer: Use a member for ToolChainFactory::canCreate

... in all but one case (ClangCL, which is special).

Change-Id: I6429f2f37b18524c29b6be78801ea0e5517cad4c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-05-10 18:22:58 +02:00
parent 086eb4d598
commit b997214abb
18 changed files with 21 additions and 55 deletions

View File

@@ -402,6 +402,7 @@ IarToolChainFactory::IarToolChainFactory()
setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID, setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID,
ProjectExplorer::Constants::CXX_LANGUAGE_ID}); ProjectExplorer::Constants::CXX_LANGUAGE_ID});
setToolchainConstructor([] { return new IarToolChain; }); setToolchainConstructor([] { return new IarToolChain; });
setUserCreatable(true);
} }
QList<ToolChain *> IarToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> IarToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)
@@ -460,11 +461,6 @@ QList<ToolChain *> IarToolChainFactory::autoDetect(const QList<ToolChain *> &alr
return autoDetectToolchains(candidates, alreadyKnown); return autoDetectToolchains(candidates, alreadyKnown);
} }
bool IarToolChainFactory::canCreate()
{
return true;
}
QList<ToolChain *> IarToolChainFactory::autoDetectToolchains( QList<ToolChain *> IarToolChainFactory::autoDetectToolchains(
const Candidates &candidates, const QList<ToolChain *> &alreadyKnown) const const Candidates &candidates, const QList<ToolChain *> &alreadyKnown) const
{ {

View File

@@ -110,8 +110,6 @@ public:
QList<ProjectExplorer::ToolChain *> autoDetect( QList<ProjectExplorer::ToolChain *> autoDetect(
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final; const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final;
bool canCreate() final;
private: private:
QList<ProjectExplorer::ToolChain *> autoDetectToolchains(const Candidates &candidates, QList<ProjectExplorer::ToolChain *> autoDetectToolchains(const Candidates &candidates,
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) const; const QList<ProjectExplorer::ToolChain *> &alreadyKnown) const;

View File

@@ -407,6 +407,7 @@ KeilToolchainFactory::KeilToolchainFactory()
setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID, setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID,
ProjectExplorer::Constants::CXX_LANGUAGE_ID}); ProjectExplorer::Constants::CXX_LANGUAGE_ID});
setToolchainConstructor([] { return new KeilToolchain; }); setToolchainConstructor([] { return new KeilToolchain; });
setUserCreatable(true);
} }
QList<ToolChain *> KeilToolchainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> KeilToolchainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)
@@ -459,11 +460,6 @@ QList<ToolChain *> KeilToolchainFactory::autoDetect(const QList<ToolChain *> &al
return autoDetectToolchains(candidates, alreadyKnown); return autoDetectToolchains(candidates, alreadyKnown);
} }
bool KeilToolchainFactory::canCreate()
{
return true;
}
QList<ToolChain *> KeilToolchainFactory::autoDetectToolchains( QList<ToolChain *> KeilToolchainFactory::autoDetectToolchains(
const Candidates &candidates, const QList<ToolChain *> &alreadyKnown) const const Candidates &candidates, const QList<ToolChain *> &alreadyKnown) const
{ {

View File

@@ -110,8 +110,6 @@ public:
QList<ProjectExplorer::ToolChain *> autoDetect( QList<ProjectExplorer::ToolChain *> autoDetect(
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final; const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final;
bool canCreate() final;
private: private:
QList<ProjectExplorer::ToolChain *> autoDetectToolchains(const Candidates &candidates, QList<ProjectExplorer::ToolChain *> autoDetectToolchains(const Candidates &candidates,
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) const; const QList<ProjectExplorer::ToolChain *> &alreadyKnown) const;

View File

@@ -391,6 +391,7 @@ SdccToolChainFactory::SdccToolChainFactory()
setSupportedToolChainType(Constants::SDCC_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::SDCC_TOOLCHAIN_TYPEID);
setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID}); setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID});
setToolchainConstructor([] { return new SdccToolChain; }); setToolchainConstructor([] { return new SdccToolChain; });
setUserCreatable(true);
} }
QList<ToolChain *> SdccToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> SdccToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)
@@ -436,11 +437,6 @@ QList<ToolChain *> SdccToolChainFactory::autoDetect(const QList<ToolChain *> &al
return autoDetectToolchains(candidates, alreadyKnown); return autoDetectToolchains(candidates, alreadyKnown);
} }
bool SdccToolChainFactory::canCreate()
{
return true;
}
QList<ToolChain *> SdccToolChainFactory::autoDetectToolchains( QList<ToolChain *> SdccToolChainFactory::autoDetectToolchains(
const Candidates &candidates, const QList<ToolChain *> &alreadyKnown) const const Candidates &candidates, const QList<ToolChain *> &alreadyKnown) const
{ {

View File

@@ -105,13 +105,11 @@ class SdccToolChainFactory final : public ProjectExplorer::ToolChainFactory
Q_OBJECT Q_OBJECT
public: public:
explicit SdccToolChainFactory(); SdccToolChainFactory();
QList<ProjectExplorer::ToolChain *> autoDetect( QList<ProjectExplorer::ToolChain *> autoDetect(
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final; const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final;
bool canCreate() final;
private: private:
QList<ProjectExplorer::ToolChain *> autoDetectToolchains(const Candidates &candidates, QList<ProjectExplorer::ToolChain *> autoDetectToolchains(const Candidates &candidates,
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) const; const QList<ProjectExplorer::ToolChain *> &alreadyKnown) const;

View File

@@ -46,11 +46,7 @@ NimToolChainFactory::NimToolChainFactory()
setSupportedToolChainType(Constants::C_NIMTOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::C_NIMTOOLCHAIN_TYPEID);
setSupportedLanguages({Constants::C_NIMLANGUAGE_ID}); setSupportedLanguages({Constants::C_NIMLANGUAGE_ID});
setToolchainConstructor([] { return new NimToolChain; }); setToolchainConstructor([] { return new NimToolChain; });
} setUserCreatable(true);
bool NimToolChainFactory::canCreate()
{
return true;
} }
QList<ToolChain *> NimToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> NimToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)

View File

@@ -41,8 +41,6 @@ class NimToolChainFactory : public ProjectExplorer::ToolChainFactory
public: public:
NimToolChainFactory(); NimToolChainFactory();
bool canCreate() final;
QList<ProjectExplorer::ToolChain *> autoDetect(const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final; QList<ProjectExplorer::ToolChain *> autoDetect(const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final;
QList<ProjectExplorer::ToolChain *> autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final; QList<ProjectExplorer::ToolChain *> autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final;
}; };

View File

@@ -422,11 +422,7 @@ CustomToolChainFactory::CustomToolChainFactory()
setSupportedToolChainType(Constants::CUSTOM_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::CUSTOM_TOOLCHAIN_TYPEID);
setSupportsAllLanguages(true); setSupportsAllLanguages(true);
setToolchainConstructor([] { return new CustomToolChain; }); setToolchainConstructor([] { return new CustomToolChain; });
} setUserCreatable(true);
bool CustomToolChainFactory::canCreate()
{
return true;
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------

View File

@@ -143,8 +143,6 @@ class CustomToolChainFactory : public ToolChainFactory
public: public:
CustomToolChainFactory(); CustomToolChainFactory();
bool canCreate() override;
}; };
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------

View File

@@ -878,11 +878,7 @@ GccToolChainFactory::GccToolChainFactory()
setSupportedToolChainType(Constants::GCC_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::GCC_TOOLCHAIN_TYPEID);
setSupportedLanguages({Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}); setSupportedLanguages({Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID});
setToolchainConstructor([] { return new GccToolChain; }); setToolchainConstructor([] { return new GccToolChain; });
} setUserCreatable(true);
bool GccToolChainFactory::canCreate()
{
return true;
} }
QList<ToolChain *> GccToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> GccToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)

View File

@@ -57,8 +57,6 @@ public:
QList<ToolChain *> autoDetect(const QList<ToolChain *> &alreadyKnown) override; QList<ToolChain *> autoDetect(const QList<ToolChain *> &alreadyKnown) override;
QList<ToolChain *> autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) override; QList<ToolChain *> autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) override;
bool canCreate() override;
protected: protected:
enum class DetectVariants { Yes, No }; enum class DetectVariants { Yes, No };
using ToolchainChecker = std::function<bool(const ToolChain *)>; using ToolchainChecker = std::function<bool(const ToolChain *)>;

View File

@@ -1878,7 +1878,7 @@ ClangClToolChainFactory::ClangClToolChainFactory()
setToolchainConstructor([] { return new ClangClToolChain; }); setToolchainConstructor([] { return new ClangClToolChain; });
} }
bool ClangClToolChainFactory::canCreate() bool ClangClToolChainFactory::canCreate() const
{ {
return !g_availableMsvcToolchains.isEmpty(); return !g_availableMsvcToolchains.isEmpty();
} }

View File

@@ -239,7 +239,7 @@ public:
QList<ToolChain *> autoDetect(const QList<ToolChain *> &alreadyKnown) override; QList<ToolChain *> autoDetect(const QList<ToolChain *> &alreadyKnown) override;
bool canCreate() override; bool canCreate() const override;
ToolChain *create() override; ToolChain *create() override;
}; };

View File

@@ -438,9 +438,9 @@ QList<ToolChain *> ToolChainFactory::autoDetect(const Utils::FileName &compilerP
return QList<ToolChain *>(); return QList<ToolChain *>();
} }
bool ToolChainFactory::canCreate() bool ToolChainFactory::canCreate() const
{ {
return false; return m_userCreatable;
} }
ToolChain *ToolChainFactory::create() ToolChain *ToolChainFactory::create()
@@ -517,4 +517,9 @@ void ToolChainFactory::setToolchainConstructor
m_toolchainConstructor = toolchainContructor; m_toolchainConstructor = toolchainContructor;
} }
void ToolChainFactory::setUserCreatable(bool userCreatable)
{
m_userCreatable = userCreatable;
}
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -196,7 +196,7 @@ public:
virtual QList<ToolChain *> autoDetect(const QList<ToolChain *> &alreadyKnown); virtual QList<ToolChain *> autoDetect(const QList<ToolChain *> &alreadyKnown);
virtual QList<ToolChain *> autoDetect(const Utils::FileName &compilerPath, const Core::Id &language); virtual QList<ToolChain *> autoDetect(const Utils::FileName &compilerPath, const Core::Id &language);
virtual bool canCreate(); virtual bool canCreate() const;
virtual ToolChain *create(); virtual ToolChain *create();
virtual ToolChain *restore(const QVariantMap &data); virtual ToolChain *restore(const QVariantMap &data);
@@ -207,6 +207,8 @@ public:
QSet<Core::Id> supportedLanguages() const; QSet<Core::Id> supportedLanguages() const;
void setUserCreatable(bool userCreatable);
protected: protected:
void setDisplayName(const QString &name) { m_displayName = name; } void setDisplayName(const QString &name) { m_displayName = name; }
void setSupportedToolChainType(const Core::Id &supportedToolChainType); void setSupportedToolChainType(const Core::Id &supportedToolChainType);
@@ -232,6 +234,7 @@ private:
Core::Id m_supportedToolChainType; Core::Id m_supportedToolChainType;
QSet<Core::Id> m_supportedLanguages; QSet<Core::Id> m_supportedLanguages;
bool m_supportsAllLanguages = false; bool m_supportsAllLanguages = false;
bool m_userCreatable = false;
std::function<ToolChain *()> m_toolchainConstructor; std::function<ToolChain *()> m_toolchainConstructor;
}; };

View File

@@ -209,6 +209,7 @@ QnxToolChainFactory::QnxToolChainFactory()
setSupportedToolChainType(Constants::QNX_TOOLCHAIN_ID); setSupportedToolChainType(Constants::QNX_TOOLCHAIN_ID);
setSupportedLanguages({ProjectExplorer::Constants::CXX_LANGUAGE_ID}); setSupportedLanguages({ProjectExplorer::Constants::CXX_LANGUAGE_ID});
setToolchainConstructor([] { return new QnxToolChain; }); setToolchainConstructor([] { return new QnxToolChain; });
setUserCreatable(true);
} }
QList<ProjectExplorer::ToolChain *> QnxToolChainFactory::autoDetect( QList<ProjectExplorer::ToolChain *> QnxToolChainFactory::autoDetect(
@@ -222,11 +223,6 @@ QList<ProjectExplorer::ToolChain *> QnxToolChainFactory::autoDetect(
return tcs; return tcs;
} }
bool QnxToolChainFactory::canCreate()
{
return true;
}
//--------------------------------------------------------------------------------- //---------------------------------------------------------------------------------
// QnxToolChainConfigWidget // QnxToolChainConfigWidget
//--------------------------------------------------------------------------------- //---------------------------------------------------------------------------------

View File

@@ -74,8 +74,6 @@ public:
QList<ProjectExplorer::ToolChain *> autoDetect( QList<ProjectExplorer::ToolChain *> autoDetect(
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) override; const QList<ProjectExplorer::ToolChain *> &alreadyKnown) override;
bool canCreate() override;
}; };
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------