diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2013-05-23 19:39:27 +0200 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2013-05-30 13:59:38 +0200 |
| commit | a07fde181ab6b3c52837fb280d3633c255f7208a (patch) | |
| tree | 9721faf3b51253cf51842e80878f46f766f2f9cd /src/buffer_iterator.inl.hh | |
| parent | 9a80a58ff45449c589669a6a5ae0887cd83434f5 (diff) | |
Add Buffer::{next,prev,at}(BufferCoord) methods and use them in iterators
Diffstat (limited to 'src/buffer_iterator.inl.hh')
| -rw-r--r-- | src/buffer_iterator.inl.hh | 23 |
1 files changed, 3 insertions, 20 deletions
diff --git a/src/buffer_iterator.inl.hh b/src/buffer_iterator.inl.hh index e8372221..ac02f022 100644 --- a/src/buffer_iterator.inl.hh +++ b/src/buffer_iterator.inl.hh @@ -65,7 +65,7 @@ inline bool BufferIterator::operator>=(const BufferIterator& iterator) const inline char BufferIterator::operator*() const { - return m_buffer->m_lines[m_coord.line].content[m_coord.column]; + return m_buffer->at(m_coord); } inline ByteCount BufferIterator::offset() const @@ -103,30 +103,13 @@ inline BufferIterator& BufferIterator::operator-=(ByteCount size) inline BufferIterator& BufferIterator::operator++() { - if (m_coord.column < m_buffer->m_lines[m_coord.line].length() - 1) - ++m_coord.column; - else if (m_coord.line == m_buffer->m_lines.size() - 1) - m_coord.column = m_buffer->m_lines.back().length(); - else - { - ++m_coord.line; - m_coord.column = 0; - } + m_coord = m_buffer->next(m_coord); return *this; } inline BufferIterator& BufferIterator::operator--() { - if (column() == 0) - { - if (line() > 0) - { - --m_coord.line; - m_coord.column = m_buffer->m_lines[m_coord.line].length() - 1; - } - } - else - --m_coord.column; + m_coord = m_buffer->prev(m_coord); return *this; } |
