diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 858838fb0a0..601605e2b7f 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -763,25 +763,6 @@ QTextStream &operator<<(QTextStream &s, const FileName &fn) return s << fn.toString(); } -int FileNameList::removeDuplicates() -{ - QSet seen; - int removed = 0; - - for (int i = 0; i < size(); ) { - const FileName &fn = at(i); - if (seen.contains(fn)) { - removeAt(i); - ++removed; - } else { - seen.insert(fn); - ++i; - } - } - - return removed; -} - } // namespace Utils QT_BEGIN_NAMESPACE diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h index bcb2fd5f937..523e582b209 100644 --- a/src/libs/utils/fileutils.h +++ b/src/libs/utils/fileutils.h @@ -105,16 +105,7 @@ private: QTCREATOR_UTILS_EXPORT QTextStream &operator<<(QTextStream &s, const FileName &fn); -class QTCREATOR_UTILS_EXPORT FileNameList : public QList -{ -public: - inline FileNameList() { } - inline explicit FileNameList(const FileName &i) { append(i); } - inline FileNameList(const FileNameList &l) : QList(l) { } - inline FileNameList(const QList &l) : QList(l) { } - - int removeDuplicates(); -}; +using FileNameList = QList; class QTCREATOR_UTILS_EXPORT FileUtils { public: diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 9055b8195a0..ea8d67b352c 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -40,6 +40,7 @@ #include #include +#include #include #include #include @@ -280,7 +281,7 @@ static void find_helper(QFutureInterface &future, const Utils::FileName sourceFile = Utils::FileName::fromUtf8(symbol->fileName(), symbol->fileNameLength()); - Utils::FileNameList files(sourceFile); + Utils::FileNameList files {sourceFile}; if (symbol->isClass() || symbol->isForwardClassDeclaration() @@ -300,7 +301,7 @@ static void find_helper(QFutureInterface &future, } else { files += snapshot.filesDependingOn(sourceFile); } - files.removeDuplicates(); + files = Utils::filteredUnique(files); future.setProgressRange(0, files.size()); @@ -617,9 +618,8 @@ static void findMacroUses_helper(QFutureInterface &future, const Macro macro) { const Utils::FileName sourceFile = Utils::FileName::fromString(macro.fileName()); - Utils::FileNameList files(sourceFile); - files += snapshot.filesDependingOn(sourceFile); - files.removeDuplicates(); + Utils::FileNameList files {sourceFile}; + files = Utils::filteredUnique(files + snapshot.filesDependingOn(sourceFile)); future.setProgressRange(0, files.size()); FindMacroUsesInFile process(workingCopy, snapshot, macro, &future); diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp index f3a79429541..295ad45e300 100644 --- a/src/plugins/cpptools/cpptoolsreuse.cpp +++ b/src/plugins/cpptools/cpptoolsreuse.cpp @@ -39,6 +39,7 @@ #include #include +#include #include #include @@ -290,11 +291,9 @@ bool skipFileDueToSizeLimit(const QFileInfo &fileInfo, int limitInMB) Utils::FileNameList modifiedFiles() { - Utils::FileNameList files; - foreach (Core::IDocument *doc, Core::DocumentManager::modifiedDocuments()) - files.append(doc->filePath()); - files.removeDuplicates(); - return files; + Utils::FileNameList files = Utils::transform(Core::DocumentManager::modifiedDocuments(), + &Core::IDocument::filePath); + return Utils::filteredUnique(files); } } // CppTools diff --git a/src/plugins/cpptools/cpptoolsreuse.h b/src/plugins/cpptools/cpptoolsreuse.h index cb6e0246e68..1272c49794e 100644 --- a/src/plugins/cpptools/cpptoolsreuse.h +++ b/src/plugins/cpptools/cpptoolsreuse.h @@ -37,6 +37,8 @@ #include +#include + QT_BEGIN_NAMESPACE class QChar; class QFileInfo; @@ -44,10 +46,6 @@ class QStringRef; class QTextCursor; QT_END_NAMESPACE -namespace Utils { -class FileNameList; -} // namespace Utils - namespace CPlusPlus { class Macro; class Symbol; diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index 8b3f40046ca..3ed821073c5 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -2427,8 +2427,7 @@ FileNameList QmakeProFileNode::subDirsPaths(QtSupport::ProFileReader *reader, } } - subProjectPaths.removeDuplicates(); - return subProjectPaths; + return Utils::filteredUnique(subProjectPaths); } TargetInformation QmakeProFileNode::targetInformation(QtSupport::ProFileReader *reader, QtSupport::ProFileReader *readerBuildPass, const QString &buildDir, const QString &projectFilePath) diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 3a44f6861db..48583720d00 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -450,9 +450,8 @@ static void findSystemQt() systemQMakes << systemQMakePath; systemQMakes.append(gatherQmakePathsFromQtChooser()); - systemQMakes.removeDuplicates(); - foreach (const FileName &qmakePath, systemQMakes) { + foreach (const FileName &qmakePath, Utils::filteredUnique(systemQMakes)) { BaseQtVersion *version = QtVersionFactory::createQtVersionFromQMakePath(qmakePath, false, QLatin1String("PATH")); if (version) {