diff options
Diffstat (limited to 'include/lib/ArduinoJson/JsonVariantSubscripts.hpp')
-rw-r--r-- | include/lib/ArduinoJson/JsonVariantSubscripts.hpp | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/include/lib/ArduinoJson/JsonVariantSubscripts.hpp b/include/lib/ArduinoJson/JsonVariantSubscripts.hpp deleted file mode 100644 index 279ee01..0000000 --- a/include/lib/ArduinoJson/JsonVariantSubscripts.hpp +++ /dev/null @@ -1,86 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Data/JsonVariantAs.hpp" -#include "Polyfills/attributes.hpp" -#include "StringTraits/StringTraits.hpp" -#include "TypeTraits/EnableIf.hpp" - -namespace ArduinoJson { -namespace Internals { - -// Forward declarations. -class JsonArraySubscript; -template <typename TKey> -class JsonObjectSubscript; - -template <typename TImpl> -class JsonVariantSubscripts { - public: - // Mimics an array or an object. - // Returns the size of the array or object if the variant has that type. - // Returns 0 if the variant is neither an array nor an object - size_t size() const { - return impl()->template as<JsonArray>().size() + - impl()->template as<JsonObject>().size(); - } - - // Mimics an array. - // Returns the element at specified index if the variant is an array. - // Returns JsonVariant::invalid() if the variant is not an array. - FORCE_INLINE const JsonArraySubscript operator[](size_t index) const; - FORCE_INLINE JsonArraySubscript operator[](size_t index); - - // Mimics an object. - // Returns the value associated with the specified key if the variant is - // an object. - // Return JsonVariant::invalid() if the variant is not an object. - // - // const JsonObjectSubscript operator[](TKey) const; - // TKey = const std::string&, const String& - template <typename TString> - FORCE_INLINE - typename EnableIf<StringTraits<TString>::has_equals, - const JsonObjectSubscript<const TString &> >::type - operator[](const TString &key) const { - return impl()->template as<JsonObject>()[key]; - } - // - // const JsonObjectSubscript operator[](TKey) const; - // TKey = const std::string&, const String& - template <typename TString> - FORCE_INLINE typename EnableIf<StringTraits<TString>::has_equals, - JsonObjectSubscript<const TString &> >::type - operator[](const TString &key) { - return impl()->template as<JsonObject>()[key]; - } - // - // JsonObjectSubscript operator[](TKey); - // TKey = const char*, const char[N], const FlashStringHelper* - template <typename TString> - FORCE_INLINE typename EnableIf<StringTraits<const TString *>::has_equals, - JsonObjectSubscript<const TString *> >::type - operator[](const TString *key) { - return impl()->template as<JsonObject>()[key]; - } - // - // JsonObjectSubscript operator[](TKey); - // TKey = const char*, const char[N], const FlashStringHelper* - template <typename TString> - FORCE_INLINE - typename EnableIf<StringTraits<TString *>::has_equals, - const JsonObjectSubscript<const TString *> >::type - operator[](const TString *key) const { - return impl()->template as<JsonObject>()[key]; - } - - private: - const TImpl *impl() const { - return static_cast<const TImpl *>(this); - } -}; -} -} |