forked from qt-creator/qt-creator
CPlusPlus: Don't double uniquify
CppDocument::includedFiles removes duplicates. Snapshot::allIncludesForDocument also removes duplicates. Once is enough. This doubles test scan performance on my machine. Change-Id: I892908cf0820cfa11854ac3d82e9175d1fc38043 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -296,11 +296,12 @@ void Document::setLastModified(const QDateTime &lastModified)
|
|||||||
_lastModified = lastModified;
|
_lastModified = lastModified;
|
||||||
}
|
}
|
||||||
|
|
||||||
FilePaths Document::includedFiles() const
|
FilePaths Document::includedFiles(Duplicates duplicates) const
|
||||||
{
|
{
|
||||||
FilePaths files;
|
FilePaths files;
|
||||||
for (const Include &i : std::as_const(_resolvedIncludes))
|
for (const Include &i : std::as_const(_resolvedIncludes))
|
||||||
files.append(i.resolvedFileName());
|
files.append(i.resolvedFileName());
|
||||||
|
if (duplicates == Duplicates::Remove)
|
||||||
FilePath::removeDuplicates(files);
|
FilePath::removeDuplicates(files);
|
||||||
return files;
|
return files;
|
||||||
}
|
}
|
||||||
@@ -771,7 +772,7 @@ QSet<FilePath> Snapshot::allIncludesForDocument(const FilePath &filePath) const
|
|||||||
while (!files.isEmpty()) {
|
while (!files.isEmpty()) {
|
||||||
FilePath file = files.pop();
|
FilePath file = files.pop();
|
||||||
if (Document::Ptr doc = document(file)) {
|
if (Document::Ptr doc = document(file)) {
|
||||||
const FilePaths includedFiles = doc->includedFiles();
|
const FilePaths includedFiles = doc->includedFiles(Document::Duplicates::Keep);
|
||||||
for (const FilePath &inc : includedFiles) {
|
for (const FilePath &inc : includedFiles) {
|
||||||
if (!result.contains(inc)) {
|
if (!result.contains(inc)) {
|
||||||
result.insert(inc);
|
result.insert(inc);
|
||||||
|
|||||||
@@ -297,7 +297,12 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Utils::FilePaths includedFiles() const;
|
enum class Duplicates {
|
||||||
|
Remove,
|
||||||
|
Keep,
|
||||||
|
};
|
||||||
|
|
||||||
|
Utils::FilePaths includedFiles(Duplicates duplicates = Duplicates::Remove) const;
|
||||||
void addIncludeFile(const Include &include);
|
void addIncludeFile(const Include &include);
|
||||||
|
|
||||||
const QList<Include> &resolvedIncludes() const
|
const QList<Include> &resolvedIncludes() const
|
||||||
|
|||||||
Reference in New Issue
Block a user