mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Added a return value to visitors
This commit is contained in:
		| @@ -65,40 +65,61 @@ inline bool copyArray(T (&src)[N1][N2], JsonDocument& dst) { | ||||
| } | ||||
|  | ||||
| template <typename T> | ||||
| class ArrayCopier1D { | ||||
| class ArrayCopier1D : public Visitor<size_t> { | ||||
|  public: | ||||
|   ArrayCopier1D(T* destination, size_t capacity) | ||||
|       : _destination(destination), _capacity(capacity), _size(0) {} | ||||
|       : _destination(destination), _capacity(capacity) {} | ||||
|  | ||||
|   void visitArray(const CollectionData& array) { | ||||
|   size_t visitArray(const CollectionData& array) { | ||||
|     size_t size = 0; | ||||
|     VariantSlot* slot = array.head(); | ||||
|  | ||||
|     while (slot != 0 && _size < _capacity) { | ||||
|       _destination[_size++] = variantAs<T>(slot->data()); | ||||
|     while (slot != 0 && size < _capacity) { | ||||
|       _destination[size++] = variantAs<T>(slot->data()); | ||||
|       slot = slot->next(); | ||||
|     } | ||||
|     return size; | ||||
|   } | ||||
|   void visitObject(const CollectionData&) {} | ||||
|   void visitFloat(Float) {} | ||||
|   void visitString(const char*) {} | ||||
|   void visitRawJson(const char*, size_t) {} | ||||
|   void visitNegativeInteger(UInt) {} | ||||
|   void visitPositiveInteger(UInt) {} | ||||
|   void visitBoolean(bool) {} | ||||
|   void visitNull() {} | ||||
|  | ||||
|   size_t result() const { | ||||
|     return _size; | ||||
|   size_t visitObject(const CollectionData&) { | ||||
|     return 0; | ||||
|   } | ||||
|  | ||||
|   size_t visitFloat(Float) { | ||||
|     return 0; | ||||
|   } | ||||
|  | ||||
|   size_t visitString(const char*) { | ||||
|     return 0; | ||||
|   } | ||||
|  | ||||
|   size_t visitRawJson(const char*, size_t) { | ||||
|     return 0; | ||||
|   } | ||||
|  | ||||
|   size_t visitNegativeInteger(UInt) { | ||||
|     return 0; | ||||
|   } | ||||
|  | ||||
|   size_t visitPositiveInteger(UInt) { | ||||
|     return 0; | ||||
|   } | ||||
|  | ||||
|   size_t visitBoolean(bool) { | ||||
|     return 0; | ||||
|   } | ||||
|  | ||||
|   size_t visitNull() { | ||||
|     return 0; | ||||
|   } | ||||
|  | ||||
|  private: | ||||
|   T* _destination; | ||||
|   size_t _capacity; | ||||
|   size_t _size; | ||||
| }; | ||||
|  | ||||
| template <typename T, size_t N1, size_t N2> | ||||
| class ArrayCopier2D { | ||||
| class ArrayCopier2D : public Visitor<void> { | ||||
|  public: | ||||
|   ArrayCopier2D(T (*destination)[N1][N2]) : _destination(destination) {} | ||||
|  | ||||
| @@ -136,8 +157,8 @@ inline typename enable_if<!is_array<T>::value, size_t>::type copyArray( | ||||
| template <typename TSource, typename T> | ||||
| inline size_t copyArray(const TSource& src, T* dst, size_t len) { | ||||
|   ArrayCopier1D<T> copier(dst, len); | ||||
|   src.accept(copier); | ||||
|   return copier.result(); | ||||
|  | ||||
|   return src.accept(copier); | ||||
| } | ||||
|  | ||||
| // Copy a JsonArray to a 2D array | ||||
|   | ||||
		Reference in New Issue
	
	Block a user