diff options
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager.cpp')
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index d2493e2e45..08799709b1 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -47,6 +47,7 @@ #include <texteditor/textdocument.h> #include <projectexplorer/project.h> #include <projectexplorer/projectexplorer.h> +#include <projectexplorer/projectmacro.h> #include <projectexplorer/session.h> #include <extensionsystem/pluginmanager.h> #include <utils/fileutils.h> @@ -138,7 +139,7 @@ public: bool m_dirty; QStringList m_projectFiles; ProjectPartHeaderPaths m_headerPaths; - QByteArray m_definedMacros; + ProjectExplorer::Macros m_definedMacros; // Editor integration mutable QMutex m_cppEditorDocumentsMutex; @@ -446,35 +447,31 @@ ProjectPartHeaderPaths CppModelManager::internalHeaderPaths() const return headerPaths; } -static void addUnique(const QList<QByteArray> &defs, QByteArray *macros, QSet<QByteArray> *alreadyIn) +static void addUnique(const ProjectExplorer::Macros &newMacros, + ProjectExplorer::Macros ¯os, + QSet<ProjectExplorer::Macro> &alreadyIn) { - Q_ASSERT(macros); - Q_ASSERT(alreadyIn); - - foreach (const QByteArray &def, defs) { - if (def.trimmed().isEmpty()) - continue; - if (!alreadyIn->contains(def)) { - macros->append(def); - macros->append('\n'); - alreadyIn->insert(def); + for (const ProjectExplorer::Macro ¯o : newMacros) { + if (!alreadyIn.contains(macro)) { + macros += macro; + alreadyIn.insert(macro); } } } -QByteArray CppModelManager::internalDefinedMacros() const +ProjectExplorer::Macros CppModelManager::internalDefinedMacros() const { - QByteArray macros; - QSet<QByteArray> alreadyIn; + ProjectExplorer::Macros macros; + QSet<ProjectExplorer::Macro> alreadyIn; QMapIterator<ProjectExplorer::Project *, ProjectInfo> it(d->m_projectToProjectsInfo); while (it.hasNext()) { it.next(); const ProjectInfo pinfo = it.value(); - foreach (const ProjectPart::Ptr &part, pinfo.projectParts()) { - addUnique(part->toolchainDefines.split('\n'), ¯os, &alreadyIn); - addUnique(part->projectDefines.split('\n'), ¯os, &alreadyIn); + for (const ProjectPart::Ptr &part : pinfo.projectParts()) { + addUnique(part->toolChainMacros, macros, alreadyIn); + addUnique(part->projectMacros, macros, alreadyIn); if (!part->projectConfigFile.isEmpty()) - macros += ProjectPart::readProjectConfigFile(part); + macros += ProjectExplorer::Macro::toMacros(ProjectPart::readProjectConfigFile(part)); } } return macros; @@ -491,7 +488,8 @@ void CppModelManager::dumpModelManagerConfiguration(const QString &logFileId) dumper.dumpProjectInfos(projectInfos()); dumper.dumpSnapshot(globalSnapshot, globalSnapshotTitle, /*isGlobalSnapshot=*/ true); dumper.dumpWorkingCopy(workingCopy()); - dumper.dumpMergedEntities(headerPaths(), definedMacros()); + dumper.dumpMergedEntities(headerPaths(), + ProjectExplorer:: Macro::toByteArray(definedMacros())); } QSet<AbstractEditorSupport *> CppModelManager::abstractEditorSupports() const @@ -569,12 +567,12 @@ void CppModelManager::renameUsages(Symbol *symbol, d->m_findReferences->renameUsages(symbol, context, replacement); } -void CppModelManager::findMacroUsages(const Macro ¯o) +void CppModelManager::findMacroUsages(const CPlusPlus::Macro ¯o) { d->m_findReferences->findMacroUses(macro); } -void CppModelManager::renameMacroUsages(const Macro ¯o, const QString &replacement) +void CppModelManager::renameMacroUsages(const CPlusPlus::Macro ¯o, const QString &replacement) { d->m_findReferences->renameMacroUses(macro, replacement); } @@ -603,7 +601,7 @@ WorkingCopy CppModelManager::buildWorkingCopyList() // Add the project configuration file QByteArray conf = codeModelConfiguration(); - conf += definedMacros(); + conf += ProjectExplorer::Macro::toByteArray(definedMacros()); workingCopy.insert(configurationFileName(), conf); return workingCopy; @@ -991,7 +989,7 @@ ProjectPart::Ptr CppModelManager::fallbackProjectPart() { ProjectPart::Ptr part(new ProjectPart); - part->projectDefines = definedMacros(); + part->projectMacros = definedMacros(); part->headerPaths = headerPaths(); // Do not activate ObjectiveCExtensions since this will lead to the @@ -1270,7 +1268,7 @@ void CppModelManager::setHeaderPaths(const ProjectPartHeaderPaths &headerPaths) d->m_headerPaths = headerPaths; } -QByteArray CppModelManager::definedMacros() +ProjectExplorer::Macros CppModelManager::definedMacros() { QMutexLocker locker(&d->m_projectMutex); ensureUpdated(); |