CppTools: Make updateProjectPart() const

...and rename to "determineProjectPart".

This is in preparation for a follow-up change. determineProjectPart()
should not set any state.

Change-Id: Iad7be8638fd97a79a4227a944896ac9af0a36862
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
This commit is contained in:
Nikolai Kosjar
2015-07-07 15:17:58 +02:00
parent a32a9b3d2a
commit 91c497b1ae
4 changed files with 18 additions and 16 deletions

View File

@@ -45,7 +45,7 @@ namespace CppTools {
the "best" project part for a file.
Derived classes are expected to implement update() by using the protected
mutex, updateProjectPart() and by respecting the options set by the client.
mutex, determineProjectPart() and by respecting the options set by the client.
*/
BaseEditorDocumentParser::BaseEditorDocumentParser(const QString &filePath)
@@ -115,33 +115,35 @@ BaseEditorDocumentParser *BaseEditorDocumentParser::get(const QString &filePath)
return 0;
}
void BaseEditorDocumentParser::updateProjectPart()
ProjectPart::Ptr BaseEditorDocumentParser::determineProjectPart() const
{
if (m_manuallySetProjectPart) {
m_projectPart = m_manuallySetProjectPart;
return;
}
if (m_manuallySetProjectPart)
return m_manuallySetProjectPart;
ProjectPart::Ptr projectPart = m_projectPart;
CppModelManager *cmm = CppModelManager::instance();
QList<ProjectPart::Ptr> projectParts = cmm->projectPart(m_filePath);
if (projectParts.isEmpty()) {
if (m_projectPart)
if (projectPart)
// File is not directly part of any project, but we got one before. We will re-use it,
// because re-calculating this can be expensive when the dependency table is big.
return;
return projectPart;
// Fall-back step 1: Get some parts through the dependency table:
projectParts = cmm->projectPartFromDependencies(Utils::FileName::fromString(m_filePath));
if (projectParts.isEmpty())
// Fall-back step 2: Use fall-back part from the model manager:
m_projectPart = cmm->fallbackProjectPart();
projectPart = cmm->fallbackProjectPart();
else
m_projectPart = projectParts.first();
projectPart = projectParts.first();
} else {
if (!projectParts.contains(m_projectPart))
if (!projectParts.contains(projectPart))
// Apparently the project file changed, so update our project part.
m_projectPart = projectParts.first();
projectPart = projectParts.first();
}
return projectPart;
}
bool BaseEditorDocumentParser::editorDefinesChanged() const

View File

@@ -63,18 +63,18 @@ public:
static BaseEditorDocumentParser *get(const QString &filePath);
protected:
void updateProjectPart();
ProjectPart::Ptr determineProjectPart() const;
bool editorDefinesChanged() const;
void resetEditorDefinesChanged();
protected:
mutable QMutex m_mutex;
ProjectPart::Ptr m_projectPart;
private:
const QString m_filePath;
ProjectPart::Ptr m_projectPart;
ProjectPart::Ptr m_manuallySetProjectPart;
bool m_usePrecompiledHeaders;

View File

@@ -62,7 +62,7 @@ void BuiltinEditorDocumentParser::update(WorkingCopy workingCopy)
QString projectConfigFile;
LanguageFeatures features = LanguageFeatures::defaultFeatures();
updateProjectPart();
m_projectPart = determineProjectPart();
if (m_forceSnapshotInvalidation) {
invalidateSnapshot = true;