summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-09-29 09:10:27 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-09-29 09:10:27 +0000
commit834e2d2fe3d9a67497dd34e6551e80df90c00458 (patch)
treee00f39e2f66c861019973b3539c789b13c26db39 /src
parente659ea2dab4b91d6f5a8905f4a854f7be82343e3 (diff)
DisplayBuffer: check_invariant method to assert atoms consistency
Diffstat (limited to 'src')
-rw-r--r--src/display_buffer.cc12
-rw-r--r--src/display_buffer.hh2
-rw-r--r--src/window.cc3
3 files changed, 16 insertions, 1 deletions
diff --git a/src/display_buffer.cc b/src/display_buffer.cc
index 03cc5b18..0865211a 100644
--- a/src/display_buffer.cc
+++ b/src/display_buffer.cc
@@ -1,6 +1,6 @@
#include "display_buffer.hh"
-#include "assert.h"
+#include "assert.hh"
namespace Kakoune
{
@@ -22,4 +22,14 @@ DisplayBuffer::iterator DisplayBuffer::split(iterator atom, size_t pos_in_atom)
return insert(atom, std::move(new_atom));
}
+void DisplayBuffer::check_invariant() const
+{
+ for (size_t i = 0; i < m_atoms.size(); ++i)
+ {
+ assert(m_atoms[i].end > m_atoms[i].begin);
+ if (i > 0)
+ assert(m_atoms[i-1].end == m_atoms[i].begin);
+ }
+}
+
}
diff --git a/src/display_buffer.hh b/src/display_buffer.hh
index e422e38a..62b4731c 100644
--- a/src/display_buffer.hh
+++ b/src/display_buffer.hh
@@ -75,6 +75,8 @@ public:
const_iterator begin() const { return m_atoms.begin(); }
const_iterator end() const { return m_atoms.end(); }
+
+ void check_invariant() const;
private:
AtomList m_atoms;
};
diff --git a/src/window.cc b/src/window.cc
index e94394c9..122767ee 100644
--- a/src/window.cc
+++ b/src/window.cc
@@ -309,7 +309,10 @@ void Window::update_display_buffer()
m_display_buffer.append(DisplayAtom(begin, end, m_buffer.string(begin, end)));
for (auto& filter : m_filters)
+ {
filter(m_display_buffer);
+ m_display_buffer.check_invariant();
+ }
}
void Window::set_dimensions(const WindowCoord& dimensions)