PPL  1.2
Parma_Polyhedra_Library::iterator_to_const< Container > Class Template Reference

An iterator on a sequence of read-only objects. More...

#include <iterator_to_const_defs.hh>

Public Types

typedef Traits::iterator_category iterator_category
 
typedef Traits::value_type value_type
 
typedef Traits::difference_type difference_type
 
typedef Traits::pointer pointer
 
typedef Traits::reference reference
 

Public Member Functions

 iterator_to_const ()
 Default constructor. More...
 
 iterator_to_const (const iterator_to_const &y)
 Copy constructor. More...
 
reference operator* () const
 Dereference operator. More...
 
pointer operator-> () const
 Indirect access operator. More...
 
iterator_to_constoperator++ ()
 Prefix increment operator. More...
 
iterator_to_const operator++ (int)
 Postfix increment operator. More...
 
iterator_to_constoperator-- ()
 Prefix decrement operator. More...
 
iterator_to_const operator-- (int)
 Postfix decrement operator. More...
 
bool operator== (const iterator_to_const &y) const
 Returns true if and only if *this and y are identical. More...
 
bool operator!= (const iterator_to_const &y) const
 Returns true if and only if *this and y are different. More...
 

Private Types

typedef Container::iterator Base
 The type of the underlying mutable iterator. More...
 
typedef std::iterator_traits< typename Container::const_iterator > Traits
 A shortcut for naming the const_iterator traits. More...
 

Private Member Functions

 iterator_to_const (const Base &b)
 Constructs from the lower-level iterator. More...
 

Private Attributes

Base base
 A (mutable) iterator on the sequence of elements. More...
 

Friends

class const_iterator_to_const< Container >
 
template<typename T >
class Powerset
 

Detailed Description

template<typename Container>
class Parma_Polyhedra_Library::iterator_to_const< Container >

An iterator on a sequence of read-only objects.

This template class implements a bidirectional read-only iterator on the sequence of objects Container. By using this iterator class it is not possible to modify the objects contained in Container; rather, object modification has to be implemented by object replacement, i.e., by using the methods provided by Container to remove/insert objects. Such a policy (a modifiable container of read-only objects) allows for a reliable enforcement of invariants (such as sortedness of the objects in the sequence).

Note
For any developers' need, suitable friend declarations allow for accessing the low-level iterators on the sequence of objects.

Definition at line 50 of file iterator_to_const_defs.hh.

Member Typedef Documentation

template<typename Container>
typedef Container::iterator Parma_Polyhedra_Library::iterator_to_const< Container >::Base
private

The type of the underlying mutable iterator.

Definition at line 53 of file iterator_to_const_defs.hh.

template<typename Container>
typedef Traits::difference_type Parma_Polyhedra_Library::iterator_to_const< Container >::difference_type

Definition at line 73 of file iterator_to_const_defs.hh.

template<typename Container>
typedef Traits::iterator_category Parma_Polyhedra_Library::iterator_to_const< Container >::iterator_category

Definition at line 71 of file iterator_to_const_defs.hh.

template<typename Container>
typedef Traits::pointer Parma_Polyhedra_Library::iterator_to_const< Container >::pointer

Definition at line 74 of file iterator_to_const_defs.hh.

template<typename Container>
typedef Traits::reference Parma_Polyhedra_Library::iterator_to_const< Container >::reference

Definition at line 75 of file iterator_to_const_defs.hh.

template<typename Container>
typedef std::iterator_traits<typename Container::const_iterator> Parma_Polyhedra_Library::iterator_to_const< Container >::Traits
private

A shortcut for naming the const_iterator traits.

Definition at line 57 of file iterator_to_const_defs.hh.

template<typename Container>
typedef Traits::value_type Parma_Polyhedra_Library::iterator_to_const< Container >::value_type

Definition at line 72 of file iterator_to_const_defs.hh.

Constructor & Destructor Documentation

template<typename Container >
Parma_Polyhedra_Library::iterator_to_const< Container >::iterator_to_const ( const Base b)
inlineprivate

Constructs from the lower-level iterator.

Definition at line 44 of file iterator_to_const_inlines.hh.

