BDE 4.14.0 Production release
Loading...
Searching...
No Matches
bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE > Class Template Reference

#include <bslstl_bidirectionaliterator.h>

Inheritance diagram for bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >:
bslstl::ForwardIterator< T, ITER_IMP, TAG_TYPE > bslstl::RandomAccessIterator< T, ITER_IMP, TAG_TYPE >

Public Types

typedef UnCvqT value_type
 
typedef std::ptrdiff_t difference_type
 
typedef T * pointer
 
typedef T & reference
 
typedef std::bidirectional_iterator_tag iterator_category
 
- Public Types inherited from bslstl::ForwardIterator< T, ITER_IMP, TAG_TYPE >
typedef UnCvqT value_type
 
typedef std::ptrdiff_t difference_type
 
typedef T * pointer
 
typedef T & reference
 
typedef std::forward_iterator_tag iterator_category
 

Public Member Functions

 BidirectionalIterator ()
 
 BidirectionalIterator (const ITER_IMP &implementation)
 
 BidirectionalIterator (const BidirectionalIterator &original)
 
 BidirectionalIterator (const BidirectionalNonConstIterator &other)
 
 ~BidirectionalIterator ()
 
BidirectionalIteratoroperator= (const BidirectionalIterator &rhs)
 
BidirectionalIteratoroperator= (const BidirectionalNonConstIterator &rhs)
 
BidirectionalIteratoroperator++ ()
 
BidirectionalIteratoroperator-- ()
 
- Public Member Functions inherited from bslstl::ForwardIterator< T, ITER_IMP, TAG_TYPE >
 ForwardIterator ()
 
 ForwardIterator (const ITER_IMP &implementation)
 
 ForwardIterator (const ForwardIterator &original)
 
 ForwardIterator (const ForwardNonConstIterator &other)
 
 ~ForwardIterator ()
 
ForwardIteratoroperator= (const ForwardIterator &rhs)
 
ForwardIteratoroperator= (const ForwardNonConstIterator &rhs)
 
ForwardIteratoroperator++ ()
 
ITER_IMP & imp ()
 Return a modifiable reference to the implementation object.
 
T & operator* () const
 
T * operator-> () const
 
const ITER_IMP & imp () const
 Return a non-modifiable reference to the implementation object.
 

Detailed Description

template<class T, class ITER_IMP, class TAG_TYPE = std::bidirectional_iterator_tag>
class bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >

Given an ITER_IMP type that implements a minimal subset of an iterator interface, this template generates a complete iterator that meets all of the requirements of a "bidirectional iterator" in the C++ standard. If T is const-qualified, then the resulting type is a constant iterator. T shall not be a function, reference type or void. ITER_IMP must provide public operations so that, for objects i and j of type ITER_IMP, the following operations are supported:

ITER_IMP i; default construction
ITER_IMP j(i); copy construction
i = j assignment
++i increment to next element
--i decrement to previous element
i == j // convertible to bool equality comparison
*i // reference convertible to T& element access (dereference)

Member Typedef Documentation

◆ difference_type

template<class T , class ITER_IMP , class TAG_TYPE = std::bidirectional_iterator_tag>
typedef std::ptrdiff_t bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::difference_type

◆ iterator_category

template<class T , class ITER_IMP , class TAG_TYPE = std::bidirectional_iterator_tag>
typedef std::bidirectional_iterator_tag bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::iterator_category

◆ pointer

template<class T , class ITER_IMP , class TAG_TYPE = std::bidirectional_iterator_tag>
typedef T* bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::pointer

◆ reference

template<class T , class ITER_IMP , class TAG_TYPE = std::bidirectional_iterator_tag>
typedef T& bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::reference

◆ value_type

template<class T , class ITER_IMP , class TAG_TYPE = std::bidirectional_iterator_tag>
typedef UnCvqT bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::value_type

Constructor & Destructor Documentation

◆ BidirectionalIterator() [1/4]

template<class T , class ITER_IMP , class TAG_TYPE >
bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::BidirectionalIterator ( )
inline

Construct the default value for this iterator type. All default- constructed BidirectionalIterator objects represent non-dereferenceable iterators into the same empty range. They do not have a singular value unless an object of the type specified by the template parameter ITER_IMP has a singular value after value-initialization.

◆ BidirectionalIterator() [2/4]

template<class T , class ITER_IMP , class TAG_TYPE >
bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::BidirectionalIterator ( const ITER_IMP &  implementation)
inline

Construct a bidirectional iterator having the specified implementation of the parameterized ITER_IMP type.

◆ BidirectionalIterator() [3/4]

template<class T , class ITER_IMP , class TAG_TYPE = std::bidirectional_iterator_tag>
bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::BidirectionalIterator ( const BidirectionalIterator< T, ITER_IMP, TAG_TYPE > &  original)

◆ BidirectionalIterator() [4/4]

template<class T , class ITER_IMP , class TAG_TYPE >
bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::BidirectionalIterator ( const BidirectionalNonConstIterator other)
inline

Construct a bidirectional iterator from the specified other iterator of another (compatible) BidirectionalIterator type, e.g., a mutable iterator of the same type. Note that this constructor may be the copy constructor (inhibiting the implicit declaration of a copy constructor above), or may be an additional overload.

◆ ~BidirectionalIterator()

template<class T , class ITER_IMP , class TAG_TYPE = std::bidirectional_iterator_tag>
bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::~BidirectionalIterator ( )

Destroy this iterator. Note that this method's definition is compiler generated.

Member Function Documentation

◆ operator++()

template<class T , class ITER_IMP , class TAG_TYPE >
BidirectionalIterator< T, ITER_IMP, TAG_TYPE > & bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::operator++ ( )
inline

Increment to the next element. Return a reference to this modifiable iterator. The behavior is undefined if, on entry, this iterator has the past-the-end value for an iterator over the underlying sequence.

◆ operator--()

template<class T , class ITER_IMP , class TAG_TYPE >
BidirectionalIterator< T, ITER_IMP, TAG_TYPE > & bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::operator-- ( )
inline

Decrement to the previous element. Return a reference to this modifiable iterator. The behavior is undefined if, on entry, this iterator has the same value as an iterator the refers to the start of the underlying sequence.

◆ operator=() [1/2]

template<class T , class ITER_IMP , class TAG_TYPE = std::bidirectional_iterator_tag>
BidirectionalIterator & bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::operator= ( const BidirectionalIterator< T, ITER_IMP, TAG_TYPE > &  rhs)

Copy the value of the specified rhs to this iterator. Return a reference to this modifiable object. Note that this method's definition is compiler generated.

◆ operator=() [2/2]

template<class T , class ITER_IMP , class TAG_TYPE >
BidirectionalIterator< T, ITER_IMP, TAG_TYPE > & bslstl::BidirectionalIterator< T, ITER_IMP, TAG_TYPE >::operator= ( const BidirectionalNonConstIterator rhs)
inline

Copy the value of the specified rhs of another (compatible) BidirectionalIterator type, (e.g., a mutable iterator of the same type) to this iterator. Return a reference to this modifiable object. Note that this method may be the copy-assignment operator (inhibiting the implicit declaration of a copy-assignment operator above), or may be an additional overload.


The documentation for this class was generated from the following file: