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 ¯o = 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