mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-29 10:17:39 +02:00
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;
|
||||
}
|
||||
|
||||
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,
|
||||
ResourceManager* resources) {
|
||||
auto it = createIterator();
|
||||
|
@ -80,7 +80,16 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
|
||||
// Copies an array.
|
||||
// https://arduinojson.org/v6/api/jsonarray/set/
|
||||
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.
|
||||
|
Reference in New Issue
Block a user