ProjectExplorer: Replace ToolChainFactory::supportedLanguange

... by a member-based approach.

Change-Id: I5c7fef196df6c37fd26c60a58c774426eca562a0
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-05-08 15:36:57 +02:00
parent a3790cc059
commit 881b59c36e
22 changed files with 39 additions and 84 deletions

View File

@@ -155,11 +155,7 @@ AndroidToolChainFactory::AndroidToolChainFactory()
{ {
setDisplayName(tr("Android Clang")); setDisplayName(tr("Android Clang"));
setSupportedToolChainType(Constants::ANDROID_TOOLCHAIN_ID); setSupportedToolChainType(Constants::ANDROID_TOOLCHAIN_ID);
} setSupportedLanguages({ProjectExplorer::Constants::CXX_LANGUAGE_ID});
QSet<Core::Id> Android::Internal::AndroidToolChainFactory::supportedLanguages() const
{
return {ProjectExplorer::Constants::CXX_LANGUAGE_ID};
} }
ToolChainList AndroidToolChainFactory::autoDetect(CToolChainList &alreadyKnown) ToolChainList AndroidToolChainFactory::autoDetect(CToolChainList &alreadyKnown)

View File

@@ -64,7 +64,6 @@ class AndroidToolChainFactory : public ProjectExplorer::ToolChainFactory
public: public:
AndroidToolChainFactory(); AndroidToolChainFactory();
QSet<Core::Id> supportedLanguages() const override;
ToolChainList autoDetect(CToolChainList &alreadyKnown) override; ToolChainList autoDetect(CToolChainList &alreadyKnown) override;
ProjectExplorer::ToolChain *restore(const QVariantMap &data) override; ProjectExplorer::ToolChain *restore(const QVariantMap &data) override;

View File

@@ -400,12 +400,8 @@ IarToolChainFactory::IarToolChainFactory()
{ {
setDisplayName(tr("IAREW")); setDisplayName(tr("IAREW"));
setSupportedToolChainType(Constants::IAREW_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::IAREW_TOOLCHAIN_TYPEID);
} setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID,
ProjectExplorer::Constants::CXX_LANGUAGE_ID});
QSet<Core::Id> IarToolChainFactory::supportedLanguages() const
{
return {ProjectExplorer::Constants::C_LANGUAGE_ID,
ProjectExplorer::Constants::CXX_LANGUAGE_ID};
} }
QList<ToolChain *> IarToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> IarToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)

View File

@@ -107,7 +107,6 @@ class IarToolChainFactory final : public ProjectExplorer::ToolChainFactory
public: public:
explicit IarToolChainFactory(); explicit IarToolChainFactory();
QSet<Core::Id> supportedLanguages() const final;
QList<ProjectExplorer::ToolChain *> autoDetect( QList<ProjectExplorer::ToolChain *> autoDetect(
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final; const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final;

View File

@@ -410,12 +410,8 @@ KeilToolchainFactory::KeilToolchainFactory()
{ {
setDisplayName(tr("KEIL")); setDisplayName(tr("KEIL"));
setSupportedToolChainType(Constants::KEIL_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::KEIL_TOOLCHAIN_TYPEID);
} setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID,
ProjectExplorer::Constants::CXX_LANGUAGE_ID});
QSet<Core::Id> KeilToolchainFactory::supportedLanguages() const
{
return {ProjectExplorer::Constants::C_LANGUAGE_ID,
ProjectExplorer::Constants::CXX_LANGUAGE_ID};
} }
QList<ToolChain *> KeilToolchainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> KeilToolchainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)

View File

@@ -107,7 +107,6 @@ class KeilToolchainFactory final : public ProjectExplorer::ToolChainFactory
public: public:
explicit KeilToolchainFactory(); explicit KeilToolchainFactory();
QSet<Core::Id> supportedLanguages() const final;
QList<ProjectExplorer::ToolChain *> autoDetect( QList<ProjectExplorer::ToolChain *> autoDetect(
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final; const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final;

View File

@@ -395,11 +395,7 @@ SdccToolChainFactory::SdccToolChainFactory()
{ {
setDisplayName(tr("SDCC")); setDisplayName(tr("SDCC"));
setSupportedToolChainType(Constants::SDCC_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::SDCC_TOOLCHAIN_TYPEID);
} setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID});
QSet<Core::Id> SdccToolChainFactory::supportedLanguages() const
{
return {ProjectExplorer::Constants::C_LANGUAGE_ID};
} }
QList<ToolChain *> SdccToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> SdccToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)

