// Copyright Benoit Blanchon 2014-2016 // MIT License // // Arduino JSON library // https://github.com/bblanchon/ArduinoJson // If you like this project, please add a star! #pragma once #include "JsonSubscriptBase.hpp" #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable : 4522) #endif namespace ArduinoJson { template class JsonObjectSubscript : public JsonSubscriptBase > { public: FORCE_INLINE JsonObjectSubscript(JsonObject& object, TKey key) : _object(object), _key(key) {} using JsonSubscriptBase >::operator=; JsonObjectSubscript& operator=(const JsonObjectSubscript& src) { return JsonSubscriptBase >::template assign< JsonVariant>(src); } template JsonObjectSubscript& operator=(const T& src) { return JsonSubscriptBase >::template assign< JsonVariant>(src); } FORCE_INLINE bool success() const { return _object.containsKey(_key); } FORCE_INLINE operator JsonVariant() const { return _object.get(_key); } template FORCE_INLINE TValue as() const { return _object.get(_key); } template FORCE_INLINE bool is() const { return _object.is(_key); } template FORCE_INLINE bool set(TValue value) { return _object.set(_key, value); } template FORCE_INLINE bool set(TValue value, uint8_t decimals) { return _object.set(_key, value, decimals); } FORCE_INLINE JsonVariant get() { return _object.get(_key); } void writeTo(Internals::JsonWriter& writer) const { _object.get(_key).writeTo(writer); } private: JsonObject& _object; TKey _key; }; #ifdef ARDUINOJSON_ENABLE_STD_STREAM inline std::ostream& operator<<( std::ostream& os, const JsonObjectSubscript& source) { return source.printTo(os); } inline std::ostream& operator<<( std::ostream& os, const JsonObjectSubscript& source) { return source.printTo(os); } #endif } // namespace ArduinoJson #ifdef _MSC_VER #pragma warning(pop) #endif