19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1994 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Hewlett-Packard Company 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1996-1998 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1997 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Moscow Center for SPARC Technology 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk. 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies. 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted, 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice. 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* NOTE: This is an internal header file, included by other STL headers. 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * You should not attempt to use it directly. 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_ITERATOR_OLD_H 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_INTERNAL_ITERATOR_OLD_H 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_ITERATOR_BASE_H 34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include <stl/_iterator_base.h> 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Container> 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline output_iterator_tag _STLP_CALL 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockiterator_category(const back_insert_iterator<_Container>&) { return output_iterator_tag(); } 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Container> 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline output_iterator_tag _STLP_CALL 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockiterator_category(const front_insert_iterator<_Container>&) { return output_iterator_tag(); } 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Container> 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline output_iterator_tag _STLP_CALL 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockiterator_category(const insert_iterator<_Container>&) { return output_iterator_tag(); } 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _BidirectionalIterator, class _Tp, 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DFL_TMPL_PARAM(_Reference, _Tp& ), 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_MSVC50_COMPATIBILITY) 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define __Reference _Reference, class _Pointer 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define Reference__ _Reference, _Pointer 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DFL_TMPL_PARAM(_Pointer, _Tp*), 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define __Reference _Reference 61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define Reference__ _Reference 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DFL_TYPE_PARAM(_Distance, ptrdiff_t)> 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass reverse_bidirectional_iterator { 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance> _Self; 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // friend inline bool operator== _STLP_NULL_TMPL_ARGS (const _Self& x, const _Self& y); 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _BidirectionalIterator current; 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef bidirectional_iterator_tag iterator_category; 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Tp value_type; 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Distance difference_type; 74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_MSVC50_COMPATIBILITY) 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Pointer pointer; 76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# else 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Tp* pointer; 78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Reference reference; 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reverse_bidirectional_iterator() {} 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit reverse_bidirectional_iterator(_BidirectionalIterator __x) 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : current(__x) {} 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _BidirectionalIterator base() const { return current; } 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Reference operator*() const { 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _BidirectionalIterator __tmp = current; 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *(--__tmp); 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEFINE_ARROW_OPERATOR 91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator++() { 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block --current; 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self operator++(int) { 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self __tmp = *this; 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block --current; 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __tmp; 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator--() { 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++current; 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self operator--(int) { 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self __tmp = *this; 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++current; 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __tmp; 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _BidirectionalIterator, class _Tp, class __Reference, 1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class _Distance> 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bidirectional_iterator_tag _STLP_CALL 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockiterator_category(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&) 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return bidirectional_iterator_tag(); } 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _BidirectionalIterator, class _Tp, class __Reference, 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class _Distance> 1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline _Tp* _STLP_CALL 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvalue_type(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&) 1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (_Tp*) 0; } 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _BidirectionalIterator, class _Tp, class __Reference, 1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class _Distance> 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline _Distance* _STLP_CALL 1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockdistance_type(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&) 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (_Distance*) 0; } 1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _BidirectionalIterator, class _Tp, class __Reference, 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class _Distance> 1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL operator==( 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __x, 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __y) 137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return __x.base() == __y.base(); } 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _BiIter, class _Tp, class __Reference, class _Distance> 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL operator!=( 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_bidirectional_iterator<_BiIter, _Tp, Reference__, _Distance>& __x, 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_bidirectional_iterator<_BiIter, _Tp, Reference__, _Distance>& __y) 145e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return !(__x == __y); } 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 147e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 149e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION ) 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This is the old version of reverse_iterator, as found in the original 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// HP STL. It does not use partial specialization. 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 154e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _RandomAccessIterator, class _Tp, 155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DFL_TMPL_PARAM(_Reference,_Tp&), 156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_MSVC50_COMPATIBILITY) 157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DFL_TMPL_PARAM(_Pointer, _Tp*), 158e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 159e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DFL_TYPE_PARAM(_Distance,ptrdiff_t)> 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass reverse_iterator { 161e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance> _Self; 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _RandomAccessIterator __current; 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef random_access_iterator_tag iterator_category; 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Tp value_type; 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Distance difference_type; 168e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_MSVC50_COMPATIBILITY) 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Pointer pointer; 170e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# else 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Tp* pointer; 172e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Reference reference; 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reverse_iterator() {} 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reverse_iterator(const _Self& __x) : __current(__x.base()) {} 1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit reverse_iterator(_RandomAccessIterator __x) : __current(__x) {} 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator=(const _Self& __x) {__current = __x.base(); return *this; } 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _RandomAccessIterator base() const { return __current; } 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Reference operator*() const { return *(__current - (difference_type)1); } 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEFINE_ARROW_OPERATOR 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator++() { 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block --__current; 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self operator++(int) { 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self __tmp = *this; 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block --__current; 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __tmp; 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator--() { 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__current; 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self operator--(int) { 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self __tmp = *this; 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__current; 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __tmp; 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self operator+(_Distance __n) const { 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _Self(__current - __n); 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator+=(_Distance __n) { 2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __current -= __n; 2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self operator-(_Distance __n) const { 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _Self(__current + __n); 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator-=(_Distance __n) { 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __current += __n; 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Reference operator[](_Distance __n) const { return *(*this + __n); } 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 220e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandomAccessIterator, class _Tp, 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class __Reference, class _Distance> 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline random_access_iterator_tag _STLP_CALL 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockiterator_category(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&) 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return random_access_iterator_tag(); } 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandomAccessIterator, class _Tp, 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class __Reference, class _Distance> 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline _Tp* _STLP_CALL value_type(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&) 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (_Tp*) 0; } 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandomAccessIterator, class _Tp, 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class __Reference, class _Distance> 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline _Distance* _STLP_CALL 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockdistance_type(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&) 2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (_Distance*) 0; } 235e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandomAccessIterator, class _Tp, 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class __Reference, class _Distance> 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL 2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockoperator==(const reverse_iterator<_RandomAccessIterator, _Tp, 2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __x, 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_iterator<_RandomAccessIterator, _Tp, 2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __y) 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __x.base() == __y.base(); 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandomAccessIterator, class _Tp, 2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class __Reference, class _Distance> 2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL 2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockoperator<(const reverse_iterator<_RandomAccessIterator, _Tp, 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __x, 2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_iterator<_RandomAccessIterator, _Tp, 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __y) 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __y.base() < __x.base(); 2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 259e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE 2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandomAccessIterator, class _Tp, 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class __Reference, class _Distance> 2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL 2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockoperator!=(const reverse_iterator<_RandomAccessIterator, _Tp, 2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __x, 2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_iterator<_RandomAccessIterator, _Tp, 2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __y) { 2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return !(__x == __y); 2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandomAccessIterator, class _Tp, 2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class __Reference, class _Distance> 2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL 2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockoperator>(const reverse_iterator<_RandomAccessIterator, _Tp, 2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __x, 2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_iterator<_RandomAccessIterator, _Tp, 2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __y) { 2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __y < __x; 2799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandomAccessIterator, class _Tp, 2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class __Reference, class _Distance> 2839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL 2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockoperator<=(const reverse_iterator<_RandomAccessIterator, _Tp, 2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __x, 2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_iterator<_RandomAccessIterator, _Tp, 2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __y) { 2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return !(__y < __x); 2899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandomAccessIterator, class _Tp, 2929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class __Reference, class _Distance> 2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL 2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockoperator>=(const reverse_iterator<_RandomAccessIterator, _Tp, 2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __x, 2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_iterator<_RandomAccessIterator, _Tp, 2979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __y) { 2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return !(__x < __y); 2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 301e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ 3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandomAccessIterator, class _Tp, 3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class __Reference, class _Distance> 3059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline _Distance _STLP_CALL 3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockoperator-(const reverse_iterator<_RandomAccessIterator, _Tp, 3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __x, 3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_iterator<_RandomAccessIterator, _Tp, 3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __y) 3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __y.base() - __x.base(); 3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 3139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandomAccessIterator, class _Tp, 3159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block class __Reference, class _Distance> 3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline reverse_iterator<_RandomAccessIterator, _Tp, 3179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance> _STLP_CALL 3189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockoperator+(_Distance __n, 3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const reverse_iterator<_RandomAccessIterator, _Tp, 3209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>& __x) 3219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 3229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return reverse_iterator<_RandomAccessIterator, _Tp, 3239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Reference__, _Distance>(__x.base() - __n); 3249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 3259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* ! defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION ) */ 3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_INTERNAL_ITERATOR_H */ 3319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 3349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 335