From ff893307d082263698dc79b955cb72cca949dd64 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 10 Sep 1997 02:49:45 +0000 Subject: algo.h, [...]: Update To September 8 SGI release. * algo.h, algobase.h, alloc.h, bvector.h, deque.h, hashtable.h, iterator.h, list.h, rope.h, ropeimpl.h, slist.h, stl_config.h, tree.h, vector.h: Update To September 8 SGI release. From-SVN: r15211 --- libstdc++/stl/tree.h | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'libstdc++/stl/tree.h') diff --git a/libstdc++/stl/tree.h b/libstdc++/stl/tree.h index 0429c1a..b55f0c5 100644 --- a/libstdc++/stl/tree.h +++ b/libstdc++/stl/tree.h @@ -137,23 +137,25 @@ struct __rb_tree_base_iterator } }; -template +template struct __rb_tree_iterator : public __rb_tree_base_iterator { typedef Value value_type; typedef Value& reference; - typedef const Value& const_reference; typedef Value* pointer; - typedef __rb_tree_iterator iterator; - typedef __rb_tree_iterator const_iterator; - typedef __rb_tree_iterator self; + typedef __rb_tree_iterator iterator; + typedef __rb_tree_iterator const_iterator; + typedef __rb_tree_iterator self; typedef __rb_tree_node* link_type; __rb_tree_iterator() {} __rb_tree_iterator(link_type x) { node = x; } __rb_tree_iterator(const iterator& it) { node = it.node; } - Ref operator*() const { return link_type(node)->value_field; } + reference operator*() const { return link_type(node)->value_field; } +#ifndef __SGI_STL_NO_ARROW_OPERATOR + pointer operator->() const { return &(operator*()); } +#endif /* __SGI_STL_NO_ARROW_OPERATOR */ self& operator++() { increment(); return *this; } self operator++(int) { @@ -180,6 +182,8 @@ inline bool operator!=(const __rb_tree_base_iterator& x, return x.node != y.node; } +#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION + inline bidirectional_iterator_tag iterator_category(const __rb_tree_base_iterator&) { return bidirectional_iterator_tag(); @@ -190,11 +194,13 @@ distance_type(const __rb_tree_base_iterator&) { return (__rb_tree_base_iterator::difference_type*) 0; } -template -inline Value* value_type(const __rb_tree_iterator&) { +template +inline Value* value_type(const __rb_tree_iterator&) { return (Value*) 0; } +#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */ + inline void __rb_tree_rotate_left(__rb_tree_node_base* x, __rb_tree_node_base*& root) { @@ -487,15 +493,21 @@ protected: } public: - typedef __rb_tree_iterator iterator; - typedef __rb_tree_iterator const_iterator; - + typedef __rb_tree_iterator iterator; + typedef __rb_tree_iterator + const_iterator; + +#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION + typedef reverse_iterator const_reverse_iterator; + typedef reverse_iterator reverse_iterator; +#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */ typedef reverse_bidirectional_iterator reverse_iterator; typedef reverse_bidirectional_iterator const_reverse_iterator; +#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */ private: iterator __insert(base_ptr x, base_ptr y, const value_type& v); link_type __copy(link_type x, link_type p); -- cgit v1.1