C++: add fallback project part querying

When a file is not part of any other project part, this project part can
be used to get at least some compiler flags, defines, etc. to use. This
can happen when either a file outside a project is opened, or when the
project description is incomplete.

Change-Id: I5d595fae7195e8b61dbad14368b6cae9eb15c21b
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
Erik Verbruggen
2013-08-19 18:20:49 +02:00
parent fbf64eae72
commit 87a3aac18f
4 changed files with 22 additions and 3 deletions

View File

@@ -410,7 +410,7 @@ void CppModelManager::dumpModelManagerConfiguration()
cxxExtensions << QLatin1String("MicrosoftExtensions"); cxxExtensions << QLatin1String("MicrosoftExtensions");
if (part->cxxExtensions & ProjectPart::BorlandExtensions) if (part->cxxExtensions & ProjectPart::BorlandExtensions)
cxxExtensions << QLatin1String("BorlandExtensions"); cxxExtensions << QLatin1String("BorlandExtensions");
if (part->cxxExtensions & ProjectPart::OpenMP) if (part->cxxExtensions & ProjectPart::OpenMPExtensions)
cxxExtensions << QLatin1String("OpenMP"); cxxExtensions << QLatin1String("OpenMP");
qDebug() << "cVersion:" << cVersion; qDebug() << "cVersion:" << cVersion;
@@ -777,6 +777,21 @@ QList<ProjectPart::Ptr> CppModelManager::projectPart(const QString &fileName) co
return parts; return parts;
} }
ProjectPart::Ptr CppModelManager::fallbackProjectPart() const
{
ProjectPart::Ptr part(new ProjectPart);
part->defines = m_definedMacros;
part->includePaths = m_includePaths;
part->frameworkPaths = m_frameworkPaths;
part->cVersion = ProjectPart::C11;
part->cxxVersion = ProjectPart::CXX11;
part->cxxExtensions = ProjectPart::AllExtensions;
part->qtVersion = ProjectPart::Qt5;
return part;
}
bool CppModelManager::isCppEditor(Core::IEditor *editor) const bool CppModelManager::isCppEditor(Core::IEditor *editor) const
{ {
return editor->context().contains(ProjectExplorer::Constants::LANG_CXX); return editor->context().contains(ProjectExplorer::Constants::LANG_CXX);

View File

@@ -74,6 +74,7 @@ public:
virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const; virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const;
virtual QFuture<void> updateProjectInfo(const ProjectInfo &newProjectInfo); virtual QFuture<void> updateProjectInfo(const ProjectInfo &newProjectInfo);
virtual QList<CppTools::ProjectPart::Ptr> projectPart(const QString &fileName) const; virtual QList<CppTools::ProjectPart::Ptr> projectPart(const QString &fileName) const;
virtual ProjectPart::Ptr fallbackProjectPart() const;
virtual CPlusPlus::Snapshot snapshot() const; virtual CPlusPlus::Snapshot snapshot() const;
virtual Document::Ptr document(const QString &fileName) const; virtual Document::Ptr document(const QString &fileName) const;

View File

@@ -147,7 +147,7 @@ void ProjectPart::evaluateToolchain(const ToolChain *tc,
if (cxx & ToolChain::MicrosoftExtensions) if (cxx & ToolChain::MicrosoftExtensions)
cxxExtensions |= MicrosoftExtensions; cxxExtensions |= MicrosoftExtensions;
if (cxx & ToolChain::OpenMP) if (cxx & ToolChain::OpenMP)
cxxExtensions |= OpenMP; cxxExtensions |= OpenMPExtensions;
cWarningFlags = tc->warningFlags(cflags); cWarningFlags = tc->warningFlags(cflags);
cxxWarningFlags = tc->warningFlags(cxxflags); cxxWarningFlags = tc->warningFlags(cxxflags);

View File

@@ -85,7 +85,9 @@ public:
GnuExtensions = 0x1, GnuExtensions = 0x1,
MicrosoftExtensions = 0x2, MicrosoftExtensions = 0x2,
BorlandExtensions = 0x4, BorlandExtensions = 0x4,
OpenMP = 0x8 OpenMPExtensions = 0x8,
AllExtensions = GnuExtensions | MicrosoftExtensions | BorlandExtensions | OpenMPExtensions
}; };
Q_DECLARE_FLAGS(CXXExtensions, CXXExtension) Q_DECLARE_FLAGS(CXXExtensions, CXXExtension)
@@ -217,6 +219,7 @@ public:
virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const = 0; virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const = 0;
virtual QFuture<void> updateProjectInfo(const ProjectInfo &pinfo) = 0; virtual QFuture<void> updateProjectInfo(const ProjectInfo &pinfo) = 0;
virtual QList<ProjectPart::Ptr> projectPart(const QString &fileName) const = 0; virtual QList<ProjectPart::Ptr> projectPart(const QString &fileName) const = 0;
virtual ProjectPart::Ptr fallbackProjectPart() const = 0;
virtual QStringList includePaths() = 0; virtual QStringList includePaths() = 0;