// Copyright (C) 2018 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0 WITH Qt-GPL-exception-1.0 #include "clientcapabilities.h" namespace LanguageServerProtocol { std::optional> SymbolCapabilities::SymbolKindCapabilities::valueSet() const { if (std::optional> array = optionalArray(valueSetKey)) { return std::make_optional( Utils::transform(*array, [](int value) { return static_cast(value); })); } return std::nullopt; } void SymbolCapabilities::SymbolKindCapabilities::setValueSet(const QList &valueSet) { insert(valueSetKey, enumArrayToJsonArray(valueSet)); } WorkspaceClientCapabilities::WorkspaceClientCapabilities() { setWorkspaceFolders(true); } std::optional> SemanticTokensClientCapabilities::Requests::range() const { using RetType = std::variant; const QJsonValue &rangeOptions = value(rangeKey); if (rangeOptions.isBool()) return RetType(rangeOptions.toBool()); if (rangeOptions.isObject()) return RetType(rangeOptions.toObject()); return std::nullopt; } void SemanticTokensClientCapabilities::Requests::setRange( const std::variant &range) { insertVariant(rangeKey, range); } std::optional> SemanticTokensClientCapabilities::Requests::full() const { using RetType = std::variant; const QJsonValue &fullOptions = value(fullKey); if (fullOptions.isBool()) return RetType(fullOptions.toBool()); if (fullOptions.isObject()) return RetType(FullSemanticTokenOptions(fullOptions.toObject())); return std::nullopt; } void SemanticTokensClientCapabilities::Requests::setFull( const std::variant &full) { insertVariant(fullKey, full); } std::optional TextDocumentClientCapabilities::semanticTokens() const { return optionalValue(semanticTokensKey); } void TextDocumentClientCapabilities::setSemanticTokens( const SemanticTokensClientCapabilities &semanticTokens) { insert(semanticTokensKey, semanticTokens); } bool SemanticTokensClientCapabilities::isValid() const { return contains(requestsKey) && contains(tokenTypesKey) && contains(tokenModifiersKey) && contains(formatsKey); } } // namespace LanguageServerProtocol