CMake: Pass const QList<const FileNode *> to Directory Readers

This makes sure they need to copy whatever they need.

Change-Id: I767ac0c5f54ca1f9f46acdefe4bd7fea35657312
Reviewed-by: Alexander Drozdov <adrozdoff@gmail.com>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2016-12-15 12:53:37 +01:00
parent a347768488
commit 1b2fc1c815
14 changed files with 59 additions and 73 deletions

View File

@@ -283,7 +283,8 @@ static ProjectNode *updateCMakeInputs(CMakeListsNode *root,
return cmakeVFolder;
}
void ServerModeReader::generateProjectTree(CMakeListsNode *root, const QList<FileNode *> &allFiles)
void ServerModeReader::generateProjectTree(CMakeListsNode *root,
const QList<const FileNode *> &allFiles)
{
// Split up cmake inputs into useful chunks:
QList<FileNode *> cmakeFilesSource;
@@ -648,12 +649,12 @@ static CMakeProjectNode *findOrCreateProjectNode(CMakeListsNode *root, const Uti
QSet<Node *> ServerModeReader::updateProjects(CMakeListsNode *root,
const QList<Project *> &projects,
const QList<FileNode *> &allFiles)
const QList<const FileNode *> &allFiles)
{
QSet<Node *> usedNodes;
QHash<Utils::FileName, QList<FileNode *>> includeFiles;
for (FileNode *f : allFiles) {
QHash<Utils::FileName, QList<const FileNode *>> includeFiles;
for (const FileNode *f : allFiles) {
if (f->fileType() != FileType::Header)
continue;
includeFiles[f->filePath().parentDir()].append(f);
@@ -689,7 +690,7 @@ static CMakeTargetNode *findOrCreateTargetNode(CMakeListsNode *root, const Utils
QSet<Node *> ServerModeReader::updateTargets(CMakeListsNode *root,
const QList<ServerModeReader::Target *> &targets,
const QHash<FileName, QList<FileNode *> > &headers)
const QHash<FileName, QList<const FileNode *> > &headers)
{
QSet<Node *> usedNodes;
for (const Target *t : targets) {
@@ -706,7 +707,7 @@ void ServerModeReader::updateFileGroups(ProjectNode *targetRoot,
const Utils::FileName &sourceDirectory,
const Utils::FileName &buildDirectory,
const QList<ServerModeReader::FileGroup *> &fileGroups,
const QHash<FileName, QList<FileNode *> > &headers)
const QHash<FileName, QList<const FileNode *> > &headers)
{
QList<FileNode *> toList;
QSet<Utils::FileName> alreadyListed;
@@ -723,13 +724,13 @@ void ServerModeReader::updateFileGroups(ProjectNode *targetRoot,
// Add scanned header files:
for (const IncludePath *i : f->includePaths) {
const QList<FileNode *> &headerFiles = headers.value(i->path);
const QList<FileNode *> unseenHeaders = Utils::filtered(headerFiles, [&alreadyListed](const FileNode *fn) {
const QList<const FileNode *> &headerFiles = headers.value(i->path);
const QList<const FileNode *> unseenHeaders = Utils::filtered(headerFiles, [&alreadyListed](const FileNode *fn) {
const int count = alreadyListed.count();
alreadyListed.insert(fn->filePath());
return count != alreadyListed.count();
});
toList.append(Utils::transform(unseenHeaders, [](FileNode *fn) -> FileNode * {
toList.append(Utils::transform(unseenHeaders, [](const FileNode *fn) -> FileNode * {
auto copy = new FileNode(fn->filePath(), fn->fileType(), fn->isGenerated());
copy->setEnabled(false);
return copy;