diff options
| author | hjk <hjk@qt.io> | 2023-07-11 14:19:33 +0200 |
|---|---|---|
| committer | hjk <hjk@qt.io> | 2023-07-12 13:00:48 +0000 |
| commit | 90ba1405456568fcc060fa68ac41ff5490258192 (patch) | |
| tree | 12b29905961d7555e112031d2ed24c14098188db /src/libs/cplusplus/cppmodelmanagerbase.cpp | |
| parent | 1d59a37acb14ff3c87c8870010acc859e30f3461 (diff) | |
CplusPlus: Use plainer callbacks to interact to the CppEditor
Lets us remove a few explicit CppModelManager::instance() call
in user code later.
Change-Id: Id8d846d06a0715b3d609cc5d52cc031e1d025fb1
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/libs/cplusplus/cppmodelmanagerbase.cpp')
| -rw-r--r-- | src/libs/cplusplus/cppmodelmanagerbase.cpp | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/src/libs/cplusplus/cppmodelmanagerbase.cpp b/src/libs/cplusplus/cppmodelmanagerbase.cpp index c869fd61a0f..cff9ef99e2c 100644 --- a/src/libs/cplusplus/cppmodelmanagerbase.cpp +++ b/src/libs/cplusplus/cppmodelmanagerbase.cpp @@ -3,48 +3,57 @@ #include "cppmodelmanagerbase.h" -namespace CPlusPlus { +#include <utils/qtcassert.h> -static CppModelManagerBase *g_instance = nullptr; +namespace CPlusPlus::CppModelManagerBase { -CppModelManagerBase::CppModelManagerBase(QObject *parent) - : QObject(parent) +static bool (*setExtraDiagnosticsCallback) + (const QString &, const QString &, const QList<Document::DiagnosticMessage> &) = nullptr; + +static CPlusPlus::Snapshot (*snapshotCallback)() = nullptr; + + +bool trySetExtraDiagnostics(const QString &fileName, const QString &kind, + const QList<Document::DiagnosticMessage> &diagnostics) { - Q_ASSERT(!g_instance); - g_instance = this; + if (!setExtraDiagnosticsCallback) + return false; + return setExtraDiagnosticsCallback(fileName, kind, diagnostics); } -CppModelManagerBase::~CppModelManagerBase() +bool setExtraDiagnostics(const QString &fileName, const QString &kind, + const QList<Document::DiagnosticMessage> &diagnostics) { - Q_ASSERT(g_instance == this); - g_instance = nullptr; + QTC_ASSERT(setExtraDiagnosticsCallback, return false); + return setExtraDiagnosticsCallback(fileName, kind, diagnostics); } -CppModelManagerBase *CppModelManagerBase::instance() +Snapshot snapshot() { - return g_instance; + QTC_ASSERT(snapshotCallback, return {}); + return snapshotCallback(); } -bool CppModelManagerBase::trySetExtraDiagnostics(const QString &fileName, const QString &kind, - const QList<CPlusPlus::Document::DiagnosticMessage> &diagnostics) +bool hasSnapshots() { - if (CppModelManagerBase *mm = instance()) - return mm->setExtraDiagnostics(fileName, kind, diagnostics); - return false; + return snapshotCallback; } -bool CppModelManagerBase::setExtraDiagnostics(const QString &fileName, const QString &kind, - const QList<CPlusPlus::Document::DiagnosticMessage> &diagnostics) +// Installation + +void registerSetExtraDiagnosticsCallback( + bool (*callback)(const QString &, const QString &, const QList<Document::DiagnosticMessage> &)) { - Q_UNUSED(fileName) - Q_UNUSED(kind) - Q_UNUSED(diagnostics) - return false; + QTC_ASSERT(callback, return); + QTC_CHECK(!setExtraDiagnosticsCallback); // bark when used twice + setExtraDiagnosticsCallback = callback; } -CPlusPlus::Snapshot CppModelManagerBase::snapshot() const +void registerSnapshotCallback(Snapshot (*callback)()) { - return CPlusPlus::Snapshot(); + QTC_ASSERT(callback, return); + QTC_CHECK(!snapshotCallback); // bark when used twice + snapshotCallback = callback; } -} // namespace CPlusPlus +} // CPlusPlus::CppModelManagerBase |
