CppTools: Use only const pointers for ProjectInfo and ProjectPart

All members were already const, but this makes it clear at all points of
use that these data structures are immutable.

Change-Id: Iea615c090bde462c445d15223caccc561b0c713d
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
Christian Kandeler
2021-08-20 11:21:06 +02:00
parent 5d8551559a
commit a952500e90
70 changed files with 284 additions and 271 deletions

View File

@@ -94,7 +94,7 @@ static bool isDBGenerationEnabled(ProjectExplorer::Project *project)
using namespace CppTools;
if (!project)
return false;
const ProjectInfo::Ptr projectInfo = CppModelManager::instance()->projectInfo(project);
const ProjectInfo::ConstPtr projectInfo = CppModelManager::instance()->projectInfo(project);
return projectInfo && !projectInfo->projectParts().isEmpty();
}

View File

@@ -66,7 +66,7 @@ TextEditor::AssistInterface *ClangCompletionAssistProvider::createAssistInterfac
int position,
TextEditor::AssistReason reason) const
{
const CppTools::ProjectPart::Ptr projectPart = projectPartForFileBasedOnProcessor(
const CppTools::ProjectPart::ConstPtr projectPart = projectPartForFileBasedOnProcessor(
filePath.toString());
if (projectPart) {
return new ClangCompletionAssistInterface(m_communicator,

View File

@@ -171,7 +171,7 @@ bool ClangEditorDocumentProcessor::hasProjectPart() const
return !m_projectPart.isNull();
}
CppTools::ProjectPart::Ptr ClangEditorDocumentProcessor::projectPart() const
CppTools::ProjectPart::ConstPtr ClangEditorDocumentProcessor::projectPart() const
{
return m_projectPart;
}
@@ -421,7 +421,7 @@ ClangEditorDocumentProcessor *ClangEditorDocumentProcessor::get(const QString &f
return qobject_cast<ClangEditorDocumentProcessor*>(processor);
}
static bool isProjectPartLoadedOrIsFallback(CppTools::ProjectPart::Ptr projectPart)
static bool isProjectPartLoadedOrIsFallback(CppTools::ProjectPart::ConstPtr projectPart)
{
return projectPart
&& (projectPart->id().isEmpty() || isProjectPartLoaded(projectPart));
@@ -429,7 +429,7 @@ static bool isProjectPartLoadedOrIsFallback(CppTools::ProjectPart::Ptr projectPa
void ClangEditorDocumentProcessor::updateBackendProjectPartAndDocument()
{
const CppTools::ProjectPart::Ptr projectPart = m_parser->projectPartInfo().projectPart;
const CppTools::ProjectPart::ConstPtr projectPart = m_parser->projectPartInfo().projectPart;
if (isProjectPartLoadedOrIsFallback(projectPart)) {
updateBackendDocument(*projectPart.data());
@@ -448,7 +448,7 @@ void ClangEditorDocumentProcessor::onParserFinished()
updateBackendProjectPartAndDocument();
}
void ClangEditorDocumentProcessor::updateBackendDocument(CppTools::ProjectPart &projectPart)
void ClangEditorDocumentProcessor::updateBackendDocument(const CppTools::ProjectPart &projectPart)
{
// On registration we send the document content immediately as an unsaved
// file, because

View File

@@ -67,7 +67,7 @@ public:
bool isParserRunning() const override;
bool hasProjectPart() const;
CppTools::ProjectPart::Ptr projectPart() const;
CppTools::ProjectPart::ConstPtr projectPart() const;
void clearProjectPart();
::Utils::Id diagnosticConfigId() const;
@@ -120,7 +120,7 @@ private:
void onParserFinished();
void updateBackendProjectPartAndDocument();
void updateBackendDocument(CppTools::ProjectPart &projectPart);
void updateBackendDocument(const CppTools::ProjectPart &projectPart);
void updateBackendDocumentIfProjectPartExists();
void requestAnnotationsFromBackend();
@@ -137,7 +137,7 @@ private:
ClangDiagnosticManager m_diagnosticManager;
BackendCommunicator &m_communicator;
QSharedPointer<ClangEditorDocumentParser> m_parser;
CppTools::ProjectPart::Ptr m_projectPart;
CppTools::ProjectPart::ConstPtr m_projectPart;
::Utils::Id m_diagnosticConfigId;
bool m_isProjectFile = false;
QFutureWatcher<void> m_parserWatcher;

View File

@@ -274,8 +274,8 @@ void ClangModelManagerSupport::connectToWidgetsMarkContextMenuRequested(QWidget
}
}
void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *project,
const CppTools::ProjectInfo::Ptr &projectInfo)
void ClangModelManagerSupport::updateLanguageClient(
ProjectExplorer::Project *project, const CppTools::ProjectInfo::ConstPtr &projectInfo)
{
if (!CppTools::ClangdProjectSettings(project).settings().useClangd)
return;
@@ -300,7 +300,8 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr
return;
if (!CppTools::ClangdProjectSettings(project).settings().useClangd)
return;
const CppTools::ProjectInfo::Ptr newProjectInfo = cppModelManager()->projectInfo(project);
const CppTools::ProjectInfo::ConstPtr newProjectInfo
= cppModelManager()->projectInfo(project);
if (!newProjectInfo || *newProjectInfo != *projectInfo)
return;
if (getJsonDbDir() != jsonDbDir)
@@ -321,7 +322,7 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr
return;
if (!CppTools::ClangdProjectSettings(project).settings().useClangd)
return;
const CppTools::ProjectInfo::Ptr newProjectInfo
const CppTools::ProjectInfo::ConstPtr newProjectInfo
= cppModelManager()->projectInfo(project);
if (!newProjectInfo || *newProjectInfo != *projectInfo)
return;
@@ -615,13 +616,13 @@ void ClangModelManagerSupport::onAboutToRemoveProject(ProjectExplorer::Project *
void ClangModelManagerSupport::onProjectPartsUpdated(ProjectExplorer::Project *project)
{
QTC_ASSERT(project, return);
const CppTools::ProjectInfo::Ptr projectInfo = cppModelManager()->projectInfo(project);
const CppTools::ProjectInfo::ConstPtr projectInfo = cppModelManager()->projectInfo(project);
QTC_ASSERT(projectInfo, return);
updateLanguageClient(project, projectInfo);
QStringList projectPartIds;
for (const CppTools::ProjectPart::Ptr &projectPart : projectInfo->projectParts())
for (const CppTools::ProjectPart::ConstPtr &projectPart : projectInfo->projectParts())
projectPartIds.append(projectPart->id());
onProjectPartsRemoved(projectPartIds);
}

View File

@@ -130,7 +130,7 @@ private:
void connectToWidgetsMarkContextMenuRequested(QWidget *editorWidget);
void updateLanguageClient(ProjectExplorer::Project *project,
const CppTools::ProjectInfo::Ptr &projectInfo);
const CppTools::ProjectInfo::ConstPtr &projectInfo);
ClangdClient *createClient(ProjectExplorer::Project *project, const Utils::FilePath &jsonDbDir);
void claimNonProjectSources(ClangdClient *fallbackClient);

View File

@@ -39,7 +39,7 @@ namespace ClangCodeModel {
namespace Internal {
void RefactoringEngine::startLocalRenaming(const CppTools::CursorInEditor &data,
CppTools::ProjectPart *,
const CppTools::ProjectPart *,
RenameCallback &&renameSymbolsCallback)
{
ClangdClient * const client

View File

@@ -42,7 +42,7 @@ class RefactoringEngine : public CppTools::RefactoringEngineInterface
{
public:
void startLocalRenaming(const CppTools::CursorInEditor &data,
CppTools::ProjectPart *projectPart,
const CppTools::ProjectPart *projectPart,
RenameCallback &&renameSymbolsCallback) override;
void globalRename(const CppTools::CursorInEditor &cursor, CppTools::UsagesCallback &&callback,
const QString &replacement) override;

View File

@@ -87,7 +87,7 @@ ProjectExplorer::Project *projectForCurrentEditor()
return nullptr;
if (auto processor = ClangEditorDocumentProcessor::get(filePath)) {
if (ProjectPart::Ptr projectPart = processor->projectPart())
if (ProjectPart::ConstPtr projectPart = processor->projectPart())
return projectForProjectPart(*projectPart);
}

View File

@@ -109,21 +109,21 @@ private:
}
};
ProjectPart::Ptr projectPartForFile(const QString &filePath)
ProjectPart::ConstPtr projectPartForFile(const QString &filePath)
{
if (const auto parser = CppTools::BaseEditorDocumentParser::get(filePath))
return parser->projectPartInfo().projectPart;
return ProjectPart::Ptr();
return ProjectPart::ConstPtr();
}
ProjectPart::Ptr projectPartForFileBasedOnProcessor(const QString &filePath)
ProjectPart::ConstPtr projectPartForFileBasedOnProcessor(const QString &filePath)
{
if (const auto processor = ClangEditorDocumentProcessor::get(filePath))
return processor->projectPart();
return ProjectPart::Ptr();
return ProjectPart::ConstPtr();
}
bool isProjectPartLoaded(const ProjectPart::Ptr projectPart)
bool isProjectPartLoaded(const ProjectPart::ConstPtr projectPart)
{
if (projectPart)
return !CppModelManager::instance()->projectPartForId(projectPart->id()).isNull();
@@ -132,7 +132,7 @@ bool isProjectPartLoaded(const ProjectPart::Ptr projectPart)
QString projectPartIdForFile(const QString &filePath)
{
const ProjectPart::Ptr projectPart = projectPartForFile(filePath);
const ProjectPart::ConstPtr projectPart = projectPartForFile(filePath);
if (isProjectPartLoaded(projectPart))
return projectPart->id(); // OK, Project Part is still loaded
@@ -371,7 +371,7 @@ static QJsonObject createFileObject(const FilePath &buildDir,
return fileObject;
}
GenerateCompilationDbResult generateCompilationDB(const CppTools::ProjectInfo::Ptr projectInfo,
GenerateCompilationDbResult generateCompilationDB(const CppTools::ProjectInfo::ConstPtr projectInfo,
CompilationDbPurpose purpose,
const ClangDiagnosticConfig &warningsConfig,
const QStringList &projectOptions)
@@ -392,7 +392,7 @@ GenerateCompilationDbResult generateCompilationDB(const CppTools::ProjectInfo::P
}
compileCommandsFile.write("[");
for (ProjectPart::Ptr projectPart : projectInfo->projectParts()) {
for (ProjectPart::ConstPtr projectPart : projectInfo->projectParts()) {
QStringList args;
if (purpose == CompilationDbPurpose::Project)
args = projectPartArguments(*projectPart);

View File

@@ -61,9 +61,9 @@ QStringList createClangOptions(const CppTools::ProjectPart &projectPart, const Q
const CppTools::ClangDiagnosticConfig &warningsConfig,
const QStringList &projectOptions);
CppTools::ProjectPart::Ptr projectPartForFile(const QString &filePath);
CppTools::ProjectPart::Ptr projectPartForFileBasedOnProcessor(const QString &filePath);
bool isProjectPartLoaded(const CppTools::ProjectPart::Ptr projectPart);
CppTools::ProjectPart::ConstPtr projectPartForFile(const QString &filePath);
CppTools::ProjectPart::ConstPtr projectPartForFileBasedOnProcessor(const QString &filePath);
bool isProjectPartLoaded(const CppTools::ProjectPart::ConstPtr projectPart);
QString projectPartIdForFile(const QString &filePath);
int clangColumn(const QTextBlock &line, int cppEditorColumn);
int cppEditorColumn(const QTextBlock &line, int clangColumn);
@@ -87,7 +87,7 @@ public:
};
enum class CompilationDbPurpose { Project, CodeModel };
GenerateCompilationDbResult generateCompilationDB(const CppTools::ProjectInfo::Ptr projectInfo,
GenerateCompilationDbResult generateCompilationDB(const CppTools::ProjectInfo::ConstPtr projectInfo,
CompilationDbPurpose purpose, const CppTools::ClangDiagnosticConfig &warningsConfig,
const QStringList &projectOptions);

View File

@@ -246,7 +246,7 @@ bool OpenEditorAtCursorPosition::waitUntil(const std::function<bool ()> &conditi
return false;
}
CppTools::ProjectPart::Ptr createProjectPart(const Utils::FilePath &projectFilePath,
CppTools::ProjectPart::ConstPtr createProjectPart(const Utils::FilePath &projectFilePath,
const QStringList &files,
const ProjectExplorer::Macros &macros)
{
@@ -262,15 +262,15 @@ CppTools::ProjectPart::Ptr createProjectPart(const Utils::FilePath &projectFileP
return ProjectPart::create(projectFilePath, rpp, {}, projectFiles);
}
CppTools::ProjectInfo::Ptr createProjectInfo(ProjectExplorer::Project *project,
CppTools::ProjectInfo::ConstPtr createProjectInfo(ProjectExplorer::Project *project,
const QStringList &files,
const ProjectExplorer::Macros &macros)
{
using namespace CppTools;
QTC_ASSERT(project, return {});
const CppTools::ProjectPart::Ptr projectPart = createProjectPart(project->projectFilePath(),
files, macros);
const CppTools::ProjectPart::ConstPtr projectPart
= createProjectPart(project->projectFilePath(), files, macros);
const auto projectInfo = ProjectInfo::create(
{project, ProjectExplorer::KitInfo(nullptr), {}, {}}, {projectPart});
return projectInfo;
@@ -292,7 +292,7 @@ public:
bool load()
{
m_project = m_helper.createProject(QLatin1String("testProject"));
const CppTools::ProjectInfo::Ptr projectInfo = createProjectInfo(m_project,
const CppTools::ProjectInfo::ConstPtr projectInfo = createProjectInfo(m_project,
m_projectFiles,
m_projectMacros);
const QSet<QString> filesIndexedAfterLoading = m_helper.updateProjectInfo(projectInfo);
@@ -302,14 +302,14 @@ public:
bool updateProject(const ProjectExplorer::Macros &updatedProjectMacros)
{
QTC_ASSERT(m_project, return false);
const CppTools::ProjectInfo::Ptr updatedProjectInfo
const CppTools::ProjectInfo::ConstPtr updatedProjectInfo
= createProjectInfo(m_project, m_projectFiles, updatedProjectMacros);
return updateProjectInfo(updatedProjectInfo);
}
private:
bool updateProjectInfo(const CppTools::ProjectInfo::Ptr &projectInfo)
bool updateProjectInfo(const CppTools::ProjectInfo::ConstPtr &projectInfo)
{
const QSet<QString> filesIndexedAfterLoading = m_helper.updateProjectInfo(projectInfo);
return m_projectFiles.size() == filesIndexedAfterLoading.size();