From 4706a9ed055c8cf6c54cdc3c68f89b3a4f8e9f9f Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Wed, 18 Aug 2021 22:11:30 -0700 Subject: [PATCH] crimson/common/fixed_kv_node_layout: add iterator operator-- and misc Signed-off-by: Samuel Just --- src/crimson/common/fixed_kv_node_layout.h | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/crimson/common/fixed_kv_node_layout.h b/src/crimson/common/fixed_kv_node_layout.h index 75cddb3f010..b13302881b8 100644 --- a/src/crimson/common/fixed_kv_node_layout.h +++ b/src/crimson/common/fixed_kv_node_layout.h @@ -59,14 +59,15 @@ public: using parent_t = typename maybe_const_t::type; parent_t node; - uint16_t offset; + uint16_t offset = 0; + iter_t() = default; iter_t( parent_t parent, uint16_t offset) : node(parent), offset(offset) {} - iter_t(const iter_t &) = default; - iter_t(iter_t &&) = default; + iter_t(const iter_t &) noexcept = default; + iter_t(iter_t &&) noexcept = default; iter_t &operator=(const iter_t &) = default; iter_t &operator=(iter_t &&) = default; @@ -91,6 +92,19 @@ public: return *this; } + iter_t operator--(int) { + assert(offset > 0); + auto ret = *this; + --offset; + return ret; + } + + iter_t &operator--() { + assert(offset > 0); + --offset; + return *this; + } + uint16_t operator-(const iter_t &rhs) const { assert(rhs.node == node); return offset - rhs.offset; -- 2.39.5