From 98037e5742e6fad41d472117764466a7f89f7acf Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 14 Apr 2022 14:05:33 +0200 Subject: [PATCH] Move several functions from `VariantImpl.hpp` to `VariantRef.hpp` --- src/ArduinoJson/Variant/VariantImpl.hpp | 37 ------------------------- src/ArduinoJson/Variant/VariantRef.hpp | 34 +++++++++++++++++------ 2 files changed, 26 insertions(+), 45 deletions(-) diff --git a/src/ArduinoJson/Variant/VariantImpl.hpp b/src/ArduinoJson/Variant/VariantImpl.hpp index 48c45fb8..c74cbde7 100644 --- a/src/ArduinoJson/Variant/VariantImpl.hpp +++ b/src/ArduinoJson/Variant/VariantImpl.hpp @@ -124,43 +124,6 @@ VariantRef::to() const { return *this; } -inline VariantConstRef VariantConstRef::getElement(size_t index) const { - return ArrayConstRef(_data != 0 ? _data->asArray() : 0)[index]; -} - -inline VariantRef VariantRef::addElement() const { - return VariantRef(_pool, variantAddElement(_data, _pool)); -} - -inline VariantRef VariantRef::getElement(size_t index) const { - return VariantRef(_pool, _data != 0 ? _data->getElement(index) : 0); -} - -inline VariantRef VariantRef::getOrAddElement(size_t index) const { - return VariantRef(_pool, variantGetOrAddElement(_data, index, _pool)); -} - -template -inline VariantRef VariantRef::getMember(TChar *key) const { - return VariantRef(_pool, _data != 0 ? _data->getMember(adaptString(key)) : 0); -} - -template -inline typename enable_if::value, VariantRef>::type -VariantRef::getMember(const TString &key) const { - return VariantRef(_pool, _data != 0 ? _data->getMember(adaptString(key)) : 0); -} - -template -inline VariantRef VariantRef::getOrAddMember(TChar *key) const { - return VariantRef(_pool, variantGetOrAddMember(_data, key, _pool)); -} - -template -inline VariantRef VariantRef::getOrAddMember(const TString &key) const { - return VariantRef(_pool, variantGetOrAddMember(_data, key, _pool)); -} - inline VariantConstRef operator|(VariantConstRef preferedValue, VariantConstRef defaultValue) { return preferedValue ? preferedValue : defaultValue; diff --git a/src/ArduinoJson/Variant/VariantRef.hpp b/src/ArduinoJson/Variant/VariantRef.hpp index d01ca751..fb80de23 100644 --- a/src/ArduinoJson/Variant/VariantRef.hpp +++ b/src/ArduinoJson/Variant/VariantRef.hpp @@ -123,7 +123,9 @@ class VariantConstRef : public VariantRefBase, return as(); } - FORCE_INLINE VariantConstRef getElement(size_t) const; + FORCE_INLINE VariantConstRef getElement(size_t index) const { + return VariantConstRef(_data != 0 ? _data->getElement(index) : 0); + } FORCE_INLINE VariantConstRef operator[](size_t index) const { return getElement(index); @@ -282,33 +284,49 @@ class VariantRef : public VariantRefBase, typename enable_if::value, VariantRef>::type to() const; - VariantRef addElement() const; + VariantRef addElement() const { + return VariantRef(_pool, variantAddElement(_data, _pool)); + } - FORCE_INLINE VariantRef getElement(size_t) const; + FORCE_INLINE VariantRef getElement(size_t index) const { + return VariantRef(_pool, _data != 0 ? _data->getElement(index) : 0); + } - FORCE_INLINE VariantRef getOrAddElement(size_t) const; + FORCE_INLINE VariantRef getOrAddElement(size_t index) const { + return VariantRef(_pool, variantGetOrAddElement(_data, index, _pool)); + } // getMember(const char*) const // getMember(const __FlashStringHelper*) const template - FORCE_INLINE VariantRef getMember(TChar *) const; + FORCE_INLINE VariantRef getMember(TChar *key) const { + return VariantRef(_pool, + _data != 0 ? _data->getMember(adaptString(key)) : 0); + } // getMember(const std::string&) const // getMember(const String&) const template FORCE_INLINE typename enable_if::value, VariantRef>::type - getMember(const TString &) const; + getMember(const TString &key) const { + return VariantRef(_pool, + _data != 0 ? _data->getMember(adaptString(key)) : 0); + } // getOrAddMember(char*) const // getOrAddMember(const char*) const // getOrAddMember(const __FlashStringHelper*) const template - FORCE_INLINE VariantRef getOrAddMember(TChar *) const; + FORCE_INLINE VariantRef getOrAddMember(TChar *key) const { + return VariantRef(_pool, variantGetOrAddMember(_data, key, _pool)); + } // getOrAddMember(const std::string&) const // getOrAddMember(const String&) const template - FORCE_INLINE VariantRef getOrAddMember(const TString &) const; + FORCE_INLINE VariantRef getOrAddMember(const TString &key) const { + return VariantRef(_pool, variantGetOrAddMember(_data, key, _pool)); + } FORCE_INLINE void remove(size_t index) const { if (_data)