From 6108d09e8d0e768c4a5a9cfaeebb17284afe9833 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 7 Jan 2017 16:34:01 -0500 Subject: [PATCH] add Buffer::Iterator::warp_to_offset() --- src/core/Buffer-Iterator.cc | 21 +++++++++++++++++++++ src/core/Buffer.h | 1 + 2 files changed, 22 insertions(+) diff --git a/src/core/Buffer-Iterator.cc b/src/core/Buffer-Iterator.cc index 2a0b901..daa0ce7 100644 --- a/src/core/Buffer-Iterator.cc +++ b/src/core/Buffer-Iterator.cc @@ -180,3 +180,24 @@ bool Buffer::Iterator::go_next_line() } return false; } + +void Buffer::Iterator::warp_to_offset(size_t offset) +{ + Iterator i = m_buffer->begin(); + m_offset = i.m_offset; + m_line = i.m_line; + for (;;) + { + i.go_forward(); + if (i.m_offset > offset) + { + break; + } + m_offset = i.m_offset; + m_line = i.m_line; + if (!i.valid()) + { + break; + } + } +} diff --git a/src/core/Buffer.h b/src/core/Buffer.h index abee5a2..a98d258 100644 --- a/src/core/Buffer.h +++ b/src/core/Buffer.h @@ -46,6 +46,7 @@ public: m_offset += offset_offset; m_line += line_offset; } + void warp_to_offset(size_t offset); uint8_t * address() const { return m_buffer->address(m_offset);