diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2011-10-17 19:00:38 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2011-10-17 19:00:38 +0000 |
| commit | 79ee27dae71cd8df4f35bd226c15d498562eb529 (patch) | |
| tree | 16d2fde40fc1051089c34eefaf799e6b97b2a3e0 /src/display_buffer.cc | |
| parent | 88e31d8cce41911459228b4c7341103f85430548 (diff) | |
DisplayBuffer: deinline insert method and add atom_containing method
Diffstat (limited to 'src/display_buffer.cc')
| -rw-r--r-- | src/display_buffer.cc | 21 |
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; } |
