diff options
Diffstat (limited to 'src/plugins/cpptools/cppsnapshotupdater.cpp')
-rw-r--r-- | src/plugins/cpptools/cppsnapshotupdater.cpp | 19 |
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()); |