From 4d1a1981a843e745304f4f28374207d887979d83 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Thu, 5 Nov 2015 11:47:01 +0100 Subject: [PATCH] CppTools: CompilerOptionsBuilder takes project part by reference ...since it assumes a project part != 0 and does not participate in ownership. Change-Id: Ia9c1eca52776990576a2dac61e9144234b04c59c Reviewed-by: Erik Verbruggen --- .../clangeditordocumentprocessor.cpp | 3 +-- src/plugins/clangcodemodel/clangutils.cpp | 12 ++++++------ src/plugins/cpptools/cppprojects.cpp | 14 +++++++------- src/plugins/cpptools/cppprojects.h | 4 ++-- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index c4a75dfbba6..aa4bee6896c 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -312,8 +312,7 @@ static CppTools::ProjectPart projectPartForLanguageOption(CppTools::ProjectPart static QStringList languageOptions(const QString &filePath, CppTools::ProjectPart *projectPart) { - const auto theProjectPart = CppTools::ProjectPart::Ptr( - new CppTools::ProjectPart(projectPartForLanguageOption(projectPart))); + const auto theProjectPart = projectPartForLanguageOption(projectPart); CppTools::CompilerOptionsBuilder builder(theProjectPart); builder.addLanguageOption(CppTools::ProjectFile::classify(filePath)); diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index ae40cda32a0..2fe9d97b605 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -112,7 +112,7 @@ public: if (projectPart.isNull()) return QStringList(); - LibClangOptionsBuilder optionsBuilder(projectPart); + LibClangOptionsBuilder optionsBuilder(*projectPart.data()); if (verboseRunLog().isDebugEnabled()) optionsBuilder.add(QLatin1String("-v")); @@ -135,7 +135,7 @@ public: } private: - LibClangOptionsBuilder(const CppTools::ProjectPart::Ptr &projectPart) + LibClangOptionsBuilder(const CppTools::ProjectPart &projectPart) : CompilerOptionsBuilder(projectPart) { } @@ -171,7 +171,7 @@ private: static const QString wrappedQtHeaders = ICore::instance()->resourcePath() + QLatin1String("/cplusplus/wrappedQtHeaders"); - if (m_projectPart->qtVersion != ProjectPart::NoQt) { + if (m_projectPart.qtVersion != ProjectPart::NoQt) { add(QLatin1String("-I") + wrappedQtHeaders); add(QLatin1String("-I") + wrappedQtHeaders + QLatin1String("/QtCore")); } @@ -179,9 +179,9 @@ private: void addProjectConfigFileInclude() { - if (!m_projectPart->projectConfigFile.isEmpty()) { + if (!m_projectPart.projectConfigFile.isEmpty()) { add(QLatin1String("-include")); - add(m_projectPart->projectConfigFile); + add(m_projectPart.projectConfigFile); } } @@ -213,7 +213,7 @@ private: add(QStringLiteral("-Wno-documentation")); add(QStringLiteral("-Wno-shadow")); - if (m_projectPart->languageVersion >= ProjectPart::CXX98) + if (m_projectPart.languageVersion >= ProjectPart::CXX98) add(QStringLiteral("-Wno-missing-prototypes")); } }; diff --git a/src/plugins/cpptools/cppprojects.cpp b/src/plugins/cpptools/cppprojects.cpp index 29f8d1cd8fe..d1ab05fb686 100644 --- a/src/plugins/cpptools/cppprojects.cpp +++ b/src/plugins/cpptools/cppprojects.cpp @@ -505,7 +505,7 @@ void ProjectPartBuilder::createProjectPart(const QStringList &theSources, } -CompilerOptionsBuilder::CompilerOptionsBuilder(const ProjectPart::Ptr &projectPart) +CompilerOptionsBuilder::CompilerOptionsBuilder(const ProjectPart &projectPart) : m_projectPart(projectPart) { } @@ -544,7 +544,7 @@ void CompilerOptionsBuilder::addHeaderPathOptions() QStringList result; - foreach (const HeaderPath &headerPath , m_projectPart->headerPaths) { + foreach (const HeaderPath &headerPath , m_projectPart.headerPaths) { if (headerPath.path.isEmpty()) continue; @@ -571,7 +571,7 @@ void CompilerOptionsBuilder::addHeaderPathOptions() void CompilerOptionsBuilder::addToolchainAndProjectDefines() { - QByteArray extendedDefines = m_projectPart->toolchainDefines + m_projectPart->projectDefines; + QByteArray extendedDefines = m_projectPart.toolchainDefines + m_projectPart.projectDefines; QStringList result; foreach (QByteArray def, extendedDefines.split('\n')) { @@ -645,7 +645,7 @@ static QStringList createLanguageOptionGcc(ProjectFile::Kind fileKind, bool objc void CompilerOptionsBuilder::addLanguageOption(ProjectFile::Kind fileKind) { - const bool objcExt = m_projectPart->languageExtensions & ProjectPart::ObjectiveCExtensions; + const bool objcExt = m_projectPart.languageExtensions & ProjectPart::ObjectiveCExtensions; const QStringList options = createLanguageOptionGcc(fileKind, objcExt); m_options.append(options); } @@ -653,9 +653,9 @@ void CompilerOptionsBuilder::addLanguageOption(ProjectFile::Kind fileKind) void CompilerOptionsBuilder::addOptionsForLanguage(bool checkForBorlandExtensions) { QStringList opts; - const ProjectPart::LanguageExtensions languageExtensions = m_projectPart->languageExtensions; + const ProjectPart::LanguageExtensions languageExtensions = m_projectPart.languageExtensions; const bool gnuExtensions = languageExtensions & ProjectPart::GnuExtensions; - switch (m_projectPart->languageVersion) { + switch (m_projectPart.languageVersion) { case ProjectPart::C89: opts << (gnuExtensions ? QLatin1String("-std=gnu89") : QLatin1String("-std=c89")); break; @@ -716,7 +716,7 @@ bool CompilerOptionsBuilder::excludeDefineLine(const QByteArray &defineLine) con // The right-hand sides are gcc built-ins that clang does not understand, and they'd // override clang's own (non-macro, it seems) definitions of the symbols on the left-hand // side. - const bool isGccToolchain = m_projectPart->toolchainType == ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID; + const bool isGccToolchain = m_projectPart.toolchainType == ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID; if (isGccToolchain && defineLine.contains("has_include")) return true; diff --git a/src/plugins/cpptools/cppprojects.h b/src/plugins/cpptools/cppprojects.h index dc6c841bf02..a63f5575875 100644 --- a/src/plugins/cpptools/cppprojects.h +++ b/src/plugins/cpptools/cppprojects.h @@ -215,7 +215,7 @@ private: class CPPTOOLS_EXPORT CompilerOptionsBuilder { public: - CompilerOptionsBuilder(const ProjectPart::Ptr &projectPart); + CompilerOptionsBuilder(const ProjectPart &projectPart); virtual ~CompilerOptionsBuilder() {} QStringList options() const; @@ -237,7 +237,7 @@ protected: virtual QString defineOption() const; virtual QString includeOption() const; - const ProjectPart::Ptr m_projectPart; + const ProjectPart m_projectPart; private: QString defineLineToDefineOption(const QByteArray &defineLine);