View File

@@ -107,7 +107,6 @@ class SdccToolChainFactory final : public ProjectExplorer::ToolChainFactory
public: public:
explicit SdccToolChainFactory(); explicit SdccToolChainFactory();
QSet<Core::Id> supportedLanguages() const final;
QList<ProjectExplorer::ToolChain *> autoDetect( QList<ProjectExplorer::ToolChain *> autoDetect(
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final; const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final;

View File

@@ -597,12 +597,10 @@ static ClangToolChain *createToolChain(const XcodePlatform &platform,
return toolChain; return toolChain;
} }
QSet<Core::Id> IosToolChainFactory::supportedLanguages() const IosToolChainFactory::IosToolChainFactory()
{ {
return { setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID,
ProjectExplorer::Constants::C_LANGUAGE_ID, ProjectExplorer::Constants::CXX_LANGUAGE_ID});
ProjectExplorer::Constants::CXX_LANGUAGE_ID
};
} }
QList<ToolChain *> IosToolChainFactory::autoDetect(const QList<ToolChain *> &existingToolChains) QList<ToolChain *> IosToolChainFactory::autoDetect(const QList<ToolChain *> &existingToolChains)

View File

@@ -98,7 +98,8 @@ class IosToolChainFactory : public ProjectExplorer::ToolChainFactory
Q_OBJECT Q_OBJECT
public: public:
QSet<Core::Id> supportedLanguages() const override; IosToolChainFactory();
QList<ProjectExplorer::ToolChain *> autoDetect(const QList<ProjectExplorer::ToolChain *> &existingToolChains) override; QList<ProjectExplorer::ToolChain *> autoDetect(const QList<ProjectExplorer::ToolChain *> &existingToolChains) override;
}; };

View File

