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