Fixed copying from JsonObjectConst and JsonArrayConst

This commit is contained in:
Benoit Blanchon
2019-01-14 10:47:29 +01:00
parent 9ac2ac303c
commit 11bb5e26ff
4 changed files with 14 additions and 2 deletions

View File

@ -7,6 +7,8 @@ HEAD
* Import functions in the ArduinoJson namespace to get clearer errors * Import functions in the ArduinoJson namespace to get clearer errors
* Improved syntax highlighting in Arduino IDE * Improved syntax highlighting in Arduino IDE
* Removed default capacity of `DynamicJsonDocument` * Removed default capacity of `DynamicJsonDocument`
* `JsonArray::copyFrom()` accepts `JsonArrayConst`
* `JsonVariant::set()` accepts `JsonArrayConst` and `JsonObjectConst`
> ### BREAKING CHANGES > ### BREAKING CHANGES
> >

View File

@ -96,7 +96,7 @@ class ArrayRef : public ArrayRefBase<CollectionData>, public Visitable {
return add().set(value); return add().set(value);
} }
// Adds the specified value at the end of the array. // Adds the specified value at the end of the array.
FORCE_INLINE bool add(ArrayRef value) const { FORCE_INLINE bool add(ArrayConstRef value) const {
return add().set(value); return add().set(value);
} }
// //
@ -150,7 +150,7 @@ class ArrayRef : public ArrayRefBase<CollectionData>, public Visitable {
} }
// Copy a ArrayRef // Copy a ArrayRef
FORCE_INLINE bool copyFrom(ArrayRef src) const { FORCE_INLINE bool copyFrom(ArrayConstRef src) const {
if (!_data || !src._data) return false; if (!_data || !src._data) return false;
return _data->copyFrom(*src._data, _pool); return _data->copyFrom(*src._data, _pool);
} }

View File

@ -64,6 +64,10 @@ inline bool VariantRef::set(ArrayRef array) const {
return to<ArrayRef>().copyFrom(array); return to<ArrayRef>().copyFrom(array);
} }
inline bool VariantRef::set(ArrayConstRef array) const {
return to<ArrayRef>().copyFrom(array);
}
inline bool VariantRef::set(const ArraySubscript& value) const { inline bool VariantRef::set(const ArraySubscript& value) const {
return set(value.as<VariantRef>()); return set(value.as<VariantRef>());
} }
@ -72,6 +76,10 @@ inline bool VariantRef::set(ObjectRef object) const {
return to<ObjectRef>().copyFrom(object); return to<ObjectRef>().copyFrom(object);
} }
inline bool VariantRef::set(ObjectConstRef object) const {
return to<ObjectRef>().copyFrom(object);
}
template <typename TString> template <typename TString>
inline bool VariantRef::set(const ObjectSubscript<TString>& value) const { inline bool VariantRef::set(const ObjectSubscript<TString>& value) const {
return set(value.template as<VariantRef>()); return set(value.template as<VariantRef>());

View File

@ -203,8 +203,10 @@ class VariantRef : public VariantRefBase<VariantData>,
bool set(VariantRef value) const; bool set(VariantRef value) const;
FORCE_INLINE bool set(ArrayRef array) const; FORCE_INLINE bool set(ArrayRef array) const;
FORCE_INLINE bool set(ArrayConstRef array) const;
FORCE_INLINE bool set(const ArraySubscript &) const; FORCE_INLINE bool set(const ArraySubscript &) const;
FORCE_INLINE bool set(ObjectRef object) const; FORCE_INLINE bool set(ObjectRef object) const;
FORCE_INLINE bool set(ObjectConstRef object) const;
template <typename TString> template <typename TString>
FORCE_INLINE bool set(const ObjectSubscript<TString> &) const; FORCE_INLINE bool set(const ObjectSubscript<TString> &) const;