summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppprojects.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2014-09-12 14:14:18 +0200
committerNikolai Kosjar <nikolai.kosjar@digia.com>2014-09-12 17:42:32 +0200
commit7290c43da14c1f416c8de0654d8f335a3b271989 (patch)
treef2906de0a582143aa9f759ee18ab1fadcbd79c86 /src/plugins/cpptools/cppprojects.cpp
parent9c1f44e942caa722add82af4462315cea8ee2e17 (diff)
downloadqt-creator-7290c43da14c1f416c8de0654d8f335a3b271989.tar.gz
C++: update project info once after finishing adding all project parts.
So that recalculating the information is not O(n^2) but linear. Change-Id: I69903e0b5ad321d071804d782ad634a3f300e71a Reviewed-by: Daniel Teske <daniel.teske@digia.com> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cppprojects.cpp')
-rw-r--r--src/plugins/cpptools/cppprojects.cpp49
1 files changed, 25 insertions, 24 deletions
diff --git a/src/plugins/cpptools/cppprojects.cpp b/src/plugins/cpptools/cppprojects.cpp
index eb99b11626..5f4e1f009f 100644
--- a/src/plugins/cpptools/cppprojects.cpp
+++ b/src/plugins/cpptools/cppprojects.cpp
@@ -166,35 +166,36 @@ const QList<ProjectPart::Ptr> ProjectInfo::projectParts() const
void ProjectInfo::appendProjectPart(const ProjectPart::Ptr &part)
{
- if (!part)
- return;
-
- m_projectParts.append(part);
+ if (part)
+ m_projectParts.append(part);
+}
+void ProjectInfo::finish()
+{
typedef ProjectPart::HeaderPath HeaderPath;
- // Update header paths
- QSet<HeaderPath> incs = QSet<HeaderPath>::fromList(m_headerPaths);
- foreach (const HeaderPath &hp, part->headerPaths) {
- if (!incs.contains(hp)) {
- incs.insert(hp);
- m_headerPaths += hp;
+ QSet<HeaderPath> incs;
+ foreach (const ProjectPart::Ptr &part, m_projectParts) {
+ // Update header paths
+ foreach (const HeaderPath &hp, part->headerPaths) {
+ if (!incs.contains(hp)) {
+ incs.insert(hp);
+ m_headerPaths += hp;
+ }
}
- }
- // Update source files
- foreach (const ProjectFile &file, part->files)
- m_sourceFiles.insert(file.path);
-
- // Update defines
- if (!m_defines.isEmpty())
- m_defines.append('\n');
- m_defines.append(part->toolchainDefines);
- m_defines.append(part->projectDefines);
- if (!part->projectConfigFile.isEmpty()) {
- m_defines.append('\n');
- m_defines += ProjectPart::readProjectConfigFile(part);
- m_defines.append('\n');
+ // Update source files
+ foreach (const ProjectFile &file, part->files)
+ m_sourceFiles.insert(file.path);
+
+ // Update defines
+ m_defines.append(part->toolchainDefines);
+ m_defines.append(part->projectDefines);
+ if (!part->projectConfigFile.isEmpty()) {
+ m_defines.append('\n');
+ m_defines += ProjectPart::readProjectConfigFile(part);
+ m_defines.append('\n');
+ }
}
}