diff --git a/src/core/GapBuffer.cc b/src/core/GapBuffer.cc index 6461cbc..cc9d60c 100644 --- a/src/core/GapBuffer.cc +++ b/src/core/GapBuffer.cc @@ -40,6 +40,21 @@ void GapBuffer::Iterator::forward() } } +bool GapBuffer::Iterator::check_forward() +{ + if (valid()) + { + Iterator i2 = *this; + i2.forward(); + if (i2.valid()) + { + m_offset = i2.m_offset; + return true; + } + } + return false; +} + void GapBuffer::Iterator::back() { if (valid()) @@ -56,3 +71,18 @@ void GapBuffer::Iterator::back() } } } + +bool GapBuffer::Iterator::check_back() +{ + if (valid()) + { + Iterator i2 = *this; + i2.back(); + if (i2.valid()) + { + m_offset = i2.m_offset; + return true; + } + } + return false; +} diff --git a/src/core/GapBuffer.h b/src/core/GapBuffer.h index 2c59ced..8589107 100644 --- a/src/core/GapBuffer.h +++ b/src/core/GapBuffer.h @@ -23,7 +23,9 @@ public: return m_offset < m_gap_buffer->size(); } void forward(); + bool check_forward(); void back(); + bool check_back(); uint8_t * address() const { return m_gap_buffer->address(m_offset);