mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Added parameter to DynamicJsonBuffer constructor to set initial size (issue #152)
				
					
				
			This commit is contained in:
		| @@ -1,10 +1,16 @@ | ||||
| ArduinoJson: change log | ||||
| ======================= | ||||
|  | ||||
| v5.0.6 | ||||
| ------ | ||||
|  | ||||
| * Added parameter to `DynamicJsonBuffer` constructor to set initial size (issue #152) | ||||
| * Fixed warning about library category in Arduino 1.6.6 (issue #147) | ||||
|  | ||||
| v5.0.5 | ||||
| ------ | ||||
|  | ||||
| * Add overload `JsonObjectSuscript::set(value, decimals)` (issue #143) | ||||
| * Added overload `JsonObjectSuscript::set(value, decimals)` (issue #143) | ||||
| * Use `float` instead of `double` to reduce the size of `JsonVariant` (issue #134) | ||||
|  | ||||
| v5.0.4 | ||||
|   | ||||
| @@ -31,7 +31,8 @@ class BlockJsonBuffer : public JsonBuffer { | ||||
|   }; | ||||
|  | ||||
|  public: | ||||
|   BlockJsonBuffer() : _head(NULL) {} | ||||
|   BlockJsonBuffer(size_t initialSize = 256) | ||||
|       : _head(NULL), _nextBlockSize(initialSize) {} | ||||
|  | ||||
|   ~BlockJsonBuffer() { | ||||
|     Block* currentBlock = _head; | ||||
| @@ -55,8 +56,6 @@ class BlockJsonBuffer : public JsonBuffer { | ||||
|   } | ||||
|  | ||||
|  private: | ||||
|   static const size_t FIRST_BLOCK_CAPACITY = 32; | ||||
|  | ||||
|   bool canAllocInHead(size_t bytes) const { | ||||
|     return _head != NULL && _head->size + bytes <= _head->capacity; | ||||
|   } | ||||
| @@ -68,10 +67,11 @@ class BlockJsonBuffer : public JsonBuffer { | ||||
|   } | ||||
|  | ||||
|   void* allocInNewBlock(size_t bytes) { | ||||
|     size_t capacity = FIRST_BLOCK_CAPACITY; | ||||
|     size_t capacity = _nextBlockSize; | ||||
|     if (_head != NULL) capacity = _head->capacity * 2; | ||||
|     if (bytes > capacity) capacity = bytes; | ||||
|     if (!addNewBlock(capacity)) return NULL; | ||||
|     _nextBlockSize *= 2; | ||||
|     return allocInHead(bytes); | ||||
|   } | ||||
|  | ||||
| @@ -86,8 +86,9 @@ class BlockJsonBuffer : public JsonBuffer { | ||||
|     return true; | ||||
|   } | ||||
|  | ||||
|   Block* _head; | ||||
|   TAllocator _allocator; | ||||
|   Block* _head; | ||||
|   size_t _nextBlockSize; | ||||
| }; | ||||
| } | ||||
| } | ||||
|   | ||||
| @@ -20,22 +20,22 @@ template <typename TFloat> | ||||
| static TFloat parse(const char *); | ||||
|  | ||||
| template <> | ||||
| FORCE_INLINE float parse<float>(const char *s) { | ||||
| float parse<float>(const char *s) { | ||||
|   return static_cast<float>(strtod(s, NULL)); | ||||
| } | ||||
|  | ||||
| template <> | ||||
| FORCE_INLINE double parse<double>(const char *s) { | ||||
| double parse<double>(const char *s) { | ||||
|   return strtod(s, NULL); | ||||
| } | ||||
|  | ||||
| template <> | ||||
| FORCE_INLINE long parse<long>(const char *s) { | ||||
| long parse<long>(const char *s) { | ||||
|   return strtol(s, NULL, 10); | ||||
| } | ||||
|  | ||||
| template <> | ||||
| FORCE_INLINE int parse<int>(const char *s) { | ||||
| int parse<int>(const char *s) { | ||||
|   return atoi(s); | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user