mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // ArduinoJson - arduinojson.org
 | |
| // Copyright Benoit Blanchon 2014-2019
 | |
| // MIT License
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <ArduinoJson/Array/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
 |