52 #ifndef __PCL_Iterator_h 53 #define __PCL_Iterator_h 103 template <
class C,
class T>
116 template <
class C,
class T>
inline 126 template <
typename T>
inline 129 return RandomAccessIterator();
138 template <
class C,
class T>
inline 148 template <
typename T>
inline 160 template <
class FI>
inline 166 template <
class FI>
inline 167 distance_type __pcl_distance__( FI i, FI j, ForwardIterator )
170 for ( ; i != j; ++i, ++d ) {}
174 template <
class RI>
inline 175 distance_type __pcl_distance__( RI i, RI j, RandomAccessIterator )
185 template <
class FI>
inline 191 template <
class FI>
inline 192 void __pcl_advance__( FI& i,
distance_type d, ForwardIterator )
194 PCL_PRECONDITION( d >= 0 )
195 for ( ; d > 0; --d, ++i ) {}
198 template <
class BI>
inline 199 void __pcl_advance__( BI& i,
distance_type d, BidirectionalIterator )
202 for ( ; ++i, --d > 0; ) {}
204 for ( ; d < 0; ++d, --i ) {}
207 template <
class RI>
inline 208 void __pcl_advance__( RI& i,
distance_type d, RandomAccessIterator )
218 template <
class FI>
inline 224 template <
class FI>
inline 225 void __pcl_move_forward__( FI& i,
size_type n, ForwardIterator )
227 for ( ; n > 0; --n, ++i ) {}
230 template <
class RI>
inline 231 void __pcl_move_forward__( RI& i,
size_type n, RandomAccessIterator )
241 template <
class BI>
inline 247 template <
class BI>
inline 248 void __pcl_move_backward__( BI& i,
size_type n, BidirectionalIterator )
250 for ( ; n > 0; --n, --i ) {}
253 template <
class RI>
inline 254 void __pcl_move_backward__( RI& i,
size_type n, RandomAccessIterator )
265 template <
class BI,
class C,
class T>
296 return (T&)*iterator;
303 BI operator ->()
const 358 template <
class BI,
class C,
class T>
inline 366 #define IMPLEMENT_INCDEC_OPERATORS \ 367 __I__& operator ++() { __R__::PreIncrement(); return *this; } \ 368 __I__ operator ++( int ) { return __I__( __R__::PostIncrement() ); } \ 369 __I__& operator --() { __R__::PreDecrement(); return *this; } \ 370 __I__ operator --( int ) { return __I__( __R__::PostDecrement() ); } 376 template <
class BI,
class T>
404 IMPLEMENT_INCDEC_OPERATORS
413 template <
class RI,
class T>
447 return (T&)*(__R__::iterator - d);
456 __R__::iterator -= d;
466 __R__::iterator += d;
470 IMPLEMENT_INCDEC_OPERATORS
473 #undef IMPLEMENT_INCDEC_OPERATORS 477 template <
class RI,
class T>
inline 485 template <
class RI,
class T>
inline 494 template <
class RI,
class T>
inline 502 template <
class RI,
class T>
inline 511 template <
class RI,
class T>
inline 566 return m_container.ReverseBegin();
577 return m_container.ReverseBegin();
588 return m_container.ConstReverseBegin();
600 return m_container.ReverseEnd();
612 return m_container.ReverseEnd();
624 return m_container.ConstReverseEnd();
633 return m_container.Begin();
642 return m_container.Begin();
651 return m_container.ConstBegin();
659 return m_container.End();
668 return m_container.End();
677 return m_container.ConstEnd();
680 #ifndef __PCL_NO_STL_COMPATIBLE_ITERATORS 712 #endif // !__PCL_NO_STL_COMPATIBLE_ITERATORS 716 container& m_container;
723 #endif // __PCL_Iterator_h distance_type Distance(FI i, FI j)
T item_type
Represents the item type.
auto ConstReverseBegin() const
Random access iterator class.
Reverse bidirectional iterator.
Complex< T1 > operator*(const Complex< T1 > &c1, const Complex< T2 > &c2)
ReverseIteratorBase(const ReverseIteratorBase &i)
Generic container iterator.
Complex< T1 > operator+(const Complex< T1 > &c1, const Complex< T2 > &c2)
auto ConstReverseEnd() const
void MoveBackward(BI &i, size_type n)
ReverseRandomAccessIterator(const RI &i)
ReverseRandomAccessIterator(const ReverseRandomAccessIterator &i)
T * ItemType(const Iterator< C, T > &)
void Advance(FI &i, distance_type d)
Base class of reverse iterators.
Complex< T1 > operator-(const Complex< T1 > &c1, const Complex< T2 > &c2)
auto ReverseBegin() const
Bidirectional iterator class.
Reverse random access iterator.
bool operator==(const Array< T, A > &x1, const Array< T, A > &x2)
void MoveForward(FI &i, size_type n)
ReverseBidirectionalIterator(const ReverseBidirectionalIterator &i)
ReverseBidirectionalIterator(const BI &i)
Reverse container adaptor.
ReverseIteratorBase(const BI &i)
C IteratorClass(const Iterator< C, T > &)