summaryrefslogtreecommitdiff
path: root/src/dynamic_buffer_iterator.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-01-25 19:32:06 +0000
committerMaxime Coste <frrrwww@gmail.com>2012-01-25 19:32:06 +0000
commita72d185f7940b1d863a32006f34e3e13c0dac016 (patch)
tree591fbf79c3e244e61a9f7371aed323d33955a4e3 /src/dynamic_buffer_iterator.cc
parent382d5a334c055521893ddd17b2eda1d6d377cb86 (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.cc73
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);
-}
-
-}