forked from qt-creator/qt-creator
Introduce static_container_cast
Casting all elements of a container, similar to qobject_container_cast. Change-Id: Ib455fe8c7fa0d4acda7e29685c3100638a0152f8 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -626,6 +626,20 @@ Container<T> qobject_container_cast(const Container<Base> &container)
|
||||
return result;
|
||||
}
|
||||
|
||||
//////////////////
|
||||
// static_container_cast
|
||||
/////////////////
|
||||
template <class T, template<typename> class Container, typename Base>
|
||||
Container<T> static_container_cast(const Container<Base> &container)
|
||||
{
|
||||
Container<T> result;
|
||||
reserve(result, container.size());
|
||||
auto ins = inserter(result);
|
||||
for (Base val : container)
|
||||
ins = static_cast<T>(val);
|
||||
return result;
|
||||
}
|
||||
|
||||
//////////////////
|
||||
// sort
|
||||
/////////////////
|
||||
|
||||
@@ -1032,9 +1032,7 @@ void AndroidConfigurations::updateAutomaticKitList()
|
||||
&& tc->typeId() == Constants::ANDROID_TOOLCHAIN_ID
|
||||
&& !static_cast<const AndroidToolChain *>(tc)->isSecondaryToolChain();
|
||||
});
|
||||
const QList<AndroidToolChain *> toolchains = Utils::transform(tmp, [](ToolChain *tc) {
|
||||
return static_cast<AndroidToolChain *>(tc);
|
||||
});
|
||||
const auto toolchains = Utils::static_container_cast<AndroidToolChain *>(tmp);
|
||||
for (AndroidToolChain *tc : toolchains) {
|
||||
if (tc->isSecondaryToolChain() || tc->language() != Core::Id(ProjectExplorer::Constants::CXX_LANGUAGE_ID))
|
||||
continue;
|
||||
|
||||
@@ -313,7 +313,7 @@ SdkPlatformList AndroidSdkManager::installedSdkPlatforms()
|
||||
{
|
||||
AndroidSdkPackageList list = m_d->filteredPackages(AndroidSdkPackage::Installed,
|
||||
AndroidSdkPackage::SdkPlatformPackage);
|
||||
return Utils::qobject_container_cast<SdkPlatform *>(list);
|
||||
return Utils::static_container_cast<SdkPlatform *>(list);
|
||||
}
|
||||
|
||||
const AndroidSdkPackageList &AndroidSdkManager::allSdkPackages()
|
||||
|
||||
@@ -596,7 +596,7 @@ QList<ToolChain *> IosToolChainFactory::autoDetect(const QList<ToolChain *> &exi
|
||||
{
|
||||
QList<ClangToolChain *> existingClangToolChains = clangToolChains(existingToolChains);
|
||||
const QList<XcodePlatform> platforms = XcodeProbe::detectPlatforms().values();
|
||||
QList<ClangToolChain *> toolChains;
|
||||
QList<ToolChain *> toolChains;
|
||||
toolChains.reserve(platforms.size());
|
||||
foreach (const XcodePlatform &platform, platforms) {
|
||||
for (const XcodePlatform::ToolchainTarget &target : platform.targets) {
|
||||
@@ -614,7 +614,7 @@ QList<ToolChain *> IosToolChainFactory::autoDetect(const QList<ToolChain *> &exi
|
||||
createOrAdd(platformToolchains.second, ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
||||
}
|
||||
}
|
||||
return Utils::transform(toolChains, [](ClangToolChain *tc) -> ToolChain * { return tc; });
|
||||
return toolChains;
|
||||
}
|
||||
|
||||
QString DevelopmentTeam::identifier() const
|
||||
|
||||
@@ -358,9 +358,9 @@ BuildTargetInfoList Target::applicationTargets() const
|
||||
QList<ProjectConfiguration *> Target::projectConfigurations() const
|
||||
{
|
||||
QList<ProjectConfiguration *> result;
|
||||
result.append(Utils::qobject_container_cast<ProjectConfiguration *>(buildConfigurations()));
|
||||
result.append(Utils::qobject_container_cast<ProjectConfiguration *>(deployConfigurations()));
|
||||
result.append(Utils::qobject_container_cast<ProjectConfiguration *>(runConfigurations()));
|
||||
result.append(Utils::static_container_cast<ProjectConfiguration *>(buildConfigurations()));
|
||||
result.append(Utils::static_container_cast<ProjectConfiguration *>(deployConfigurations()));
|
||||
result.append(Utils::static_container_cast<ProjectConfiguration *>(runConfigurations()));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user