CppEditor: Clean up ModelManagerSupport creation

No need for "providers" etc.

Change-Id: I4ae9e8ecd6b3554711e002f233c13fd7758f01e4
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2022-08-01 17:43:43 +02:00
parent dd37abed6b
commit 240105f55f
10 changed files with 19 additions and 91 deletions

View File

@@ -26,6 +26,7 @@
#include "clangcodemodelplugin.h" #include "clangcodemodelplugin.h"
#include "clangconstants.h" #include "clangconstants.h"
#include "clangmodelmanagersupport.h"
#include "clangutils.h" #include "clangutils.h"
#ifdef WITH_TESTS #ifdef WITH_TESTS
@@ -115,7 +116,8 @@ bool ClangCodeModelPlugin::initialize(const QStringList &arguments, QString *err
this, this,
&ClangCodeModelPlugin::maybeHandleBatchFileAndExit); &ClangCodeModelPlugin::maybeHandleBatchFileAndExit);
CppEditor::CppModelManager::instance()->activateClangCodeModel(&m_modelManagerSupportProvider); CppEditor::CppModelManager::instance()->activateClangCodeModel(
std::make_unique<ClangModelManagerSupport>());
createCompilationDBButton(); createCompilationDBButton();

View File

@@ -25,7 +25,6 @@
#pragma once #pragma once
#include "clangmodelmanagersupport.h"
#include "clangutils.h" #include "clangutils.h"
#include <extensionsystem/iplugin.h> #include <extensionsystem/iplugin.h>
@@ -53,7 +52,6 @@ private:
void generateCompilationDB(); void generateCompilationDB();
void createCompilationDBButton(); void createCompilationDBButton();
ClangModelManagerSupportProvider m_modelManagerSupportProvider;
Utils::ParameterAction *m_generateCompilationDBAction = nullptr; Utils::ParameterAction *m_generateCompilationDBAction = nullptr;
QFutureWatcher<GenerateCompilationDbResult> m_generatorWatcher; QFutureWatcher<GenerateCompilationDbResult> m_generatorWatcher;
#ifdef WITH_TESTS #ifdef WITH_TESTS

View File

@@ -28,7 +28,6 @@
namespace ClangCodeModel { namespace ClangCodeModel {
namespace Constants { namespace Constants {
const char CLANG_MODELMANAGERSUPPORT_ID[] = "ClangCodeModel.ClangCodeModel";
const char GENERATE_COMPILATION_DB[] = "ClangCodeModel.GenerateCompilationDB"; const char GENERATE_COMPILATION_DB[] = "ClangCodeModel.GenerateCompilationDB";
const char CLANG_ERROR[] = "Clang.Error"; const char CLANG_ERROR[] = "Clang.Error";
const char CLANG_WARNING[] = "Clang.Warning"; const char CLANG_WARNING[] = "Clang.Warning";

View File

@@ -825,22 +825,5 @@ ClangModelManagerSupport *ClangModelManagerSupport::instance()
return m_instance; return m_instance;
} }
QString ClangModelManagerSupportProvider::id() const
{
return QLatin1String(Constants::CLANG_MODELMANAGERSUPPORT_ID);
}
QString ClangModelManagerSupportProvider::displayName() const
{
//: Display name
return QCoreApplication::translate("ClangCodeModel::Internal::ModelManagerSupport",
"Clang");
}
CppEditor::ModelManagerSupport::Ptr ClangModelManagerSupportProvider::createModelManagerSupport()
{
return CppEditor::ModelManagerSupport::Ptr(new ClangModelManagerSupport);
}
} // Internal } // Internal
} // ClangCodeModel } // ClangCodeModel

View File

@@ -123,14 +123,5 @@ private:
QHash<Utils::FilePath, QString> m_queuedShadowDocuments; QHash<Utils::FilePath, QString> m_queuedShadowDocuments;
}; };
class ClangModelManagerSupportProvider : public CppEditor::ModelManagerSupportProvider
{
public:
QString id() const override;
QString displayName() const override;
CppEditor::ModelManagerSupport::Ptr createModelManagerSupport() override;
};
} // namespace Internal } // namespace Internal
} // namespace ClangCodeModel } // namespace ClangCodeModel

View File

