From cfc1069c78bf727631b1565504b26d3d839ed1b9 Mon Sep 17 00:00:00 2001
From: Erik Verbruggen <erik.verbruggen@digia.com>
Date: Wed, 28 Nov 2012 09:52:19 +0100
Subject: [PATCH] C++: Remove hard-coded configuration file name.

Change-Id: Ibe4cc69eafd14dab7707862b1068ce1e21b1d8e0
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
---
 src/libs/cplusplus/FastPreprocessor.cpp             |  7 +++----
 src/libs/cplusplus/pp-engine.cpp                    |  4 +++-
 src/libs/cplusplus/pp-engine.h                      |  3 +++
 src/plugins/cppeditor/cppeditor.cpp                 |  2 +-
 src/plugins/cpptools/ModelManagerInterface.cpp      |  4 ++++
 src/plugins/cpptools/ModelManagerInterface.h        |  3 +++
 src/plugins/cpptools/builtinindexingsupport.cpp     | 13 +++++--------
 src/plugins/cpptools/builtinindexingsupport.h       |  3 +--
 src/plugins/cpptools/cppcompletionassist.cpp        |  2 +-
 src/plugins/cpptools/cppmodelmanager.cpp            |  8 +++-----
 .../genericprojectmanager/genericproject.cpp        |  2 +-
 src/plugins/qt4projectmanager/qt4project.cpp        |  6 +++---
 12 files changed, 31 insertions(+), 26 deletions(-)

diff --git a/src/libs/cplusplus/FastPreprocessor.cpp b/src/libs/cplusplus/FastPreprocessor.cpp
index b95ea7493fb..1eff7ff3b98 100644
--- a/src/libs/cplusplus/FastPreprocessor.cpp
+++ b/src/libs/cplusplus/FastPreprocessor.cpp
@@ -30,13 +30,12 @@
 #include "FastPreprocessor.h"
 #include <Literals.h>
 #include <TranslationUnit.h>
-#include <QDebug>
 
 using namespace CPlusPlus;
 
 FastPreprocessor::FastPreprocessor(const Snapshot &snapshot)
-    : _snapshot(snapshot),
-      _preproc(this, &_env)
+    : _snapshot(snapshot)
+    , _preproc(this, &_env)
 { }
 
 QByteArray FastPreprocessor::run(Document::Ptr newDoc, const QString &source)
@@ -49,7 +48,7 @@ QByteArray FastPreprocessor::run(Document::Ptr newDoc, const QString &source)
     if (Document::Ptr doc = _snapshot.document(fileName)) {
         _merged.insert(fileName);
 
-        mergeEnvironment(QLatin1String("<configuration>"));
+        mergeEnvironment(Preprocessor::configurationFileName);
         foreach (const Document::Include &i, doc->includes())
             mergeEnvironment(i.fileName());
     }
diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp
index 3564cc11c45..22f30d08e6d 100644
--- a/src/libs/cplusplus/pp-engine.cpp
+++ b/src/libs/cplusplus/pp-engine.cpp
@@ -589,6 +589,8 @@ void Preprocessor::State::popTokenBuffer()
         --m_tokenBufferDepth;
 }
 
+const QString Preprocessor::configurationFileName = QLatin1String("<configuration>");
+
 Preprocessor::Preprocessor(Client *client, Environment *env)
     : m_client(client)
     , m_env(env)
