diff options
author | David Schulz <david.schulz@qt.io> | 2021-02-03 12:17:20 +0100 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2021-02-15 07:13:16 +0000 |
commit | 9dad47387f3bc290b1ae4fb11dc1431fec635229 (patch) | |
tree | 30b0630e2deacad2271ec24850db430ec3115fb9 /src/libs/languageserverprotocol/jsonobject.h | |
parent | 26e540e73d09ef01eb180106f5586118de6ab631 (diff) | |
download | qt-creator-9dad47387f3bc290b1ae4fb11dc1431fec635229.tar.gz |
LanguageServerProtocol: add inserter for variants
Change-Id: I78ff4f34dfd19dceb1f2e0912ab1a0ea036e24a4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/libs/languageserverprotocol/jsonobject.h')
-rw-r--r-- | src/libs/languageserverprotocol/jsonobject.h | 18 |
1 files changed, 18 insertions, 0 deletions
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 <typename T, typename V> + iterator insertVariant(const QString &key, const V &variant); + template <typename T1, typename T2, typename... Args, typename V> + 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<typename T, typename V> +JsonObject::iterator JsonObject::insertVariant(const QString &key, const V &variant) +{ + return Utils::holds_alternative<T>(variant) ? insert(key, Utils::get<T>(variant)) : end(); +} + +template<typename T1, typename T2, typename... Args, typename V> +JsonObject::iterator JsonObject::insertVariant(const QString &key, const V &variant) +{ + auto result = insertVariant<T1>(key, variant); + return result != end() ? result : insertVariant<T2, Args...>(key, variant); +} + template<typename T> T JsonObject::typedValue(const QString &key) const { |