From da9701d19b41705e39ead61bc56fed1439720216 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Wed, 2 Apr 2008 02:15:00 +0000 Subject: Implemented transparent List::iterator to List::const_iterator conversion and updated our tests accordingly. svn-id: r31357 --- common/list.h | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'common') diff --git a/common/list.h b/common/list.h index 5629c40a0d..29e02188d7 100644 --- a/common/list.h +++ b/common/list.h @@ -54,6 +54,7 @@ public: template class Iterator { + //template friend class Iterator; friend class List; NodeBase *_node; @@ -65,6 +66,14 @@ public: public: Iterator() : _node(0) {} + template + Iterator(const Iterator &c) : _node(c._node) {} + + template + Iterator &operator =(const Iterator &c) { + _node = c._node; + return *this; + } // Prefix inc Iterator &operator++() { @@ -90,7 +99,7 @@ public: --(*this); return tmp; } - t_T2& operator*() const { + t_T2 &operator*() const { assert(_node); #if (__GNUC__ == 2) && (__GNUC_MINOR__ >= 95) return static_cast::Node *>(_node)->_data; @@ -98,15 +107,17 @@ public: return static_cast*>(_node)->_data; #endif } - t_T2* operator->() const { + t_T2 *operator->() const { return &(operator*()); } - bool operator==(const Iterator& x) const { + template + bool operator==(const Iterator &x) const { return _node == x._node; } - bool operator!=(const Iterator& x) const { + template + bool operator!=(const Iterator &x) const { return _node != x._node; } }; -- cgit v1.2.3