Remove JsonDocument::capacity()

This commit is contained in:
Benoit Blanchon
2023-04-03 09:51:43 +02:00
parent 6afa6b647c
commit c4b879645a
9 changed files with 130 additions and 94 deletions
+6 -11
View File
@@ -28,7 +28,7 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
// Copy-constructor
JsonDocument(const JsonDocument& src)
: JsonDocument(src.capacity(), src.allocator()) {
: JsonDocument(src._pool.capacity(), src.allocator()) {
set(src);
}
@@ -41,6 +41,7 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
// Construct from variant, array, or object
template <typename T>
JsonDocument(const T& src,
Allocator* alloc = detail::DefaultAllocator::instance(),
typename detail::enable_if<
detail::is_same<T, JsonVariant>::value ||
detail::is_same<T, JsonVariantConst>::value ||
@@ -48,7 +49,7 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
detail::is_same<T, JsonArrayConst>::value ||
detail::is_same<T, JsonObject>::value ||
detail::is_same<T, JsonObjectConst>::value>::type* = 0)
: JsonDocument(src.memoryUsage()) {
: JsonDocument(src.memoryUsage(), alloc) {
set(src);
}
@@ -73,7 +74,7 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
template <typename T>
JsonDocument& operator=(const T& src) {
size_t requiredSize = src.memoryUsage();
if (requiredSize > capacity())
if (requiredSize > _pool.capacity())
_pool.reallocPool(requiredSize);
set(src);
return *this;
@@ -94,7 +95,7 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
bool garbageCollect() {
// make a temporary clone and move assign
JsonDocument tmp(*this);
if (!tmp.capacity())
if (!tmp._pool.capacity())
return false;
tmp.set(*this);
moveAssignFrom(tmp);
@@ -160,12 +161,6 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
return variantNesting(&_data);
}
// Returns the capacity of the memory pool.
// https://arduinojson.org/v6/api/jsondocument/capacity/
size_t capacity() const {
return _pool.capacity();
}
// Returns the number of elements in the root array or object.
// https://arduinojson.org/v6/api/jsondocument/size/
size_t size() const {
@@ -364,7 +359,7 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
}
void copyAssignFrom(const JsonDocument& src) {
_pool.reallocPool(src.capacity());
_pool.reallocPool(src._pool.capacity());
set(src);
}