From a72d185f7940b1d863a32006f34e3e13c0dac016 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Wed, 25 Jan 2012 19:32:06 +0000 Subject: 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. --- src/dynamic_buffer_iterator.cc | 73 ------------------------------------------ 1 file changed, 73 deletions(-) delete mode 100644 src/dynamic_buffer_iterator.cc (limited to 'src/dynamic_buffer_iterator.cc') 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()).register_modification_listener(this); -} - -void DynamicBufferIterator::unregister_ifn() -{ - if (is_valid()) - const_cast(buffer()).unregister_modification_listener(this); -} - -} -- cgit v1.2.3