summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppsnapshotupdater.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2013-09-30 13:36:01 +0200
committerErik Verbruggen <erik.verbruggen@digia.com>2013-10-01 13:02:45 +0200
commit507452f0971105e772e2c4913720cdd136ed2ca9 (patch)
tree230680e9d1a7c550770be5592121e71ab28aef61 /src/plugins/cpptools/cppsnapshotupdater.cpp
parent6603d9ae5fca16b0797709e9ba47bd47fd67ec3f (diff)
downloadqt-creator-507452f0971105e772e2c4913720cdd136ed2ca9.tar.gz
CppTools: honor pre-compiled headers in the code-model.
Task-number: QTCREATORBUG-476 Change-Id: I82ed92acdcda551d2c6a9ca221832ac20117a08f Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cppsnapshotupdater.cpp')
-rw-r--r--src/plugins/cpptools/cppsnapshotupdater.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppsnapshotupdater.cpp b/src/plugins/cpptools/cppsnapshotupdater.cpp
index f12f888af7..473ec66b60 100644
--- a/src/plugins/cpptools/cppsnapshotupdater.cpp
+++ b/src/plugins/cpptools/cppsnapshotupdater.cpp
@@ -39,6 +39,7 @@ using namespace CppTools::Internal;
SnapshotUpdater::SnapshotUpdater(const QString &fileInEditor)
: m_mutex(QMutex::Recursive)
, m_fileInEditor(fileInEditor)
+ , m_usePrecompiledHeaders(false)
{
}
@@ -56,6 +57,7 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy)
QByteArray configFile = modelManager->codeModelConfiguration();
QStringList includePaths;
QStringList frameworkPaths;
+ QStringList precompiledHeaders;
updateProjectPart();
@@ -63,6 +65,8 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy)
configFile += m_projectPart->defines;
includePaths = m_projectPart->includePaths;
frameworkPaths = m_projectPart->frameworkPaths;
+ if (m_usePrecompiledHeaders)
+ precompiledHeaders = m_projectPart->precompiledHeaders;
}
if (configFile != m_configFile) {
@@ -81,6 +85,11 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy)
invalidateSnapshot = true;
}
+ if (precompiledHeaders != m_precompiledHeaders) {
+ m_precompiledHeaders = precompiledHeaders;
+ invalidateSnapshot = true;
+ }
+
unsigned rev = 0;
if (Document::Ptr doc = document())
rev = doc->revision();
@@ -130,6 +139,9 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy)
preproc.setIncludePaths(m_includePaths);
preproc.setFrameworkPaths(m_frameworkPaths);
preproc.run(configurationFileName);
+ if (m_usePrecompiledHeaders)
+ foreach (const QString &precompiledHeader, m_precompiledHeaders)
+ preproc.run(precompiledHeader);
preproc.run(m_fileInEditor);
m_snapshot = preproc.snapshot();
@@ -159,6 +171,13 @@ Document::Ptr SnapshotUpdater::document() const
return m_snapshot.document(m_fileInEditor);
}
+void SnapshotUpdater::setUsePrecompiledHeaders(bool usePrecompiledHeaders)
+{
+ QMutexLocker locker(&m_mutex);
+
+ m_usePrecompiledHeaders = usePrecompiledHeaders;
+}
+
void SnapshotUpdater::updateProjectPart()
{
CppModelManager *cmm = dynamic_cast<CppModelManager *>(CppModelManagerInterface::instance());