mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Converted JsonArray::copyFrom()/copyTo() to free functions copyArray()
				
					
				
			This commit is contained in:
		
							
								
								
									
										66
									
								
								src/ArduinoJson/Array/Utilities.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								src/ArduinoJson/Array/Utilities.hpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| // ArduinoJson - arduinojson.org | ||||
| // Copyright Benoit Blanchon 2014-2019 | ||||
| // MIT License | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include "ArrayRef.hpp" | ||||
|  | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
|  | ||||
| // Copy a 1D array to a JsonArray | ||||
| template <typename T, size_t N> | ||||
| inline bool copyArray(T (&src)[N], ArrayRef dst) { | ||||
|   return copyArray(src, N, dst); | ||||
| } | ||||
|  | ||||
| // Copy a 1D array to a JsonArray | ||||
| template <typename T> | ||||
| inline bool copyArray(T* src, size_t len, ArrayRef dst) { | ||||
|   bool ok = true; | ||||
|   for (size_t i = 0; i < len; i++) { | ||||
|     ok &= dst.add(src[i]); | ||||
|   } | ||||
|   return ok; | ||||
| } | ||||
|  | ||||
| // Copy a 2D array to a JsonArray | ||||
| template <typename T, size_t N1, size_t N2> | ||||
| inline bool copyArray(T (&src)[N1][N2], ArrayRef dst) { | ||||
|   bool ok = true; | ||||
|   for (size_t i = 0; i < N1; i++) { | ||||
|     ArrayRef nestedArray = dst.createNestedArray(); | ||||
|     for (size_t j = 0; j < N2; j++) { | ||||
|       ok &= nestedArray.add(src[i][j]); | ||||
|     } | ||||
|   } | ||||
|   return ok; | ||||
| } | ||||
|  | ||||
| // Copy a JsonArray to a 1D array | ||||
| template <typename T, size_t N> | ||||
| inline size_t copyArray(ArrayConstRef src, T (&dst)[N]) { | ||||
|   return copyArray(src, dst, N); | ||||
| } | ||||
|  | ||||
| // Copy a JsonArray to a 1D array | ||||
| template <typename T> | ||||
| inline size_t copyArray(ArrayConstRef src, T* dst, size_t len) { | ||||
|   size_t i = 0; | ||||
|   for (ArrayConstRef::iterator it = src.begin(); it != src.end() && i < len; | ||||
|        ++it) | ||||
|     dst[i++] = *it; | ||||
|   return i; | ||||
| } | ||||
|  | ||||
| // Copy a JsonArray to a 2D array | ||||
| template <typename T, size_t N1, size_t N2> | ||||
| inline void copyArray(ArrayConstRef src, T (&dst)[N1][N2]) { | ||||
|   size_t i = 0; | ||||
|   for (ArrayConstRef::iterator it = src.begin(); it != src.end() && i < N1; | ||||
|        ++it) { | ||||
|     copyArray(it->as<ArrayConstRef>(), dst[i++]); | ||||
|   } | ||||
| } | ||||
|  | ||||
| }  // namespace ARDUINOJSON_NAMESPACE | ||||
		Reference in New Issue
	
	Block a user