@@ -1751,7 +1753,7 @@ void Preprocessor::handleIfDefDirective(bool checkUndefined, PPToken *tk)
 
             // the macro is a feature constraint(e.g. QT_NO_XXX)
             if (checkUndefined && macroName.startsWith("QT_NO_")) {
-                if (macro->fileName() == QLatin1String("<configuration>")) {
+                if (macro->fileName() == configurationFileName) {
                     // and it' defined in a pro file (e.g. DEFINES += QT_NO_QOBJECT)
 
                     value = false; // take the branch
diff --git a/src/libs/cplusplus/pp-engine.h b/src/libs/cplusplus/pp-engine.h
index 98d7f90ff85..a86b2b4f0a5 100644
--- a/src/libs/cplusplus/pp-engine.h
+++ b/src/libs/cplusplus/pp-engine.h
@@ -74,6 +74,9 @@ class CPLUSPLUS_EXPORT Preprocessor
     typedef Internal::PPToken PPToken;
     typedef Internal::Value Value;
 
+public:
+    static const QString configurationFileName;
+
 public:
     Preprocessor(Client *client, Environment *env);
 
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 399b108a25b..4cde997f196 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -1434,7 +1434,7 @@ CPPEditorWidget::Link CPPEditorWidget::findLinkAt(const QTextCursor &cursor,
             return link;    //already on definition!
     } else {
         const Document::MacroUse *use = doc->findMacroUseAt(endOfToken - 1);
-        if (use && use->macro().fileName() != QLatin1String("<configuration>")) {
+        if (use && use->macro().fileName() != CppModelManagerInterface::configurationFileName()) {
             const Macro &macro = use->macro();
             link.fileName = macro.fileName();
             link.line = macro.line();
diff --git a/src/plugins/cpptools/ModelManagerInterface.cpp b/src/plugins/cpptools/ModelManagerInterface.cpp
index 7c0c3d6ac2d..136fe200f0a 100644
--- a/src/plugins/cpptools/ModelManagerInterface.cpp
+++ b/src/plugins/cpptools/ModelManagerInterface.cpp
@@ -28,6 +28,7 @@
 ****************************************************************************/
 
 #include "ModelManagerInterface.h"
+#include "pp-engine.h"
 
 #include <QtCore/QSet>
 
@@ -35,6 +36,9 @@ using namespace CPlusPlus;
 
 static CppModelManagerInterface *g_instance = 0;
 
+const QString CppModelManagerInterface::configurationFileName()
+{ return Preprocessor::configurationFileName; }
+
 CppModelManagerInterface::CppModelManagerInterface(QObject *parent)
     : QObject(parent)
 {
diff --git a/src/plugins/cpptools/ModelManagerInterface.h b/src/plugins/cpptools/ModelManagerInterface.h
index 03bd92bbddf..ed805545bd6 100644
--- a/src/plugins/cpptools/ModelManagerInterface.h
+++ b/src/plugins/cpptools/ModelManagerInterface.h
@@ -180,6 +180,9 @@ public:
         CppSemanticsDiagnostic
     };
 
+public:
+    static const QString configurationFileName();
+
 public:
     CppModelManagerInterface(QObject *parent = 0);
     virtual ~CppModelManagerInterface();
diff --git a/src/plugins/cpptools/builtinindexingsupport.cpp b/src/plugins/cpptools/builtinindexingsupport.cpp
index eb03a799fb4..e94ffb9ee36 100644
--- a/src/plugins/cpptools/builtinindexingsupport.cpp
+++ b/src/plugins/cpptools/builtinindexingsupport.cpp
@@ -16,8 +16,7 @@ namespace {
 
 static void parse(QFutureInterface<void> &future,
                   CppPreprocessor *preproc,
-                  QStringList files,
-                  const char *pp_configuration_file)
+                  QStringList files)
 {
     if (files.isEmpty())
         return;
@@ -53,8 +52,7 @@ static void parse(QFutureInterface<void> &future,
 
     future.setProgressRange(0, files.size());
 
-    QString conf = QLatin1String(pp_configuration_file);
-
+    const QString conf = CPlusPlus::CppModelManagerInterface::configurationFileName();
     bool processingHeaders = false;
 
     for (int i = 0; i < files.size(); ++i) {
@@ -163,9 +161,8 @@ private:
 
 } // anonymous namespace
 
-BuiltinIndexingSupport::BuiltinIndexingSupport(const char *pp_configuration_file)
-    : m_pp_configuration_file(pp_configuration_file)
-    , m_revision(0)
+BuiltinIndexingSupport::BuiltinIndexingSupport()
+    : m_revision(0)
 {
     m_synchronizer.setCancelOnWait(true);
     m_dumpFileNameWhileParsing = !qgetenv("QTCREATOR_DUMP_FILENAME_WHILE_PARSING").isNull();
@@ -186,7 +183,7 @@ QFuture<void> BuiltinIndexingSupport::refreshSourceFiles(const QStringList &sour
     preproc->setFrameworkPaths(mgr->frameworkPaths());
     preproc->setWorkingCopy(workingCopy);
 
-    QFuture<void> result = QtConcurrent::run(&parse, preproc, sourceFiles, m_pp_configuration_file);
+    QFuture<void> result = QtConcurrent::run(&parse, preproc, sourceFiles);
 
     if (m_synchronizer.futures().size() > 10) {
         QList<QFuture<void> > futures = m_synchronizer.futures();
diff --git a/src/plugins/cpptools/builtinindexingsupport.h b/src/plugins/cpptools/builtinindexingsupport.h
index cb3f9d5022b..7d4c7ff8497 100644
--- a/src/plugins/cpptools/builtinindexingsupport.h
+++ b/src/plugins/cpptools/builtinindexingsupport.h
@@ -14,14 +14,13 @@ public:
     typedef CPlusPlus::CppModelManagerInterface::WorkingCopy WorkingCopy;
 
 public:
-    BuiltinIndexingSupport(const char *m_pp_configuration_file);
+    BuiltinIndexingSupport();
     ~BuiltinIndexingSupport();
 
     virtual QFuture<void> refreshSourceFiles(const QStringList &sourceFiles);
     virtual SymbolSearcher *createSymbolSearcher(SymbolSearcher::Parameters parameters, QSet<QString> fileNames);
 
 private:
-    const char *m_pp_configuration_file;
     QFutureSynchronizer<void> m_synchronizer;
     unsigned m_revision;
     bool m_dumpFileNameWhileParsing;
diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp
index e9cfda9dda8..2bd533637c9 100644
--- a/src/plugins/cpptools/cppcompletionassist.cpp
+++ b/src/plugins/cpptools/cppcompletionassist.cpp
@@ -1418,7 +1418,7 @@ void CppCompletionAssistProcessor::globalCompletion(CPlusPlus::Scope *currentSco
         completeNamespace(b);
 
     addKeywords();
-    addMacros(QLatin1String("<configuration>"), context.snapshot());
+    addMacros(CppModelManagerInterface::configurationFileName(), context.snapshot());
     addMacros(context.thisDocument()->fileName(), context.snapshot());
     addSnippets();
 }
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 2aa3dce5921..902f37177c2 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -164,8 +164,6 @@ protected:
 
 #endif // QTCREATOR_WITH_DUMP_AST
 
-static const char pp_configuration_file[] = "<configuration>";
-
 static const char pp_configuration[] =
     "# 1 \"<configuration>\"\n"
     "#define __cplusplus 1\n"
@@ -396,7 +394,7 @@ static inline void appendDirSeparatorIfNeeded(QString &path)
 QString CppPreprocessor::tryIncludeFile_helper(QString &fileName, IncludeType type, unsigned *revision)
 {
     QFileInfo fileInfo(fileName);
-    if (fileName == QLatin1String(pp_configuration_file) || fileInfo.isAbsolute()) {
+    if (fileName == Preprocessor::configurationFileName || fileInfo.isAbsolute()) {
         QString contents;
         includeFile(fileName, &contents, revision);
         return contents;
@@ -741,7 +739,7 @@ CppModelManager::CppModelManager(QObject *parent)
     ExtensionSystem::PluginManager::addObject(m_completionAssistProvider);
     m_highlightingFallback = new CppHighlightingSupportInternalFactory;
     m_highlightingFactory = m_highlightingFallback;
-    m_internalIndexingSupport = new BuiltinIndexingSupport(pp_configuration_file);
+    m_internalIndexingSupport = new BuiltinIndexingSupport;
 }
 
 CppModelManager::~CppModelManager()
@@ -940,7 +938,7 @@ CppModelManager::WorkingCopy CppModelManager::buildWorkingCopyList()
     // add the project configuration file
     QByteArray conf(pp_configuration);
     conf += definedMacros();
-    workingCopy.insert(QLatin1String(pp_configuration_file), QString::fromUtf8(conf));
+    workingCopy.insert(configurationFileName(), QString::fromUtf8(conf));
 
     return workingCopy;
 }
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index c518131f7a4..ccbb0fa8c55 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -273,7 +273,7 @@ void GenericProject::refresh(RefreshOptions options)
 
         if (options & Configuration) {
             filesToUpdate = part->sourceFiles;
-            filesToUpdate.append(QLatin1String("<configuration>")); // XXX don't hardcode configuration file name
+            filesToUpdate.append(CPlusPlus::CppModelManagerInterface::configurationFileName());
             // Full update, if there's a code model update, cancel it
             m_codeModelFuture.cancel();
         } else if (options & Files) {
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 8d3d2084021..50686f76b45 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -528,9 +528,9 @@ bool Qt4Project::equalFileList(const QStringList &a, const QStringList &b)
     QStringList::const_iterator bend = b.constEnd();
 
     while (ait != aend && bit != bend) {
-        if (*ait == QLatin1String("<configuration>"))
+        if (*ait == CPlusPlus::CppModelManagerInterface::configurationFileName())
             ++ait;
-        else if (*bit == QLatin1String("<configuration>"))
+        else if (*bit == CPlusPlus::CppModelManagerInterface::configurationFileName())
             ++bit;
         else if (*ait == *bit)
             ++ait, ++bit;
@@ -634,7 +634,7 @@ void Qt4Project::updateCppCodeModel()
         part->sourceFiles = pro->variableValue(CppSourceVar);
         part->headerFiles += pro->variableValue(CppHeaderVar);
         part->headerFiles += pro->uiFiles();
-        part->sourceFiles.prepend(QLatin1String("<configuration>"));
+        part->sourceFiles.prepend(CPlusPlus::CppModelManagerInterface::configurationFileName());
         part->objcSourceFiles = pro->variableValue(ObjCSourceVar);
         pinfo.appendProjectPart(part);
 
-- 
GitLab