forked from bblanchon/ArduinoJson
Implement array copy at the JsonArray
level
This commit is contained in:
@ -18,19 +18,6 @@ inline ArrayData::iterator ArrayData::at(size_t index) const {
|
|||||||
return it;
|
return it;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool ArrayData::copyFrom(const ArrayData& src,
|
|
||||||
ResourceManager* resources) {
|
|
||||||
clear(resources);
|
|
||||||
|
|
||||||
for (auto it = src.createIterator(); !it.done(); it.next()) {
|
|
||||||
auto var = addElement(resources);
|
|
||||||
if (!copyVariant(JsonVariant(var, resources),
|
|
||||||
JsonVariantConst(it.data(), resources)))
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline VariantData* ArrayData::getOrAddElement(size_t index,
|
inline VariantData* ArrayData::getOrAddElement(size_t index,
|
||||||
ResourceManager* resources) {
|
ResourceManager* resources) {
|
||||||
auto it = createIterator();
|
auto it = createIterator();
|
||||||
|
@ -80,7 +80,16 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
|
|||||||
// Copies an array.
|
// Copies an array.
|
||||||
// https://arduinojson.org/v6/api/jsonarray/set/
|
// https://arduinojson.org/v6/api/jsonarray/set/
|
||||||
FORCE_INLINE bool set(JsonArrayConst src) const {
|
FORCE_INLINE bool set(JsonArrayConst src) const {
|
||||||
return detail::ArrayData::copy(data_, src.data_, resources_);
|
if (!data_)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
clear();
|
||||||
|
for (auto element : src) {
|
||||||
|
if (!add(element))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Removes the element at the specified iterator.
|
// Removes the element at the specified iterator.
|
||||||
|
Reference in New Issue
Block a user