From f05c31871a04d864dce81fcb0c4ab40413f10815 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Mon, 14 Jul 2014 23:26:00 +0100 Subject: [PATCH] added sanity checks in ConditionalIterator --- src/blackmisc/iterator.h | 6 ++++++ src/blackmisc/range.h | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/blackmisc/iterator.h b/src/blackmisc/iterator.h index af845b01e..27991a46e 100644 --- a/src/blackmisc/iterator.h +++ b/src/blackmisc/iterator.h @@ -191,6 +191,12 @@ namespace BlackMisc bool operator >=(const ConditionalIterator &other) const { return m_iterator >= other.m_iterator; } //! @} + //! \private + void checkEnd(const ConditionalIterator &other) // debugging + { + Q_ASSERT(m_end == other.m_end && m_end == other.m_iterator); + } + private: I m_iterator; I m_end; diff --git a/src/blackmisc/range.h b/src/blackmisc/range.h index dc075347e..fc797f8f3 100644 --- a/src/blackmisc/range.h +++ b/src/blackmisc/range.h @@ -124,7 +124,7 @@ namespace BlackMisc //! @} //! Constructor. - CRange(I begin, I end) : m_begin(begin), m_end(end) {} + CRange(I begin, I end) : m_begin(begin), m_end(end) { check(begin, end); } //! Begin and end iterators. //! @{ @@ -168,6 +168,12 @@ namespace BlackMisc private: I m_begin; I m_end; + + void check(...) {}; + template void check(Iterators::ConditionalIterator begin, Iterators::ConditionalIterator end) + { + begin.checkEnd(end); + } }; /*!