From 9dad47387f3bc290b1ae4fb11dc1431fec635229 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 3 Feb 2021 12:17:20 +0100 Subject: LanguageServerProtocol: add inserter for variants Change-Id: I78ff4f34dfd19dceb1f2e0912ab1a0ea036e24a4 Reviewed-by: Christian Stenger --- src/libs/languageserverprotocol/jsonobject.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/libs/languageserverprotocol/jsonobject.h') diff --git a/src/libs/languageserverprotocol/jsonobject.h b/src/libs/languageserverprotocol/jsonobject.h index ec0bf94dd7..ff2f420c87 100644 --- a/src/libs/languageserverprotocol/jsonobject.h +++ b/src/libs/languageserverprotocol/jsonobject.h @@ -70,6 +70,11 @@ protected: iterator insert(const QString &key, const JsonObject &value); iterator insert(const QString &key, const QJsonValue &value); + template + iterator insertVariant(const QString &key, const V &variant); + template + iterator insertVariant(const QString &key, const V &variant); + // QJSonObject redirections QJsonValue value(const QString &key) const { return m_jsonObject.value(key); } bool contains(const QString &key) const { return m_jsonObject.contains(key); } @@ -129,6 +134,19 @@ private: QJsonObject m_jsonObject; }; +template +JsonObject::iterator JsonObject::insertVariant(const QString &key, const V &variant) +{ + return Utils::holds_alternative(variant) ? insert(key, Utils::get(variant)) : end(); +} + +template +JsonObject::iterator JsonObject::insertVariant(const QString &key, const V &variant) +{ + auto result = insertVariant(key, variant); + return result != end() ? result : insertVariant(key, variant); +} + template T JsonObject::typedValue(const QString &key) const { -- cgit v1.2.1