From e920fa57cf9c503e560055864e4de37912b239e1 Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Mon, 29 May 2023 14:30:08 -0400 Subject: Adjusted the way that Wrapping records works to clean up interfaces --- include/framework/InternalLevel.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'include/framework/InternalLevel.h') diff --git a/include/framework/InternalLevel.h b/include/framework/InternalLevel.h index c489063..d28ba5f 100644 --- a/include/framework/InternalLevel.h +++ b/include/framework/InternalLevel.h @@ -28,18 +28,18 @@ class InternalLevel { typedef MutableBuffer Buffer; public: InternalLevel(ssize_t level_no, size_t shard_cap) - : m_level_no(level_no), m_shard_cnt(0), m_shards(new std::vector(shard_cap, nullptr)) + : m_level_no(level_no), m_shard_cnt(0), m_shards(new std::vector(shard_cap, nullptr), free_shards) {} // Create a new memory level sharing the shards and repurposing it as previous level_no + 1 // WARNING: for leveling only. InternalLevel(InternalLevel* level) : m_level_no(level->m_level_no + 1), m_shard_cnt(level->m_shard_cnt) - , m_shards(level->m_shards) { + , m_shards(level->m_shards, free_shards) { assert(m_shard_cnt == 1 && m_shards->size() == 1); } - ~InternalLevel() {} + ~InternalLevel() { } // WARNING: for leveling only. // assuming the base level is the level new level is merging into. (base_level is larger.) @@ -181,6 +181,10 @@ private: size_t m_shard_cnt; size_t m_shard_size_cap; + static void free_shards(std::vector* vec) { + for (size_t i=0; isize(); i++) delete (*vec)[i]; + } + std::shared_ptr> m_shards; }; -- cgit v1.2.3