summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qmake/CMakeLists.txt1
-rw-r--r--qmake/generators/makefile.cpp4
-rw-r--r--qmake/library/proitems.cpp19
-rw-r--r--qmake/qmake.pro1
-rw-r--r--src/corelib/io/qurlquery.cpp3
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.cpp9
-rw-r--r--src/corelib/mimetypes/qmimeglobpattern_p.h2
-rw-r--r--src/corelib/text/qstringlist.cpp17
-rw-r--r--src/corelib/tools/qcommandlineoption.cpp3
-rw-r--r--src/dbus/qdbusintegrator.cpp7
-rw-r--r--src/gui/image/qmovie.cpp2
-rw-r--r--src/gui/text/qsyntaxhighlighter.cpp6
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp6
-rw-r--r--src/network/access/qhttpnetworkheader.cpp4
-rw-r--r--src/network/access/qnetworkrequest.cpp4
-rw-r--r--src/opengl/qopenglengineshadermanager.cpp4
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp7
-rw-r--r--src/widgets/itemviews/qlistview.cpp7
-rw-r--r--src/widgets/styles/qwindowsstyle.cpp2
-rw-r--r--src/widgets/widgets/qabstractbutton.cpp4
20 files changed, 28 insertions, 84 deletions
diff --git a/qmake/CMakeLists.txt b/qmake/CMakeLists.txt
index 133472b78d..3897ea192c 100644
--- a/qmake/CMakeLists.txt
+++ b/qmake/CMakeLists.txt
@@ -113,6 +113,7 @@ qt_internal_add_tool(${target_name}
../src/corelib/time/qgregoriancalendar.cpp ../src/corelib/time/qgregoriancalendar_p.h # special case
../src/corelib/time/qromancalendar.cpp ../src/corelib/time/qromancalendar_p.h # special case
../src/corelib/time/qdatetime.cpp ../src/corelib/time/qdatetime.h ../src/corelib/time/qdatetime_p.h # special case
+ ../src/corelib/tools/qduplicatetracker_p.h
../src/corelib/tools/qhash.cpp ../src/corelib/tools/qhash.h
../src/corelib/tools/qlist.h
../src/corelib/tools/qmap.h
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index da6d42c88e..1f60f29215 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -940,9 +940,7 @@ MakefileGenerator::filterIncludedFiles(const char *var)
auto isIncluded = [this](const ProString &input) {
return QMakeSourceFileInfo::included(input.toQString()) > 0;
};
- inputs.erase(std::remove_if(inputs.begin(), inputs.end(),
- isIncluded),
- inputs.end());
+ inputs.removeIf(isIncluded);
}
static QString
diff --git a/qmake/library/proitems.cpp b/qmake/library/proitems.cpp
index e1cfbad8a1..ba817596c5 100644
--- a/qmake/library/proitems.cpp
+++ b/qmake/library/proitems.cpp
@@ -32,6 +32,7 @@
#include <qset.h>
#include <qstringlist.h>
#include <qtextstream.h>
+#include <private/qduplicatetracker_p.h>
QT_BEGIN_NAMESPACE
@@ -403,21 +404,9 @@ void ProStringList::removeEmpty()
void ProStringList::removeDuplicates()
{
- int n = size();
- int j = 0;
- QSet<ProString> seen;
- seen.reserve(n);
- for (int i = 0; i < n; ++i) {
- const ProString &s = at(i);
- if (seen.contains(s))
- continue;
- seen.insert(s);
- if (j != i)
- (*this)[j] = s;
- ++j;
- }
- if (n != j)
- erase(begin() + j, end());
+ QDuplicateTracker<ProString> seen;
+ seen.reserve(size());
+ removeIf([&](const ProString &s) { return seen.hasSeen(s); });
}
void ProStringList::insertUnique(const ProStringList &value)
diff --git a/qmake/qmake.pro b/qmake/qmake.pro
index 4ff467f5ca..7474d5d54d 100644
--- a/qmake/qmake.pro
+++ b/qmake/qmake.pro
@@ -187,6 +187,7 @@ HEADERS += \
qcryptographichash.h \
qdatetime.h \
qdatetime_p.h \
+ qduplicatetracker_p.h \
qdir.h \
qdir_p.h \
qdiriterator.h \
diff --git a/src/corelib/io/qurlquery.cpp b/src/corelib/io/qurlquery.cpp
index a836fb2e99..c469c51ea9 100644
--- a/src/corelib/io/qurlquery.cpp
+++ b/src/corelib/io/qurlquery.cpp
@@ -764,8 +764,7 @@ void QUrlQuery::removeAllQueryItems(const QString &key)
auto firstEqualsEncodedKey = [&encodedKey](const QPair<QString, QString> &item) {
return item.first == encodedKey;
};
- const auto end = p->itemList.end();
- p->itemList.erase(std::remove_if(p->itemList.begin(), end, firstEqualsEncodedKey), end);
+ p->itemList.removeIf(firstEqualsEncodedKey);
}
}
diff --git a/src/corelib/itemmodels/qitemselectionmodel.cpp b/src/corelib/itemmodels/qitemselectionmodel.cpp
index b6a6bff118..b12cfc471b 100644
--- a/src/corelib/itemmodels/qitemselectionmodel.cpp
+++ b/src/corelib/itemmodels/qitemselectionmodel.cpp
@@ -1252,9 +1252,7 @@ void QItemSelectionModel::select(const QItemSelection &selection, QItemSelection
// be too late if another model observer is connected to the same modelReset slot and is invoked first
// it might call select() on this selection model before any such QItemSelectionModelPrivate::_q_modelReset() slot
// is invoked, so it would not be cleared yet. We clear it invalid ranges in it here.
- using namespace QtFunctionObjects;
- d->ranges.erase(std::remove_if(d->ranges.begin(), d->ranges.end(), IsNotValid()),
- d->ranges.end());
+ d->ranges.removeIf(QtFunctionObjects::IsNotValid());
QItemSelection old = d->ranges;
old.merge(d->currentSelection, d->currentCommand);
@@ -1755,10 +1753,7 @@ const QItemSelection QItemSelectionModel::selection() const
selected.merge(d->currentSelection, d->currentCommand);
// make sure we have no invalid ranges
// ### should probably be handled more generic somewhere else
- using namespace QtFunctionObjects;
- selected.erase(std::remove_if(selected.begin(), selected.end(),
- IsNotValid()),
- selected.end());
+ selected.removeIf(QtFunctionObjects::IsNotValid());
return selected;
}
diff --git a/src/corelib/mimetypes/qmimeglobpattern_p.h b/src/corelib/mimetypes/qmimeglobpattern_p.h
index 49f145e8db..88284521d1 100644
--- a/src/corelib/mimetypes/qmimeglobpattern_p.h
+++ b/src/corelib/mimetypes/qmimeglobpattern_p.h
@@ -128,7 +128,7 @@ public:
auto isMimeTypeEqual = [&mimeType](const QMimeGlobPattern &pattern) {
return pattern.mimeType() == mimeType;
};
- erase(std::remove_if(begin(), end(), isMimeTypeEqual), end());
+ removeIf(isMimeTypeEqual);
}
void match(QMimeGlobMatchResult &result, const QString &fileName) const;
diff --git a/src/corelib/text/qstringlist.cpp b/src/corelib/text/qstringlist.cpp
index c395750376..440e26bc89 100644
--- a/src/corelib/text/qstringlist.cpp
+++ b/src/corelib/text/qstringlist.cpp
@@ -648,22 +648,9 @@ qsizetype QtPrivate::QStringList_lastIndexOf(const QStringList *that, const QReg
*/
qsizetype QtPrivate::QStringList_removeDuplicates(QStringList *that)
{
- qsizetype n = that->size();
- qsizetype j = 0;
-
QDuplicateTracker<QString> seen;
- seen.reserve(n);
- for (qsizetype i = 0; i < n; ++i) {
- const QString &s = that->at(i);
- if (seen.hasSeen(s))
- continue;
- if (j != i)
- that->swapItemsAt(i, j);
- ++j;
- }
- if (n != j)
- that->erase(that->begin() + j, that->end());
- return n - j;
+ seen.reserve(that->size());
+ return that->removeIf([&](const QString &s) { return seen.hasSeen(s); });
}
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qcommandlineoption.cpp b/src/corelib/tools/qcommandlineoption.cpp
index 60ae7ed0da..bfb6f68f08 100644
--- a/src/corelib/tools/qcommandlineoption.cpp
+++ b/src/corelib/tools/qcommandlineoption.cpp
@@ -286,8 +286,7 @@ QStringList QCommandLineOptionPrivate::removeInvalidNames(QStringList nameList)
if (Q_UNLIKELY(nameList.isEmpty()))
qWarning("QCommandLineOption: Options must have at least one name");
else
- nameList.erase(std::remove_if(nameList.begin(), nameList.end(), IsInvalidName()),
- nameList.end());
+ nameList.removeIf(IsInvalidName());
return nameList;
}
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 114931f3de..6bf9ad7786 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -593,11 +593,8 @@ static void huntAndDestroy(QObject *needle, QDBusConnectionPrivate::ObjectTreeNo
for (auto &node : haystack.children)
huntAndDestroy(needle, node);
- auto isInactive = [](QDBusConnectionPrivate::ObjectTreeNode &node) { return !node.isActive(); };
-
- haystack.children.erase(std::remove_if(haystack.children.begin(), haystack.children.end(),
- isInactive),
- haystack.children.end());
+ auto isInactive = [](const QDBusConnectionPrivate::ObjectTreeNode &node) { return !node.isActive(); };
+ haystack.children.removeIf(isInactive);
if (needle == haystack.obj) {
haystack.obj = nullptr;
diff --git a/src/gui/image/qmovie.cpp b/src/gui/image/qmovie.cpp
index e99093d582..6c5922df0f 100644
--- a/src/gui/image/qmovie.cpp
+++ b/src/gui/image/qmovie.cpp
@@ -1022,7 +1022,7 @@ QList<QByteArray> QMovie::supportedFormats()
return !QImageReader(&buffer, format).supportsOption(QImageIOHandler::Animation);
};
- list.erase(std::remove_if(list.begin(), list.end(), doesntSupportAnimation), list.end());
+ list.removeIf(doesntSupportAnimation);
return list;
}
diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp
index 5a837b29e3..9e7a7c4d2c 100644
--- a/src/gui/text/qsyntaxhighlighter.cpp
+++ b/src/gui/text/qsyntaxhighlighter.cpp
@@ -109,12 +109,8 @@ void QSyntaxHighlighterPrivate::applyFormatChanges()
return range.start < preeditAreaStart
|| range.start + range.length > preeditAreaStart + preeditAreaLength;
};
- const auto it = std::remove_if(ranges.begin(), ranges.end(),
- isOutsidePreeditArea);
- if (it != ranges.end()) {
- ranges.erase(it, ranges.end());
+ if (ranges.removeIf(isOutsidePreeditArea) > 0)
formatsChanged = true;
- }
} else if (!ranges.isEmpty()) {
ranges.clear();
formatsChanged = true;
diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
index 3138168e90..81fe6eb640 100644
--- a/src/gui/text/qtextdocumentlayout.cpp
+++ b/src/gui/text/qtextdocumentlayout.cpp
@@ -3756,11 +3756,7 @@ static void markFrames(QTextFrame *current, int from, int oldLength, int length)
QTextFrameData *fd = data(current);
// float got removed in editing operation
- QTextFrame *null = nullptr; // work-around for (at least) MSVC 2012 emitting
- // warning C4100 for its own header <algorithm>
- // when passing nullptr directly to std::remove
- fd->floats.erase(std::remove(fd->floats.begin(), fd->floats.end(), null),
- fd->floats.end());
+ fd->floats.removeAll(nullptr);
fd->layoutDirty = true;
fd->sizeDirty = true;
diff --git a/src/network/access/qhttpnetworkheader.cpp b/src/network/access/qhttpnetworkheader.cpp
index 98d7dcafe2..5901a146dc 100644
--- a/src/network/access/qhttpnetworkheader.cpp
+++ b/src/network/access/qhttpnetworkheader.cpp
@@ -106,9 +106,7 @@ void QHttpNetworkHeaderPrivate::setHeaderField(const QByteArray &name, const QBy
auto firstEqualsName = [&name](const QPair<QByteArray, QByteArray> &header) {
return name.compare(header.first, Qt::CaseInsensitive) == 0;
};
- fields.erase(std::remove_if(fields.begin(), fields.end(),
- firstEqualsName),
- fields.end());
+ fields.removeIf(firstEqualsName);
fields.append(qMakePair(name, data));
}
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index a02b1fb912..ee2b9c67c3 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -1324,9 +1324,7 @@ void QNetworkHeadersPrivate::setRawHeaderInternal(const QByteArray &key, const Q
auto firstEqualsKey = [&key](const RawHeaderPair &header) {
return header.first.compare(key, Qt::CaseInsensitive) == 0;
};
- rawHeaders.erase(std::remove_if(rawHeaders.begin(), rawHeaders.end(),
- firstEqualsKey),
- rawHeaders.end());
+ rawHeaders.removeIf(firstEqualsKey);
if (value.isNull())
return; // only wanted to erase key
diff --git a/src/opengl/qopenglengineshadermanager.cpp b/src/opengl/qopenglengineshadermanager.cpp
index dc52b326bb..eb2aa12d07 100644
--- a/src/opengl/qopenglengineshadermanager.cpp
+++ b/src/opengl/qopenglengineshadermanager.cpp
@@ -493,9 +493,7 @@ void QOpenGLEngineSharedShaders::cleanupCustomStage(QOpenGLCustomShaderStage* st
}
return false;
};
- cachedPrograms.erase(std::remove_if(cachedPrograms.begin(), cachedPrograms.end(),
- hasStageAsCustomShaderSouce),
- cachedPrograms.end());
+ cachedPrograms.removeIf(hasStageAsCustomShaderSouce);
}
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp
index 2e0ddf678f..8f8f597d11 100644
--- a/src/widgets/itemviews/qabstractitemview.cpp
+++ b/src/widgets/itemviews/qabstractitemview.cpp
@@ -2642,8 +2642,7 @@ QModelIndexList QAbstractItemView::selectedIndexes() const
auto isHidden = [this](const QModelIndex &idx) {
return isIndexHidden(idx);
};
- const auto end = indexes.end();
- indexes.erase(std::remove_if(indexes.begin(), end, isHidden), end);
+ indexes.removeIf(isHidden);
}
return indexes;
}
@@ -4489,9 +4488,7 @@ QModelIndexList QAbstractItemViewPrivate::selectedDraggableIndexes() const
auto isNotDragEnabled = [this](const QModelIndex &index) {
return !isIndexDragEnabled(index);
};
- indexes.erase(std::remove_if(indexes.begin(), indexes.end(),
- isNotDragEnabled),
- indexes.end());
+ indexes.removeIf(isNotDragEnabled);
return indexes;
}
diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp
index 5e400e5c8f..269f08ce9f 100644
--- a/src/widgets/itemviews/qlistview.cpp
+++ b/src/widgets/itemviews/qlistview.cpp
@@ -1522,8 +1522,7 @@ QModelIndexList QListView::selectedIndexes() const
auto ignorable = [this, d](const QModelIndex &index) {
return index.column() != d->column || index.parent() != d->root || isIndexHidden(index);
};
- viewSelected.erase(std::remove_if(viewSelected.begin(), viewSelected.end(), ignorable),
- viewSelected.end());
+ viewSelected.removeIf(ignorable);
return viewSelected;
}
@@ -1960,9 +1959,7 @@ void QListViewPrivate::removeCurrentAndDisabled(QList<QModelIndex> *indexes,
auto isCurrentOrDisabled = [this, current](const QModelIndex &index) {
return !isIndexEnabled(index) || index == current;
};
- indexes->erase(std::remove_if(indexes->begin(), indexes->end(),
- isCurrentOrDisabled),
- indexes->end());
+ indexes->removeIf(isCurrentOrDisabled);
}
/*
diff --git a/src/widgets/styles/qwindowsstyle.cpp b/src/widgets/styles/qwindowsstyle.cpp
index ec252d9293..78e244307f 100644
--- a/src/widgets/styles/qwindowsstyle.cpp
+++ b/src/widgets/styles/qwindowsstyle.cpp
@@ -173,7 +173,7 @@ bool QWindowsStyle::eventFilter(QObject *o, QEvent *e)
return w->isWindow() || !w->isVisible()
|| w->style()->styleHint(SH_UnderlineShortcut, nullptr, w);
};
- l.erase(std::remove_if(l.begin(), l.end(), ignorable), l.end());
+ l.removeIf(ignorable);
// Update states before repainting
d->seenAlt.append(widget);
d->alt_down = true;
diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp
index 5ced1397b8..727cd66ed4 100644
--- a/src/widgets/widgets/qabstractbutton.cpp
+++ b/src/widgets/widgets/qabstractbutton.cpp
@@ -199,9 +199,7 @@ QList<QAbstractButton *>QAbstractButtonPrivate::queryButtonList() const
#endif
;
};
- candidates.erase(std::remove_if(candidates.begin(), candidates.end(),
- isNoMemberOfMyAutoExclusiveGroup),
- candidates.end());
+ candidates.removeIf(isNoMemberOfMyAutoExclusiveGroup);
}
return candidates;
}