Remove capacity from JsonDocument's constructor

This commit is contained in:
Benoit Blanchon
2023-07-17 18:15:13 +02:00
parent 42b2840009
commit 0f319e7ca4
162 changed files with 438 additions and 500 deletions

View File

@@ -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);
}

View File

@@ -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());