// ArduinoJson - arduinojson.org // Copyright Benoit Blanchon 2014-2018 // MIT License #pragma once #include "Data/JsonVariantAs.hpp" #include "Polyfills/attributes.hpp" namespace ArduinoJson { namespace Internals { template class JsonVariantCasts { public: #if ARDUINOJSON_ENABLE_DEPRECATED DEPRECATED("use as() instead") FORCE_INLINE JsonArray &asArray() const { return impl()->template as(); } DEPRECATED("use as() instead") FORCE_INLINE JsonObject &asObject() const { return impl()->template as(); } DEPRECATED("use as() instead") FORCE_INLINE const char *asString() const { return impl()->template as(); } #endif // Gets the variant as an array. // Returns a reference to the JsonArray or JsonArray::invalid() if the // variant // is not an array. FORCE_INLINE operator JsonArray &() const { return impl()->template as(); } // Gets the variant as an object. // Returns a reference to the JsonObject or JsonObject::invalid() if the // variant is not an object. FORCE_INLINE operator JsonObject &() const { return impl()->template as(); } template FORCE_INLINE operator T() const { return impl()->template as(); } private: const TImpl *impl() const { return static_cast(this); } }; } }