diff --git a/src/plugins/clangtools/clangfileinfo.h b/src/plugins/clangtools/clangfileinfo.h index a543ca1f274..735028a1f9e 100644 --- a/src/plugins/clangtools/clangfileinfo.h +++ b/src/plugins/clangtools/clangfileinfo.h @@ -36,12 +36,24 @@ namespace Internal { class FileInfo { public: + FileInfo() = default; + FileInfo(Utils::FileName file, + CppTools::ProjectFile::Kind kind, + CppTools::ProjectPart::Ptr projectPart) + : file(std::move(file)) + , kind(kind) + , projectPart(projectPart) + {} Utils::FileName file; CppTools::ProjectFile::Kind kind; CppTools::ProjectPart::Ptr projectPart; }; -using FileInfos = QVector; +inline bool operator==(const FileInfo &lhs, const FileInfo &rhs) { + return lhs.file == rhs.file; +} + +using FileInfos = std::vector; } // namespace Internal } // namespace ClangTools diff --git a/src/plugins/clangtools/clangselectablefilesdialog.cpp b/src/plugins/clangtools/clangselectablefilesdialog.cpp index e9cdc42625c..08ba746553d 100644 --- a/src/plugins/clangtools/clangselectablefilesdialog.cpp +++ b/src/plugins/clangtools/clangselectablefilesdialog.cpp @@ -155,7 +155,7 @@ public: return false; if (!node->isDir) - result += static_cast(node)->info; + result.push_back(static_cast(node)->info); return true; }); @@ -194,7 +194,7 @@ private: Tree *projectDirTree = buildProjectDirTree(project->projectDirectory(), fileInfos, outOfBaseDirFiles); - if (outOfBaseDirFiles.isEmpty()) { + if (outOfBaseDirFiles.empty()) { // Showing the project file and beneath the project dir is pointless in this case, // so get rid of the root node and modify the project dir node as the new root node. projectDirTree->name = m_root->name; @@ -229,7 +229,7 @@ private: for (const FileInfo &fileInfo : fileInfos) { if (!fileInfo.file.isChildOf(projectDirNode->fullPath)) { - outOfBaseDirFiles += fileInfo; + outOfBaseDirFiles.push_back(fileInfo); continue; // Handle these separately. } diff --git a/src/plugins/clangtools/clangtidyclazytool.cpp b/src/plugins/clangtools/clangtidyclazytool.cpp index 2c74837125b..d3f3d841b70 100644 --- a/src/plugins/clangtools/clangtidyclazytool.cpp +++ b/src/plugins/clangtools/clangtidyclazytool.cpp @@ -333,7 +333,7 @@ void ClangTidyClazyTool::startTool(bool askUserForFileSelection) QTC_ASSERT(project, return); const FileInfos fileInfos = collectFileInfos(project, askUserForFileSelection); - if (fileInfos.isEmpty()) + if (fileInfos.empty()) return; auto clangTool = new ClangTidyClazyRunControl(runControl, diff --git a/src/plugins/clangtools/clangtool.cpp b/src/plugins/clangtools/clangtool.cpp index 7c63fa4ee47..248bee44ea0 100644 --- a/src/plugins/clangtools/clangtool.cpp +++ b/src/plugins/clangtools/clangtool.cpp @@ -78,13 +78,13 @@ static FileInfos sortedFileInfos(const QVector &proj continue; if (CppTools::ProjectFile::isSource(file.kind)) { - const FileInfo info{Utils::FileName::fromString(file.path), file.kind, projectPart}; - fileInfos.append(info); + fileInfos.emplace_back(Utils::FileName::fromString(file.path), file.kind, projectPart); } } } Utils::sort(fileInfos, &FileInfo::file); + fileInfos.erase(std::unique(fileInfos.begin(), fileInfos.end()), fileInfos.end()); return fileInfos; }