// Copyright (C) 2018 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include "languageclient_global.h" #include namespace LanguageClient { class DynamicCapability { public: DynamicCapability() = default; void enable(const QString &id, const QJsonValue &options) { QTC_CHECK(!m_enabled); m_enabled = true; m_id = id; m_options = options; } void disable() { m_enabled = false; m_id.clear(); m_options = QJsonValue(); } bool enabled() const { return m_enabled; } QJsonValue options() const { return m_options; } private: bool m_enabled = false; QString m_id; QJsonValue m_options; }; class LANGUAGECLIENT_EXPORT DynamicCapabilities { public: DynamicCapabilities() = default; void registerCapability(const QList ®istrations); void unregisterCapability(const QList &unregistrations); std::optional isRegistered(const QString &method) const; QJsonValue option(const QString &method) const { return m_capability.value(method).options(); } QStringList registeredMethods() const; void reset(); private: QHash m_capability; QHash m_methodForId; }; } // namespace LanguageClient