Make a missing node iterator .begin() == end()

Instead of throwing an exception, just treat the iterator as if it had
zero positions
This commit is contained in:
Jonathan Hamilton 2015-05-28 20:23:38 -07:00
parent 0526d7c299
commit 12b1e7fa67

View File

@ -282,26 +282,26 @@ inline std::size_t Node::size() const {
inline const_iterator Node::begin() const {
if (!m_isValid)
throw InvalidNode();
return const_iterator();
return m_pNode ? const_iterator(m_pNode->begin(), m_pMemory)
: const_iterator();
}
inline iterator Node::begin() {
if (!m_isValid)
throw InvalidNode();
return iterator();
return m_pNode ? iterator(m_pNode->begin(), m_pMemory) : iterator();
}
inline const_iterator Node::end() const {
if (!m_isValid)
throw InvalidNode();
return const_iterator();
return m_pNode ? const_iterator(m_pNode->end(), m_pMemory) : const_iterator();
}
inline iterator Node::end() {
if (!m_isValid)
throw InvalidNode();
return iterator();
return m_pNode ? iterator(m_pNode->end(), m_pMemory) : iterator();
}