@@ -44,6 +44,7 @@ NimToolChainFactory::NimToolChainFactory()
{ {
setDisplayName(tr("Nim")); setDisplayName(tr("Nim"));
setSupportedToolChainType(Constants::C_NIMTOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::C_NIMTOOLCHAIN_TYPEID);
setSupportedLanguages({Constants::C_NIMLANGUAGE_ID});
} }
bool NimToolChainFactory::canCreate() bool NimToolChainFactory::canCreate()
@@ -69,11 +70,6 @@ ToolChain *NimToolChainFactory::restore(const QVariantMap &data)
return nullptr; return nullptr;
} }
QSet<Core::Id> NimToolChainFactory::supportedLanguages() const
{
return {Constants::C_NIMLANGUAGE_ID};
}
QList<ToolChain *> NimToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> NimToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)
{ {
QList<ToolChain *> result; QList<ToolChain *> result;

View File

@@ -44,7 +44,6 @@ public:
bool canCreate() final; bool canCreate() final;
ProjectExplorer::ToolChain *create(Core::Id l) final; ProjectExplorer::ToolChain *create(Core::Id l) final;
ProjectExplorer::ToolChain *restore(const QVariantMap &data) final; ProjectExplorer::ToolChain *restore(const QVariantMap &data) final;
QSet<Core::Id> supportedLanguages() const 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

@@ -426,11 +426,7 @@ CustomToolChainFactory::CustomToolChainFactory()
{ {
setDisplayName(tr("Custom")); setDisplayName(tr("Custom"));
setSupportedToolChainType(Constants::CUSTOM_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::CUSTOM_TOOLCHAIN_TYPEID);
} setSupportsAllLanguages(true);
QSet<Core::Id> CustomToolChainFactory::supportedLanguages() const
{
return ToolChainManager::allLanguages();
} }
bool CustomToolChainFactory::canCreate() bool CustomToolChainFactory::canCreate()

View File

@@ -144,7 +144,6 @@ class CustomToolChainFactory : public ToolChainFactory
public: public:
CustomToolChainFactory(); CustomToolChainFactory();
QSet<Core::Id> supportedLanguages() const override;
bool canCreate() override; bool canCreate() override;
ToolChain *create(Core::Id language) override; ToolChain *create(Core::Id language) override;

View File

@@ -876,11 +876,7 @@ GccToolChainFactory::GccToolChainFactory()
{ {
setDisplayName(tr("GCC")); setDisplayName(tr("GCC"));
setSupportedToolChainType(Constants::GCC_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::GCC_TOOLCHAIN_TYPEID);
} setSupportedLanguages({Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID});
QSet<Core::Id> GccToolChainFactory::supportedLanguages() const
{
return {Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID};
} }
bool GccToolChainFactory::canCreate() bool GccToolChainFactory::canCreate()
@@ -1495,12 +1491,7 @@ ClangToolChainFactory::ClangToolChainFactory()
{ {
setDisplayName(tr("Clang")); setDisplayName(tr("Clang"));
setSupportedToolChainType(Constants::CLANG_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::CLANG_TOOLCHAIN_TYPEID);
} setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID});
QSet<Core::Id> ClangToolChainFactory::supportedLanguages() const
{
return {Constants::CXX_LANGUAGE_ID,
Constants::C_LANGUAGE_ID};
} }
QList<ToolChain *> ClangToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> ClangToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)
@@ -1709,12 +1700,7 @@ MingwToolChainFactory::MingwToolChainFactory()
{ {
setDisplayName(tr("MinGW")); setDisplayName(tr("MinGW"));
setSupportedToolChainType(Constants::MINGW_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::MINGW_TOOLCHAIN_TYPEID);
} setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID});
QSet<Core::Id> MingwToolChainFactory::supportedLanguages() const
{
return {Constants::CXX_LANGUAGE_ID,
Constants::C_LANGUAGE_ID};
} }
QList<ToolChain *> MingwToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> MingwToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)
@@ -1809,11 +1795,7 @@ LinuxIccToolChainFactory::LinuxIccToolChainFactory()
{ {
setDisplayName(tr("Linux ICC")); setDisplayName(tr("Linux ICC"));
setSupportedToolChainType(Constants::LINUXICC_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::LINUXICC_TOOLCHAIN_TYPEID);
} setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID});
QSet<Core::Id> LinuxIccToolChainFactory::supportedLanguages() const
{
return {Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID};
} }
QList<ToolChain *> LinuxIccToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) QList<ToolChain *> LinuxIccToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)

View File

@@ -53,7 +53,6 @@ class GccToolChainFactory : public ToolChainFactory
public: public:
GccToolChainFactory(); GccToolChainFactory();
QSet<Core::Id> supportedLanguages() const override;
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;
@@ -146,7 +145,6 @@ class ClangToolChainFactory : public GccToolChainFactory
public: public:
ClangToolChainFactory(); ClangToolChainFactory();
QSet<Core::Id> supportedLanguages() const override;
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) final; QList<ToolChain *> autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final;
@@ -165,7 +163,6 @@ class MingwToolChainFactory : public GccToolChainFactory
public: public:
MingwToolChainFactory(); MingwToolChainFactory();
QSet<Core::Id> supportedLanguages() const override;
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) final; QList<ToolChain *> autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final;
@@ -184,7 +181,6 @@ class LinuxIccToolChainFactory : public GccToolChainFactory
public: public:
LinuxIccToolChainFactory(); LinuxIccToolChainFactory();
QSet<Core::Id> supportedLanguages() const override;
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) final; QList<ToolChain *> autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final;

View File

@@ -1641,11 +1641,7 @@ MsvcToolChainFactory::MsvcToolChainFactory()
{ {
setDisplayName(tr("MSVC")); setDisplayName(tr("MSVC"));
setSupportedToolChainType(Constants::MSVC_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::MSVC_TOOLCHAIN_TYPEID);
} setSupportedLanguages({Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID});
QSet<Core::Id> MsvcToolChainFactory::supportedLanguages() const
{
return {Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID};
} }
QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath, QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath,

View File