@@ -88,22 +88,6 @@ private:
}; };
} // anonymous namespace } // anonymous namespace
QString BuiltinModelManagerSupportProvider::id() const
{
return QLatin1String("CppEditor.BuiltinCodeModel");
}
QString BuiltinModelManagerSupportProvider::displayName() const
{
return QCoreApplication::translate("ModelManagerSupportInternal::displayName",
"%1 Built-in").arg(Core::Constants::IDE_DISPLAY_NAME);
}
ModelManagerSupport::Ptr BuiltinModelManagerSupportProvider::createModelManagerSupport()
{
return ModelManagerSupport::Ptr(new BuiltinModelManagerSupport);
}
BuiltinModelManagerSupport::BuiltinModelManagerSupport() BuiltinModelManagerSupport::BuiltinModelManagerSupport()
: m_completionAssistProvider(new InternalCompletionAssistProvider), : m_completionAssistProvider(new InternalCompletionAssistProvider),
m_followSymbol(new FollowSymbolUnderCursor) m_followSymbol(new FollowSymbolUnderCursor)

View File

@@ -65,13 +65,4 @@ private:
QScopedPointer<FollowSymbolUnderCursor> m_followSymbol; QScopedPointer<FollowSymbolUnderCursor> m_followSymbol;
}; };
class BuiltinModelManagerSupportProvider : public ModelManagerSupportProvider
{
public:
QString id() const override;
QString displayName() const override;
ModelManagerSupport::Ptr createModelManagerSupport() override;
};
} // namespace CppEditor::Internal } // namespace CppEditor::Internal

View File

