diff options
| author | Douglas Rumbaugh <dbr4@psu.edu> | 2024-01-11 15:28:00 -0500 |
|---|---|---|
| committer | Douglas Rumbaugh <dbr4@psu.edu> | 2024-01-11 15:28:00 -0500 |
| commit | c596ed468c2279f959b04d83d7f2e9692db84bae (patch) | |
| tree | 9ac667d155bea1763622052d9a0d4fad3a52def8 /include/framework/structure/BufferView.h | |
| parent | 5db0f96e9f3d2505b5f751abc133cbf7e13b5129 (diff) | |
| download | dynamic-extension-c596ed468c2279f959b04d83d7f2e9692db84bae.tar.gz | |
BufferView: enforce move semantics
Because a BufferView's lifetime is so tightly linked to the lifetime of
regions of the buffer, it can't be copied without potentially breaking
things.
Diffstat (limited to 'include/framework/structure/BufferView.h')
| -rw-r--r-- | include/framework/structure/BufferView.h | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/include/framework/structure/BufferView.h b/include/framework/structure/BufferView.h index 00b6101..98e41dd 100644 --- a/include/framework/structure/BufferView.h +++ b/include/framework/structure/BufferView.h @@ -25,7 +25,24 @@ class BufferView { public: BufferView() = default; - BufferView(const Wrapped<R> *buffer, size_t cap, size_t head, size_t tail, size_t tombstone_cnt, psudb::BloomFilter<R> *filter, + /* + * the BufferView's lifetime is tightly linked to buffer versioning, and so + * copying and assignment are disabled. + */ + BufferView(const BufferView&) = delete; + BufferView &operator=(BufferView &) = delete; + + void operator=(BufferView &&src) { + m_data = src.m_data; + m_release = src.m_release; + m_head = src.m_head; + m_tail = src.m_tail; + m_cap = src.m_cap; + m_approx_ts_cnt = src.m_approx_ts_cnt; + m_tombstone_filter = src.filter; + } + + BufferView(Wrapped<R> *buffer, size_t cap, size_t head, size_t tail, size_t tombstone_cnt, psudb::BloomFilter<R> *filter, ReleaseFunction release) : m_data(buffer) , m_release(release) @@ -85,7 +102,7 @@ public: } private: - const Wrapped<R>* m_data; + Wrapped<R>* m_data; ReleaseFunction m_release; size_t m_head; size_t m_tail; |