aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2017-02-17 16:04:02 +0100
committerTim Jenssen <tim.jenssen@qt.io>2017-02-22 16:10:33 +0000
commit005ca71cac65b7c766d814b97b830e2af1c7aa53 (patch)
treedad3ef8a11973be8e0bbc7a0105dee5ff47c4ff7 /src
parentf716aac52a0109f2b8db31af19dd955695b9b3b9 (diff)
qmake: Use a QSet<FileName> for sets of folders
Change-Id: Ia2b9c435bd16eb5175534975fd822cecb74cc70f Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp36
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeparsernodes.h2
2 files changed, 17 insertions, 21 deletions
diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
index 1761ec7887e..fa43bf0ca33 100644
--- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
@@ -118,7 +118,7 @@ public:
class QmakePriFileEvalResult
{
public:
- QStringList folders;
+ QSet<FileName> folders;
QSet<FileName> recursiveEnumerateFiles;
QMap<FileType, QSet<FileName>> foundFiles;
};
@@ -229,7 +229,7 @@ bool QmakePriFile::buildsFile(const FileName &fn) const
QmakePriFile::~QmakePriFile()
{
- watchFolders(QSet<QString>());
+ watchFolders( {} );
qDeleteAll(m_children);
}
@@ -310,26 +310,25 @@ void QmakePriFile::extractInstalls(
auto *result = proToResult.value(source.proFile);
if (!result)
result = fallback;
- result->folders << source.fileName;
+ result->folders.insert(FileName::fromString(source.fileName));
}
}
}
void QmakePriFile::processValues(QmakePriFileEvalResult &result)
{
- result.folders.removeDuplicates();
-
// Remove non existing items and non folders
- QStringList::iterator it = result.folders.begin();
+ auto it = result.folders.begin();
while (it != result.folders.end()) {
- QFileInfo fi(*it);
+ QFileInfo fi((*it).toFileInfo());
if (fi.exists()) {
if (fi.isDir()) {
+ result.recursiveEnumerateFiles += recursiveEnumerate((*it).toString());
// keep directories
++it;
} else {
// move files directly to recursiveEnumerateFiles
- result.recursiveEnumerateFiles << FileName::fromString(*it);
+ result.recursiveEnumerateFiles += (*it);
it = result.folders.erase(it);
}
} else {
@@ -338,9 +337,6 @@ void QmakePriFile::processValues(QmakePriFileEvalResult &result)
}
}
- foreach (const QString &folder, result.folders)
- result.recursiveEnumerateFiles += recursiveEnumerate(folder);
-
for (int i = 0; i < static_cast<int>(FileType::FileTypeSize); ++i) {
FileType type = static_cast<FileType>(i);
QSet<FileName> &foundFiles = result.foundFiles[type];
@@ -354,7 +350,7 @@ void QmakePriFile::processValues(QmakePriFileEvalResult &result)
void QmakePriFile::update(const Internal::QmakePriFileEvalResult &result)
{
m_recursiveEnumerateFiles = result.recursiveEnumerateFiles;
- watchFolders(result.folders.toSet());
+ watchFolders(result.folders);
for (int i = 0; i < static_cast<int>(FileType::FileTypeSize); ++i) {
const FileType type = static_cast<FileType>(i);
@@ -362,20 +358,20 @@ void QmakePriFile::update(const Internal::QmakePriFileEvalResult &result)
}
}
-void QmakePriFile::watchFolders(const QSet<QString> &folders)
+void QmakePriFile::watchFolders(const QSet<FileName> &folders)
{
+ const QSet<QString> folderStrings =
+ Utils::transform(folders, [] (const FileName &f) { return f.toString(); });
QSet<QString> toUnwatch = m_watchedFolders;
- toUnwatch.subtract(folders);
+ toUnwatch.subtract(folderStrings);
- QSet<QString> toWatch = folders;
+ QSet<QString> toWatch = folderStrings;
toWatch.subtract(m_watchedFolders);
- if (!toUnwatch.isEmpty())
- m_project->unwatchFolders(toUnwatch.toList(), this);
- if (!toWatch.isEmpty())
- m_project->watchFolders(toWatch.toList(), this);
+ m_project->unwatchFolders(toUnwatch.toList(), this);
+ m_project->watchFolders(toWatch.toList(), this);
- m_watchedFolders = folders;
+ m_watchedFolders = folderStrings;
}
bool QmakePriFile::knowsFile(const FileName &filePath) const
diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h
index 527e0dbc68f..228a92876eb 100644
--- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h
+++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h
@@ -209,7 +209,7 @@ private:
Internal::QmakePriFileEvalResult *fallback,
const InstallsList &installList);
static void processValues(Internal::QmakePriFileEvalResult &result);
- void watchFolders(const QSet<QString> &folders);
+ void watchFolders(const QSet<Utils::FileName> &folders);
QmakeProject *m_project = nullptr;
QmakeProFile *m_qmakeProFile = nullptr;