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;
|
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
|
// sort
|
||||||
/////////////////
|
/////////////////
|
||||||
|
|||||||
@@ -1032,9 +1032,7 @@ void AndroidConfigurations::updateAutomaticKitList()
|
|||||||
&& tc->typeId() == Constants::ANDROID_TOOLCHAIN_ID
|
&& tc->typeId() == Constants::ANDROID_TOOLCHAIN_ID
|
||||||
&& !static_cast<const AndroidToolChain *>(tc)->isSecondaryToolChain();
|
&& !static_cast<const AndroidToolChain *>(tc)->isSecondaryToolChain();
|
||||||
});
|
});
|
||||||
const QList<AndroidToolChain *> toolchains = Utils::transform(tmp, [](ToolChain *tc) {
|
const auto toolchains = Utils::static_container_cast<AndroidToolChain *>(tmp);
|
||||||
return static_cast<AndroidToolChain *>(tc);
|
|
||||||
});
|
|
||||||
for (AndroidToolChain *tc : toolchains) {
|
for (AndroidToolChain *tc : toolchains) {
|
||||||
if (tc->isSecondaryToolChain() || tc->language() != Core::Id(ProjectExplorer::Constants::CXX_LANGUAGE_ID))
|
if (tc->isSecondaryToolChain() || tc->language() != Core::Id(ProjectExplorer::Constants::CXX_LANGUAGE_ID))
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ SdkPlatformList AndroidSdkManager::installedSdkPlatforms()
|
|||||||
{
|
{
|
||||||
AndroidSdkPackageList list = m_d->filteredPackages(AndroidSdkPackage::Installed,
|
AndroidSdkPackageList list = m_d->filteredPackages(AndroidSdkPackage::Installed,
|
||||||
AndroidSdkPackage::SdkPlatformPackage);
|
AndroidSdkPackage::SdkPlatformPackage);
|
||||||
return Utils::qobject_container_cast<SdkPlatform *>(list);
|
return Utils::static_container_cast<SdkPlatform *>(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
const AndroidSdkPackageList &AndroidSdkManager::allSdkPackages()
|
const AndroidSdkPackageList &AndroidSdkManager::allSdkPackages()
|
||||||
|
|||||||
@@ -596,7 +596,7 @@ QList<ToolChain *> IosToolChainFactory::autoDetect(const QList<ToolChain *> &exi
|
|||||||
{
|
{
|
||||||
QList<ClangToolChain *> existingClangToolChains = clangToolChains(existingToolChains);
|
QList<ClangToolChain *> existingClangToolChains = clangToolChains(existingToolChains);
|
||||||
const QList<XcodePlatform> platforms = XcodeProbe::detectPlatforms().values();
|
const QList<XcodePlatform> platforms = XcodeProbe::detectPlatforms().values();
|
||||||
QList<ClangToolChain *> toolChains;
|
QList<ToolChain *> toolChains;
|
||||||
toolChains.reserve(platforms.size());
|
toolChains.reserve(platforms.size());
|
||||||
foreach (const XcodePlatform &platform, platforms) {
|
foreach (const XcodePlatform &platform, platforms) {
|
||||||
for (const XcodePlatform::ToolchainTarget &target : platform.targets) {
|
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);
|
createOrAdd(platformToolchains.second, ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Utils::transform(toolChains, [](ClangToolChain *tc) -> ToolChain * { return tc; });
|
return toolChains;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString DevelopmentTeam::identifier() const
|
QString DevelopmentTeam::identifier() const
|
||||||
|
|||||||
@@ -358,9 +358,9 @@ BuildTargetInfoList Target::applicationTargets() const
|
|||||||
QList<ProjectConfiguration *> Target::projectConfigurations() const
|
QList<ProjectConfiguration *> Target::projectConfigurations() const
|
||||||
{
|
{
|
||||||
QList<ProjectConfiguration *> result;
|
QList<ProjectConfiguration *> result;
|
||||||
result.append(Utils::qobject_container_cast<ProjectConfiguration *>(buildConfigurations()));
|
result.append(Utils::static_container_cast<ProjectConfiguration *>(buildConfigurations()));
|
||||||
result.append(Utils::qobject_container_cast<ProjectConfiguration *>(deployConfigurations()));
|
result.append(Utils::static_container_cast<ProjectConfiguration *>(deployConfigurations()));
|
||||||
result.append(Utils::qobject_container_cast<ProjectConfiguration *>(runConfigurations()));
|
result.append(Utils::static_container_cast<ProjectConfiguration *>(runConfigurations()));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user