summaryrefslogtreecommitdiff
path: root/src/buffer.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-11-27 18:41:25 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-11-27 18:41:25 +0000
commitdc642f8afaf71b319be6f506ab08cac5b8127b90 (patch)
treee24014d62bb26f9db4974f8773288f3d2cf4a280 /src/buffer.cc
parent08ba791ff4a974f21c822845e45459de8f6ed259 (diff)
Buffer: refactor to remove do_{insert,erase} methods
Diffstat (limited to 'src/buffer.cc')
-rw-r--r--src/buffer.cc24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/buffer.cc b/src/buffer.cc
index 6ac647b6..33f2ae3b 100644
--- a/src/buffer.cc
+++ b/src/buffer.cc
@@ -46,18 +46,6 @@ void Buffer::insert(const BufferIterator& position, const BufferString& string)
append_modification(BufferModification(BufferModification::Insert, position, string));
}
-void Buffer::do_erase(const BufferIterator& begin, const BufferIterator& end)
-{
- m_content.erase(begin.m_position, end - begin);
- compute_lines();
-}
-
-void Buffer::do_insert(const BufferIterator& position, const BufferString& string)
-{
- m_content.insert(position.m_position, string);
- compute_lines();
-}
-
BufferIterator Buffer::iterator_at(const BufferCoord& line_and_column) const
{
if (m_lines.empty())
@@ -207,19 +195,21 @@ void Buffer::apply_modification(const BufferModification& modification)
switch (modification.type)
{
case BufferModification::Insert:
- do_insert(modification.position, modification.content);
+ m_content.insert(modification.position.m_position,
+ modification.content);
break;
case BufferModification::Erase:
{
- BufferIterator begin = modification.position;
- BufferIterator end = begin + modification.content.size();
- assert(string(begin, end) == modification.content);
- do_erase(begin, end);
+ size_t size = modification.content.size();
+ assert(string(modification.position, modification.position + size)
+ == modification.content);
+ m_content.erase(modification.position.m_position, size);
break;
}
default:
assert(false);
}
+ compute_lines();
for (auto listener : m_modification_listeners)
listener->on_modification(modification);
}