summaryrefslogtreecommitdiff
path: root/src/display_buffer.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-10-17 19:00:38 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-10-17 19:00:38 +0000
commit79ee27dae71cd8df4f35bd226c15d498562eb529 (patch)
tree16d2fde40fc1051089c34eefaf799e6b97b2a3e0 /src/display_buffer.cc
parent88e31d8cce41911459228b4c7341103f85430548 (diff)
DisplayBuffer: deinline insert method and add atom_containing method
Diffstat (limited to 'src/display_buffer.cc')
-rw-r--r--src/display_buffer.cc21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/display_buffer.cc b/src/display_buffer.cc
index 4a8233ba..fc5b7bb7 100644
--- a/src/display_buffer.cc
+++ b/src/display_buffer.cc
@@ -79,17 +79,36 @@ DisplayBuffer::DisplayBuffer()
{
}
+DisplayBuffer::iterator DisplayBuffer::insert(iterator where, const DisplayAtom& atom)
+{
+ check_invariant();
+ iterator res = m_atoms.insert(where, atom);
+ check_invariant();
+ return res;
+}
+
+DisplayBuffer::iterator DisplayBuffer::atom_containing(const BufferIterator& where)
+{
+ for (iterator it = m_atoms.begin(); it != m_atoms.end(); ++it)
+ {
+ if (it->end() > where)
+ return it;
+ }
+ return end();
+}
+
DisplayBuffer::iterator DisplayBuffer::split(iterator atom, const BufferIterator& pos)
{
assert(atom < end());
assert(pos > atom->begin());
assert(pos < atom->end());
+ check_invariant();
DisplayAtom new_atom(atom->coord(), atom->begin(), pos,
atom->fg_color(), atom->bg_color(), atom->attribute());
atom->m_begin = pos;
atom->m_coord = new_atom.end_coord();
- iterator res = insert(atom, std::move(new_atom));
+ iterator res = m_atoms.insert(atom, std::move(new_atom));
check_invariant();
return res;
}