From 2780999d53206287ee1c586624637c82abde73eb Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Mon, 9 Mar 2009 12:51:13 +0100 Subject: [PATCH] Improved the way we merge environments. --- src/plugins/cpptools/cppmodelmanager.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 3d4c73346d6..3c7504d7ee0 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -187,7 +187,6 @@ protected: QByteArray tryIncludeFile(QString &fileName, IncludeType type); void mergeEnvironment(CPlusPlus::Document::Ptr doc); - void mergeEnvironment(CPlusPlus::Document::Ptr doc, QSet *processed); virtual void macroAdded(const Macro ¯o); virtual void startExpandingMacro(unsigned offset, @@ -212,6 +211,7 @@ private: QSet m_included; Document::Ptr m_currentDoc; QSet m_todo; + QSet m_processed; }; } // namespace Internal @@ -270,7 +270,10 @@ void CppPreprocessor::run(const QString &fileName) } void CppPreprocessor::resetEnvironment() -{ env.reset(); } +{ + env.reset(); + m_processed.clear(); +} bool CppPreprocessor::includeFile(const QString &absoluteFilePath, QByteArray *result) { @@ -413,28 +416,22 @@ void CppPreprocessor::stopExpandingMacro(unsigned, const Macro &) } void CppPreprocessor::mergeEnvironment(Document::Ptr doc) -{ - QSet processed; - mergeEnvironment(doc, &processed); -} - -void CppPreprocessor::mergeEnvironment(Document::Ptr doc, QSet *processed) { if (! doc) return; const QString fn = doc->fileName(); - if (processed->contains(fn)) + if (m_processed.contains(fn)) return; - processed->insert(fn); + m_processed.insert(fn); foreach (const Document::Include &incl, doc->includes()) { QString includedFile = incl.fileName(); if (Document::Ptr includedDoc = snapshot.value(includedFile)) - mergeEnvironment(includedDoc, processed); + mergeEnvironment(includedDoc); else run(includedFile); }