forked from bblanchon/ArduinoJson
Remove capacity from JsonDocument's constructor
This commit is contained in:
@@ -21,18 +21,16 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
|
||||
friend class detail::VariantAttorney;
|
||||
|
||||
public:
|
||||
explicit JsonDocument(size_t capa,
|
||||
Allocator* alloc = detail::DefaultAllocator::instance())
|
||||
: resources_(capa, alloc) {}
|
||||
explicit JsonDocument(Allocator* alloc = detail::DefaultAllocator::instance())
|
||||
: resources_(alloc) {}
|
||||
|
||||
// Copy-constructor
|
||||
JsonDocument(const JsonDocument& src)
|
||||
: JsonDocument(src.resources_.capacity(), src.allocator()) {
|
||||
JsonDocument(const JsonDocument& src) : JsonDocument(src.allocator()) {
|
||||
set(src);
|
||||
}
|
||||
|
||||
// Move-constructor
|
||||
JsonDocument(JsonDocument&& src) : resources_(0, src.allocator()) {
|
||||
JsonDocument(JsonDocument&& src) : resources_(src.allocator()) {
|
||||
// TODO: use the copy and swap idiom
|
||||
moveAssignFrom(src);
|
||||
}
|
||||
@@ -48,13 +46,13 @@ 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(), alloc) {
|
||||
: JsonDocument(alloc) {
|
||||
set(src);
|
||||
}
|
||||
|
||||
// disambiguate
|
||||
// TODO: still needed?
|
||||
JsonDocument(JsonVariant src) : JsonDocument(src.memoryUsage()) {
|
||||
JsonDocument(JsonVariant src) {
|
||||
set(src);
|
||||
}
|
||||
|
||||
@@ -72,9 +70,6 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
|
||||
|
||||
template <typename T>
|
||||
JsonDocument& operator=(const T& src) {
|
||||
size_t requiredSize = src.memoryUsage();
|
||||
if (requiredSize > resources_.capacity())
|
||||
resources_.reallocPool(requiredSize);
|
||||
set(src);
|
||||
return *this;
|
||||
}
|
||||
@@ -361,7 +356,6 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
|
||||
}
|
||||
|
||||
void copyAssignFrom(const JsonDocument& src) {
|
||||
resources_.reallocPool(src.resources_.capacity());
|
||||
set(src);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,8 +18,7 @@ class VariantPool;
|
||||
|
||||
class ResourceManager {
|
||||
public:
|
||||
ResourceManager(size_t /*capa*/,
|
||||
Allocator* allocator = DefaultAllocator::instance())
|
||||
ResourceManager(Allocator* allocator = DefaultAllocator::instance())
|
||||
: allocator_(allocator), overflowed_(false) {}
|
||||
|
||||
~ResourceManager() {
|
||||
@@ -44,13 +43,6 @@ class ResourceManager {
|
||||
return allocator_;
|
||||
}
|
||||
|
||||
void reallocPool(size_t requiredSize) {
|
||||
size_t capa = VariantPool::bytesToSlots(requiredSize);
|
||||
if (capa == variantPools_.capacity())
|
||||
return;
|
||||
variantPools_.clear(allocator_);
|
||||
}
|
||||
|
||||
// Gets the capacity of the memoryPool in bytes
|
||||
size_t capacity() const {
|
||||
return VariantPool::slotsToBytes(variantPools_.capacity());
|
||||
|
||||
Reference in New Issue
Block a user