diff --git a/src/ArduinoJson/Array/ArrayFunctions.hpp b/src/ArduinoJson/Array/ArrayFunctions.hpp deleted file mode 100644 index 81ffa50f..00000000 --- a/src/ArduinoJson/Array/ArrayFunctions.hpp +++ /dev/null @@ -1,15 +0,0 @@ -// ArduinoJson - https://arduinojson.org -// Copyright © 2014-2022, Benoit BLANCHON -// MIT License - -#pragma once - -#include - -namespace ARDUINOJSON_NAMESPACE { - -inline VariantData* arrayAdd(CollectionData* arr, MemoryPool* pool) { - return arr ? arr->addElement(pool) : 0; -} - -} // namespace ARDUINOJSON_NAMESPACE diff --git a/src/ArduinoJson/Array/ArrayRef.hpp b/src/ArduinoJson/Array/ArrayRef.hpp index dc94f634..5cf5857a 100644 --- a/src/ArduinoJson/Array/ArrayRef.hpp +++ b/src/ArduinoJson/Array/ArrayRef.hpp @@ -4,7 +4,6 @@ #pragma once -#include #include #include #include @@ -124,7 +123,9 @@ class ArrayRef : public ArrayRefBase, } VariantRef add() const { - return VariantRef(_pool, arrayAdd(_data, _pool)); + if (!_data) + return VariantRef(); + return VariantRef(_pool, _data->addElement(_pool)); } template diff --git a/src/ArduinoJson/Object/ObjectFunctions.hpp b/src/ArduinoJson/Object/ObjectFunctions.hpp deleted file mode 100644 index 06534b3b..00000000 --- a/src/ArduinoJson/Object/ObjectFunctions.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// ArduinoJson - https://arduinojson.org -// Copyright © 2014-2022, Benoit BLANCHON -// MIT License - -#pragma once - -#include - -namespace ARDUINOJSON_NAMESPACE { - -template -inline VariantData* objectGetMember(const CollectionData* obj, - TAdaptedString key) { - if (!obj) - return 0; - return obj->getMember(key); -} - -template -void objectRemove(CollectionData* obj, TAdaptedString key) { - if (!obj) - return; - obj->removeMember(key); -} -} // namespace ARDUINOJSON_NAMESPACE diff --git a/src/ArduinoJson/Object/ObjectRef.hpp b/src/ArduinoJson/Object/ObjectRef.hpp index 69f469db..8e9b84ad 100644 --- a/src/ArduinoJson/Object/ObjectRef.hpp +++ b/src/ArduinoJson/Object/ObjectRef.hpp @@ -5,7 +5,6 @@ #pragma once #include -#include #include namespace ARDUINOJSON_NAMESPACE { @@ -46,6 +45,13 @@ class ObjectRefBase { return collectionToVariant(_data); } + template + inline VariantData* getMember(TAdaptedString key) const { + if (!_data) + return 0; + return _data->getMember(key); + } + ObjectRefBase(TData* data) : _data(data) {} TData* _data; }; @@ -75,7 +81,7 @@ class ObjectConstRef : public ObjectRefBase, // containsKey(const String&) const template FORCE_INLINE bool containsKey(const TString& key) const { - return objectGetMember(_data, adaptString(key)) != 0; + return getMember(adaptString(key)) != 0; } // containsKey(char*) const @@ -83,7 +89,7 @@ class ObjectConstRef : public ObjectRefBase, // containsKey(const __FlashStringHelper*) const template FORCE_INLINE bool containsKey(TChar* key) const { - return objectGetMember(_data, adaptString(key)) != 0; + return getMember(adaptString(key)) != 0; } // operator[](const std::string&) const @@ -92,7 +98,7 @@ class ObjectConstRef : public ObjectRefBase, FORCE_INLINE typename enable_if::value, VariantConstRef>::type operator[](const TString& key) const { - return VariantConstRef(objectGetMember(_data, adaptString(key))); + return VariantConstRef(getMember(adaptString(key))); } // operator[](char*) const @@ -102,7 +108,7 @@ class ObjectConstRef : public ObjectRefBase, FORCE_INLINE typename enable_if::value, VariantConstRef>::type operator[](TChar* key) const { - return VariantConstRef(objectGetMember(_data, adaptString(key))); + return VariantConstRef(getMember(adaptString(key))); } FORCE_INLINE bool operator==(ObjectConstRef rhs) const { @@ -194,7 +200,7 @@ class ObjectRef : public ObjectRefBase, // remove(const String&) const template FORCE_INLINE void remove(const TString& key) const { - objectRemove(_data, adaptString(key)); + removeMember(adaptString(key)); } // remove(char*) const @@ -202,19 +208,19 @@ class ObjectRef : public ObjectRefBase, // remove(const __FlashStringHelper*) const template FORCE_INLINE void remove(TChar* key) const { - objectRemove(_data, adaptString(key)); + removeMember(adaptString(key)); } template FORCE_INLINE typename enable_if::value, bool>::type containsKey(const TString& key) const { - return objectGetMember(_data, adaptString(key)) != 0; + return getMember(adaptString(key)) != 0; } template FORCE_INLINE typename enable_if::value, bool>::type containsKey(TChar* key) const { - return objectGetMember(_data, adaptString(key)) != 0; + return getMember(adaptString(key)) != 0; } template @@ -246,6 +252,13 @@ class ObjectRef : public ObjectRefBase, return collectionToVariant(_data); } + template + void removeMember(TAdaptedString key) const { + if (!_data) + return; + _data->removeMember(key); + } + private: MemoryPool* _pool; };