forked from bblanchon/ArduinoJson
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