diff options
author | Willem Jan Palenstijn | 2006-05-26 17:18:23 +0000 |
---|---|---|
committer | Willem Jan Palenstijn | 2006-05-26 17:18:23 +0000 |
commit | 20c4be47a39b6d8e7bb1587a8a4630bb2e620f54 (patch) | |
tree | d5a172294163c0f50f923dded096d3d40937bcf5 /common/list.h | |
parent | da7140c3cf1df275aabd79bcd7725bf020f84643 (diff) | |
download | scummvm-rg350-20c4be47a39b6d8e7bb1587a8a4630bb2e620f54.tar.gz scummvm-rg350-20c4be47a39b6d8e7bb1587a8a4630bb2e620f54.tar.bz2 scummvm-rg350-20c4be47a39b6d8e7bb1587a8a4630bb2e620f54.zip |
add functions for reverse iteration of Common::List
svn-id: r22665
Diffstat (limited to 'common/list.h')
-rw-r--r-- | common/list.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/common/list.h b/common/list.h index d7273295e0..38ba9b143b 100644 --- a/common/list.h +++ b/common/list.h @@ -174,6 +174,18 @@ public: return iterator(next); } + iterator reverse_erase(iterator pos) { + assert(pos != end()); + + NodeBase *next = pos._node->_next; + NodeBase *prev = pos._node->_prev; + Node<T> *node = static_cast<Node<T> *>(pos._node); + prev->_next = next; + next->_prev = prev; + delete node; + return iterator(prev); + } + iterator erase(iterator first, iterator last) { while (first != last) erase(first++); @@ -229,6 +241,10 @@ public: return iterator(_anchor->_next); } + iterator reverse_begin() { + return iterator(_anchor->_prev); + } + iterator end() { return iterator(_anchor); } @@ -237,6 +253,10 @@ public: return const_iterator(_anchor->_next); } + const_iterator reverse_begin() const { + return const_iterator(_anchor->_prev); + } + const_iterator end() const { return const_iterator(_anchor); } |