ProjectExplorer: Use functor for ToolChain creation in ToolChainFactory

Change-Id: I935eecab2f16618a2a5b34d31a79672db82c3398
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-05-10 17:35:04 +02:00
parent 175018abe7
commit 728010a705
20 changed files with 37 additions and 195 deletions

View File

@@ -445,11 +445,21 @@ bool ToolChainFactory::canCreate()
ToolChain *ToolChainFactory::create()
{
return nullptr;
return m_toolchainConstructor ? m_toolchainConstructor() : nullptr;
}
ToolChain *ToolChainFactory::restore(const QVariantMap &)
ToolChain *ToolChainFactory::restore(const QVariantMap &data)
{
if (!m_toolchainConstructor)
return nullptr;
ToolChain *tc = m_toolchainConstructor();
QTC_ASSERT(tc, return nullptr);
if (tc->fromMap(data))
return tc;
delete tc;
return nullptr;
}
@@ -501,4 +511,10 @@ void ToolChainFactory::setSupportsAllLanguages(bool supportsAllLanguages)
m_supportsAllLanguages = supportsAllLanguages;
}
void ToolChainFactory::setToolchainConstructor
(const std::function<ToolChain *()> &toolchainContructor)
{
m_toolchainConstructor = toolchainContructor;
}
} // namespace ProjectExplorer