summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppmodelmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager.cpp')
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 9fd0a82909..fbf5760df7 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -42,6 +42,7 @@
#include "cppsourceprocessor.h"
#include "cpptoolsconstants.h"
#include "cpptoolsplugin.h"
+#include "cpptoolsreuse.h"
#include "editordocumenthandle.h"
#include <coreplugin/documentmanager.h>
@@ -585,15 +586,38 @@ QByteArray CppModelManager::codeModelConfiguration() const
return QByteArray::fromRawData(pp_configuration, qstrlen(pp_configuration));
}
+static QSet<QString> tooBigFilesRemoved(const QSet<QString> &files, int fileSizeLimit)
+{
+ if (fileSizeLimit == 0)
+ return files;
+
+ QSet<QString> result;
+ QFileInfo fileInfo;
+
+ QSetIterator<QString> i(files);
+ while (i.hasNext()) {
+ const QString filePath = i.next();
+ fileInfo.setFile(filePath);
+ if (skipFileDueToSizeLimit(fileInfo), fileSizeLimit)
+ continue;
+
+ result << filePath;
+ }
+
+ return result;
+}
+
QFuture<void> CppModelManager::updateSourceFiles(const QSet<QString> &sourceFiles,
ProgressNotificationMode mode)
{
if (sourceFiles.isEmpty() || !d->m_indexerEnabled)
return QFuture<void>();
+ const auto filteredFiles = tooBigFilesRemoved(sourceFiles, fileSizeLimit());
+
if (d->m_indexingSupporter)
- d->m_indexingSupporter->refreshSourceFiles(sourceFiles, mode);
- return d->m_internalIndexingSupport->refreshSourceFiles(sourceFiles, mode);
+ d->m_indexingSupporter->refreshSourceFiles(filteredFiles, mode);
+ return d->m_internalIndexingSupport->refreshSourceFiles(filteredFiles, mode);
}
QList<ProjectInfo> CppModelManager::projectInfos() const