summaryrefslogtreecommitdiff
path: root/src/lib/corelib/language/moduleloader.cpp
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2020-09-05 16:32:33 +0200
committerIvan Komissarov <ABBAPOH@gmail.com>2020-09-07 09:13:31 +0000
commite64ad82de3130178aa21e1945aebe05e22f2bae8 (patch)
treef9509caf06f6827db825b63302d657a5d40a1b79 /src/lib/corelib/language/moduleloader.cpp
parent15a0dfea97021bc6769cf2866a021b778b99307f (diff)
downloadqbs-e64ad82de3130178aa21e1945aebe05e22f2bae8.tar.gz
Use stl algorithms for filtering in mergeExportItems
It makes the intention clearer than a loop that does 2 actions simultaneously and is also a bit faster since we do not shift the tail of the list after removing an item. Change-Id: Ia39e972a6a9f83d5c352b2021246c5839b676f7f Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/language/moduleloader.cpp')
-rw-r--r--src/lib/corelib/language/moduleloader.cpp13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index c00fae6a0..d099c72a9 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -1975,15 +1975,10 @@ bool ModuleLoader::mergeExportItems(const ProductContext &productContext)
{
std::vector<Item *> exportItems;
QList<Item *> children = productContext.item->children();
- for (int i = 0; i < children.size();) {
- Item * const child = children.at(i);
- if (child->type() == ItemType::Export) {
- exportItems.push_back(child);
- children.removeAt(i);
- } else {
- ++i;
- }
- }
+
+ auto isExport = [](Item *item) { return item->type() == ItemType::Export; };
+ std::copy_if(children.cbegin(), children.cend(), std::back_inserter(exportItems), isExport);
+ qbs::Internal::removeIf(children, isExport);
// Note that we do not return if there are no Export items: The "merged" item becomes the
// "product module", which always needs to exist, regardless of whether the product sources