diff options
| author | Douglas Rumbaugh <dbr4@psu.edu> | 2023-05-29 14:30:08 -0400 |
|---|---|---|
| committer | Douglas Rumbaugh <dbr4@psu.edu> | 2023-05-29 14:30:08 -0400 |
| commit | e920fa57cf9c503e560055864e4de37912b239e1 (patch) | |
| tree | d0daba733c7af2b0b22f29d39de8f824ffa83472 /include/framework/InternalLevel.h | |
| parent | b00682429988f17152e7573ffeffa1cecfdd3d3a (diff) | |
| download | dynamic-extension-e920fa57cf9c503e560055864e4de37912b239e1.tar.gz | |
Adjusted the way that Wrapping records works to clean up interfaces
Diffstat (limited to 'include/framework/InternalLevel.h')
| -rw-r--r-- | include/framework/InternalLevel.h | 10 |
1 files changed, 7 insertions, 3 deletions
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<R> 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*>(shard_cap, nullptr)) + : m_level_no(level_no), m_shard_cnt(0), m_shards(new std::vector<Shard*>(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<Shard*>* vec) { + for (size_t i=0; i<vec->size(); i++) delete (*vec)[i]; + } + std::shared_ptr<std::vector<Shard*>> m_shards; }; |