diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2013-12-12 13:45:08 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2013-12-12 13:45:08 +0000 |
| commit | bd80cf0404b89b531312ac86e7868f8fd18052d5 (patch) | |
| tree | 4f3898dca87e362ef5451195483ddddb534a7331 /src | |
| parent | 277b02eee6cb0037d2ecce46d1f2a455dfb0b001 (diff) | |
Add DisplayAtom::check_invariant method
Diffstat (limited to 'src')
| -rw-r--r-- | src/display_buffer.cc | 16 | ||||
| -rw-r--r-- | src/display_buffer.hh | 7 |
2 files changed, 21 insertions, 2 deletions
diff --git a/src/display_buffer.cc b/src/display_buffer.cc index 89f2c74b..abd77cc2 100644 --- a/src/display_buffer.cc +++ b/src/display_buffer.cc @@ -12,6 +12,7 @@ void DisplayAtom::trim_begin(CharCount count) m_buffer->iterator_at(m_end), count).coord(); else m_text = m_text.substr(count); + check_invariant(); } void DisplayAtom::trim_end(CharCount count) @@ -21,6 +22,18 @@ void DisplayAtom::trim_end(CharCount count) m_buffer->iterator_at(m_begin), -count).coord(); else m_text = m_text.substr(0, m_text.char_length() - count); + check_invariant(); +} + +void DisplayAtom::check_invariant() const +{ +#ifdef KAK_DEBUG + if (has_buffer_range()) + { + kak_assert(m_buffer->is_valid(m_begin)); + kak_assert(m_buffer->is_valid(m_end)); + } +#endif } DisplayLine::DisplayLine(AtomList atoms) @@ -38,6 +51,8 @@ DisplayLine::iterator DisplayLine::split(iterator it, BufferCoord pos) DisplayAtom atom = *it; atom.m_end = pos; it->m_begin = pos; + atom.check_invariant(); + it->check_invariant(); return m_atoms.insert(it, std::move(atom)); } @@ -105,6 +120,7 @@ void DisplayLine::optimize() next_atom_it = m_atoms.erase(next_atom_it); else atom_it = next_atom_it++; + atom_it->check_invariant(); } } diff --git a/src/display_buffer.hh b/src/display_buffer.hh index 92896ee9..8ea88cec 100644 --- a/src/display_buffer.hh +++ b/src/display_buffer.hh @@ -35,11 +35,13 @@ public: enum Type { BufferRange, ReplacedBufferRange, Text }; DisplayAtom(const Buffer& buffer, BufferCoord begin, BufferCoord end) - : m_type(BufferRange), m_buffer(&buffer), m_begin(begin), m_end(end) {} + : m_type(BufferRange), m_buffer(&buffer), m_begin(begin), m_end(end) + { check_invariant(); } DisplayAtom(String str, ColorPair colors = { Colors::Default, Colors::Default }, Attribute attribute = Normal) - : m_type(Text), m_text(std::move(str)), colors(colors), attribute(attribute) {} + : m_type(Text), m_text(std::move(str)), colors(colors), attribute(attribute) + { check_invariant(); } String content() const { @@ -99,6 +101,7 @@ public: void trim_begin(CharCount count); void trim_end(CharCount count); + void check_invariant() const; public: ColorPair colors = {Colors::Default, Colors::Default}; Attribute attribute = Normal; |