@@ -177,8 +177,9 @@ public:
QSet<AbstractEditorSupport *> m_extraEditorSupports; QSet<AbstractEditorSupport *> m_extraEditorSupports;
// Model Manager Supports for e.g. completion and highlighting // Model Manager Supports for e.g. completion and highlighting
ModelManagerSupport::Ptr m_builtinModelManagerSupport; BuiltinModelManagerSupport m_builtinModelManagerSupport;
ModelManagerSupport::Ptr m_activeModelManagerSupport; std::unique_ptr<ModelManagerSupport> m_extendedModelManagerSupport;
ModelManagerSupport *m_activeModelManagerSupport = &m_builtinModelManagerSupport;
// Indexing // Indexing
CppIndexingSupport *m_internalIndexingSupport; CppIndexingSupport *m_internalIndexingSupport;
@@ -307,8 +308,8 @@ QString CppModelManager::editorConfigurationFileName()
ModelManagerSupport *CppModelManager::modelManagerSupport(Backend backend) const ModelManagerSupport *CppModelManager::modelManagerSupport(Backend backend) const
{ {
return (backend == Backend::Builtin return backend == Backend::Builtin
? d->m_builtinModelManagerSupport : d->m_activeModelManagerSupport).data(); ? &d->m_builtinModelManagerSupport : d->m_activeModelManagerSupport;
} }
void CppModelManager::startLocalRenaming(const CursorInEditor &data, void CppModelManager::startLocalRenaming(const CursorInEditor &data,
@@ -477,8 +478,7 @@ SignalSlotType CppModelManager::getSignalSlotType(const QString &filePath,
FollowSymbolUnderCursor &CppModelManager::builtinFollowSymbol() FollowSymbolUnderCursor &CppModelManager::builtinFollowSymbol()
{ {
return instance()->d->m_builtinModelManagerSupport.staticCast<BuiltinModelManagerSupport>() return instance()->d->m_builtinModelManagerSupport.followSymbolInterface();
->followSymbolInterface();
} }
template<class FilterClass> template<class FilterClass>
@@ -551,7 +551,7 @@ Core::ILocatorFilter *CppModelManager::currentDocumentFilter() const
std::unique_ptr<AbstractOverviewModel> CppModelManager::createOverviewModel() const std::unique_ptr<AbstractOverviewModel> CppModelManager::createOverviewModel() const
{ {
return d->m_builtinModelManagerSupport->createOverviewModel(); return d->m_builtinModelManagerSupport.createOverviewModel();
} }
QString CppModelManager::configurationFileName() QString CppModelManager::configurationFileName()
@@ -620,13 +620,6 @@ void CppModelManager::initCppTools()
std::make_unique<Internal::CppCurrentDocumentFilter>(this)); std::make_unique<Internal::CppCurrentDocumentFilter>(this));
} }
void CppModelManager::initializeBuiltinModelManagerSupport()
{
d->m_builtinModelManagerSupport
= BuiltinModelManagerSupportProvider().createModelManagerSupport();
d->m_activeModelManagerSupport = d->m_builtinModelManagerSupport;
}
CppModelManager::CppModelManager() CppModelManager::CppModelManager()
: CppModelManagerBase(nullptr) : CppModelManagerBase(nullptr)
, d(new CppModelManagerPrivate) , d(new CppModelManagerPrivate)
@@ -691,8 +684,6 @@ CppModelManager::CppModelManager()
qRegisterMetaType<QList<Document::DiagnosticMessage>>( qRegisterMetaType<QList<Document::DiagnosticMessage>>(
"QList<CPlusPlus::Document::DiagnosticMessage>"); "QList<CPlusPlus::Document::DiagnosticMessage>");
initializeBuiltinModelManagerSupport();
d->m_internalIndexingSupport = new BuiltinIndexingSupport; d->m_internalIndexingSupport = new BuiltinIndexingSupport;
initCppTools(); initCppTools();
@@ -1308,7 +1299,7 @@ bool CppModelManager::usesClangd(const TextEditor::TextDocument *document)
bool CppModelManager::isClangCodeModelActive() const bool CppModelManager::isClangCodeModelActive() const
{ {
return d->m_activeModelManagerSupport != d->m_builtinModelManagerSupport; return d->m_activeModelManagerSupport != &d->m_builtinModelManagerSupport;
} }
void CppModelManager::emitDocumentUpdated(Document::Ptr doc) void CppModelManager::emitDocumentUpdated(Document::Ptr doc)
@@ -1639,21 +1630,20 @@ void CppModelManager::finishedRefreshingSourceFiles(const QSet<QString> &files)
} }
void CppModelManager::activateClangCodeModel( void CppModelManager::activateClangCodeModel(
ModelManagerSupportProvider *modelManagerSupportProvider) std::unique_ptr<ModelManagerSupport> &&modelManagerSupport)
{ {
QTC_ASSERT(modelManagerSupportProvider, return); d->m_extendedModelManagerSupport = std::move(modelManagerSupport);
d->m_activeModelManagerSupport = d->m_extendedModelManagerSupport.get();
d->m_activeModelManagerSupport = modelManagerSupportProvider->createModelManagerSupport();
} }
CppCompletionAssistProvider *CppModelManager::completionAssistProvider() const CppCompletionAssistProvider *CppModelManager::completionAssistProvider() const
{ {
return d->m_builtinModelManagerSupport->completionAssistProvider(); return d->m_builtinModelManagerSupport.completionAssistProvider();
} }
TextEditor::BaseHoverHandler *CppModelManager::createHoverHandler() const TextEditor::BaseHoverHandler *CppModelManager::createHoverHandler() const
{ {
return d->m_builtinModelManagerSupport->createHoverHandler(); return d->m_builtinModelManagerSupport.createHoverHandler();
} }
void CppModelManager::followSymbol(const CursorInEditor &data, void CppModelManager::followSymbol(const CursorInEditor &data,

View File

@@ -41,6 +41,8 @@
#include <QObject> #include <QObject>
#include <QStringList> #include <QStringList>
#include <memory>
namespace Core { namespace Core {
class IDocument; class IDocument;
class IEditor; class IEditor;
@@ -177,7 +179,7 @@ public:
void finishedRefreshingSourceFiles(const QSet<QString> &files); void finishedRefreshingSourceFiles(const QSet<QString> &files);
void activateClangCodeModel(ModelManagerSupportProvider *modelManagerSupportProvider); void activateClangCodeModel(std::unique_ptr<ModelManagerSupport> &&modelManagerSupport);
CppCompletionAssistProvider *completionAssistProvider() const; CppCompletionAssistProvider *completionAssistProvider() const;
BaseEditorDocumentProcessor *createEditorDocumentProcessor( BaseEditorDocumentProcessor *createEditorDocumentProcessor(
TextEditor::TextDocument *baseTextDocument) const; TextEditor::TextDocument *baseTextDocument) const;
@@ -291,7 +293,6 @@ private:
void onCoreAboutToClose(); void onCoreAboutToClose();
void setupFallbackProjectPart(); void setupFallbackProjectPart();
void initializeBuiltinModelManagerSupport();
void delayedGC(); void delayedGC();
void recalculateProjectPartMappings(); void recalculateProjectPartMappings();

View File

@@ -76,15 +76,4 @@ public:
virtual void switchHeaderSource(const Utils::FilePath &filePath, bool inNextSplit) = 0; virtual void switchHeaderSource(const Utils::FilePath &filePath, bool inNextSplit) = 0;
}; };
class CPPEDITOR_EXPORT ModelManagerSupportProvider
{
public:
virtual ~ModelManagerSupportProvider() = default;
virtual QString id() const = 0;
virtual QString displayName() const = 0;
virtual ModelManagerSupport::Ptr createModelManagerSupport() = 0;
};
} // CppEditor namespace } // CppEditor namespace