@@ -224,7 +224,6 @@ class MsvcToolChainFactory : public ToolChainFactory
public: public:
MsvcToolChainFactory(); MsvcToolChainFactory();
QSet<Core::Id> supportedLanguages() const override;
QList<ToolChain *> autoDetect(const QList<ToolChain *> &alreadyKnown) override; QList<ToolChain *> autoDetect(const QList<ToolChain *> &alreadyKnown) override;

View File

@@ -477,6 +477,11 @@ void ToolChainFactory::autoDetectionToMap(QVariantMap &data, bool detected)
data.insert(QLatin1String(AUTODETECT_KEY), detected); data.insert(QLatin1String(AUTODETECT_KEY), detected);
} }
QSet<Core::Id> ToolChainFactory::supportedLanguages() const
{
return m_supportsAllLanguages ? ToolChainManager::allLanguages() : m_supportedLanguages;
}
Core::Id ToolChainFactory::supportedToolChainType() const Core::Id ToolChainFactory::supportedToolChainType() const
{ {
return m_supportedToolChainType; return m_supportedToolChainType;
@@ -487,4 +492,14 @@ void ToolChainFactory::setSupportedToolChainType(const Core::Id &supportedToolCh
m_supportedToolChainType = supportedToolChain; m_supportedToolChainType = supportedToolChain;
} }
void ToolChainFactory::setSupportedLanguages(const QSet<Core::Id> &supportedLanguages)
{
m_supportedLanguages = supportedLanguages;
}
void ToolChainFactory::setSupportsAllLanguages(bool supportsAllLanguages)
{
m_supportsAllLanguages = supportsAllLanguages;
}
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -206,11 +206,13 @@ public:
static Core::Id typeIdFromMap(const QVariantMap &data); static Core::Id typeIdFromMap(const QVariantMap &data);
static void autoDetectionToMap(QVariantMap &data, bool detected); static void autoDetectionToMap(QVariantMap &data, bool detected);
virtual QSet<Core::Id> supportedLanguages() const = 0; QSet<Core::Id> supportedLanguages() const;
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);
void setSupportedLanguages(const QSet<Core::Id> &supportedLanguages);
void setSupportsAllLanguages(bool supportsAllLanguages);
class Candidate { class Candidate {
public: public:
@@ -228,6 +230,8 @@ protected:
private: private:
QString m_displayName; QString m_displayName;
Core::Id m_supportedToolChainType; Core::Id m_supportedToolChainType;
QSet<Core::Id> m_supportedLanguages;
bool m_supportsAllLanguages = false;
}; };
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -214,6 +214,7 @@ QnxToolChainFactory::QnxToolChainFactory()
{ {
setDisplayName(tr("QCC")); setDisplayName(tr("QCC"));
setSupportedToolChainType(Constants::QNX_TOOLCHAIN_ID); setSupportedToolChainType(Constants::QNX_TOOLCHAIN_ID);
setSupportedLanguages({ProjectExplorer::Constants::CXX_LANGUAGE_ID});
} }
QList<ProjectExplorer::ToolChain *> QnxToolChainFactory::autoDetect( QList<ProjectExplorer::ToolChain *> QnxToolChainFactory::autoDetect(
@@ -227,11 +228,6 @@ QList<ProjectExplorer::ToolChain *> QnxToolChainFactory::autoDetect(
return tcs; return tcs;
} }
QSet<Core::Id> QnxToolChainFactory::supportedLanguages() const
{
return {ProjectExplorer::Constants::CXX_LANGUAGE_ID};
}
ToolChain *QnxToolChainFactory::restore(const QVariantMap &data) ToolChain *QnxToolChainFactory::restore(const QVariantMap &data)
{ {
auto tc = new QnxToolChain(ToolChain::ManualDetection); auto tc = new QnxToolChain(ToolChain::ManualDetection);

View File

@@ -76,8 +76,6 @@ public:
QList<ProjectExplorer::ToolChain *> autoDetect( QList<ProjectExplorer::ToolChain *> autoDetect(
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) override; const QList<ProjectExplorer::ToolChain *> &alreadyKnown) override;
QSet<Core::Id> supportedLanguages() const override;
ProjectExplorer::ToolChain *restore(const QVariantMap &data) override; ProjectExplorer::ToolChain *restore(const QVariantMap &data) override;
bool canCreate() override; bool canCreate() override;