diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-01-25 19:32:06 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-01-25 19:32:06 +0000 |
| commit | a72d185f7940b1d863a32006f34e3e13c0dac016 (patch) | |
| tree | 591fbf79c3e244e61a9f7371aed323d33955a4e3 /src/dynamic_buffer_iterator.cc | |
| parent | 382d5a334c055521893ddd17b2eda1d6d377cb86 (diff) | |
remove DynamicBufferIterator and make Selection a ModificationListener
DynamicBufferIterator is only used by Selections. And each selection
had two iterators, resulting in two ModificationListeners registered
in the buffer instead of one now.
Diffstat (limited to 'src/dynamic_buffer_iterator.cc')
| -rw-r--r-- | src/dynamic_buffer_iterator.cc | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/src/dynamic_buffer_iterator.cc b/src/dynamic_buffer_iterator.cc deleted file mode 100644 index 363207e4..00000000 --- a/src/dynamic_buffer_iterator.cc +++ /dev/null @@ -1,73 +0,0 @@ -#include "dynamic_buffer_iterator.hh" - -namespace Kakoune -{ - -DynamicBufferIterator::DynamicBufferIterator(const Buffer& buffer, - BufferPos position) - : BufferIterator(buffer, position) -{ - register_ifp(); -} - -DynamicBufferIterator::DynamicBufferIterator(DynamicBufferIterator&& other) - : BufferIterator(other) -{ - register_ifp(); -} - -DynamicBufferIterator::DynamicBufferIterator(const BufferIterator& other) - : BufferIterator(other) -{ - register_ifp(); -} - -DynamicBufferIterator& DynamicBufferIterator::operator=(const BufferIterator& other) -{ - unregister_ifn(); - BufferIterator::operator=(other); - register_ifp(); - - return *this; -} - -DynamicBufferIterator::~DynamicBufferIterator() -{ - unregister_ifn(); -} - -void DynamicBufferIterator::on_modification(const Modification& modification) -{ - if (*this < modification.position) - return; - - size_t length = modification.content.length(); - if (modification.type == Modification::Erase) - { - // do not move length on the other side of the inequality, - // as modification.position + length may be after buffer end - if (*this - length <= modification.position) - BufferIterator::operator=(modification.position); - else - *this -= length; - } - else - { - assert(modification.type == Modification::Insert); - *this += length; - } -} - -void DynamicBufferIterator::register_ifp() -{ - if (is_valid()) - const_cast<Buffer&>(buffer()).register_modification_listener(this); -} - -void DynamicBufferIterator::unregister_ifn() -{ - if (is_valid()) - const_cast<Buffer&>(buffer()).unregister_modification_listener(this); -} - -} |