45  : base(b) {
46 }
Base base
A (mutable) iterator on the sequence of elements.
template<typename Container >
Parma_Polyhedra_Library::iterator_to_const< Container >::iterator_to_const ( )
inline

Default constructor.

Definition at line 32 of file iterator_to_const_inlines.hh.

33  : base() {
34 }
Base base
A (mutable) iterator on the sequence of elements.
template<typename Container >
Parma_Polyhedra_Library::iterator_to_const< Container >::iterator_to_const ( const iterator_to_const< Container > &  y)
inline

Copy constructor.

Definition at line 38 of file iterator_to_const_inlines.hh.

39  : base(y.base) {
40 }
Base base
A (mutable) iterator on the sequence of elements.

Member Function Documentation

template<typename Container >
bool Parma_Polyhedra_Library::iterator_to_const< Container >::operator!= ( const iterator_to_const< Container > &  y) const
inline

Returns true if and only if *this and y are different.

Definition at line 98 of file iterator_to_const_inlines.hh.

References Parma_Polyhedra_Library::operator==().

98  {
99  return !operator==(y);
100 }
bool operator==(const iterator_to_const &y) const
Returns true if and only if *this and y are identical.
template<typename Container >
iterator_to_const< Container >::reference Parma_Polyhedra_Library::iterator_to_const< Container >::operator* ( ) const
inline

Dereference operator.

Definition at line 50 of file iterator_to_const_inlines.hh.

50  {
51  return *base;
52 }
Base base
A (mutable) iterator on the sequence of elements.
template<typename Container >
iterator_to_const< Container > & Parma_Polyhedra_Library::iterator_to_const< Container >::operator++ ( )
inline

Prefix increment operator.

Definition at line 62 of file iterator_to_const_inlines.hh.

62  {
63  ++base;
64  return *this;
65 }
Base base
A (mutable) iterator on the sequence of elements.
template<typename Container >
iterator_to_const< Container > Parma_Polyhedra_Library::iterator_to_const< Container >::operator++ ( int  )
inline

Postfix increment operator.

Definition at line 69 of file iterator_to_const_inlines.hh.

69  {
70  iterator_to_const tmp = *this;
71  operator++();
72  return tmp;
73 }
iterator_to_const & operator++()
Prefix increment operator.
template<typename Container >
iterator_to_const< Container > & Parma_Polyhedra_Library::iterator_to_const< Container >::operator-- ( )
inline

Prefix decrement operator.

Definition at line 77 of file iterator_to_const_inlines.hh.

77  {
78  --base;
79  return *this;
80 }
Base base
A (mutable) iterator on the sequence of elements.
template<typename Container >
iterator_to_const< Container > Parma_Polyhedra_Library::iterator_to_const< Container >::operator-- ( int  )
inline

Postfix decrement operator.

Definition at line 84 of file iterator_to_const_inlines.hh.

84  {
85  iterator_to_const tmp = *this;
86  operator--();
87  return tmp;
88 }
iterator_to_const & operator--()
Prefix decrement operator.
template<typename Container >
iterator_to_const< Container >::pointer Parma_Polyhedra_Library::iterator_to_const< Container >::operator-> ( ) const
inline

Indirect access operator.

Definition at line 56 of file iterator_to_const_inlines.hh.

56  {
57  return &*base;
58 }
Base base
A (mutable) iterator on the sequence of elements.
template<typename Container >
bool Parma_Polyhedra_Library::iterator_to_const< Container >::operator== ( const iterator_to_const< Container > &  y) const
inline

Returns true if and only if *this and y are identical.

Definition at line 92 of file iterator_to_const_inlines.hh.

References Parma_Polyhedra_Library::iterator_to_const< Container >::base.

92  {
93  return base == y.base;
94 }
Base base
A (mutable) iterator on the sequence of elements.

Friends And Related Function Documentation

template<typename Container>
friend class const_iterator_to_const< Container >
friend

Definition at line 65 of file iterator_to_const_defs.hh.

template<typename Container>
template<typename T >
friend class Powerset
friend

Definition at line 66 of file iterator_to_const_defs.hh.

Member Data Documentation


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