mirror of
				https://github.com/bblanchon/ArduinoJson.git
				synced 2025-11-04 00:21:36 +01: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