Parma_Polyhedra_Library::iterator_to_const< Container > Class Template Reference
[C++ Language Interface]

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

#include <iterator_to_const.defs.hh>

List of all members.

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

Private Types

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

Private Member Functions

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

Private Attributes

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

Friends

class const_iterator_to_const< Container >
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 51 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 54 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 75 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 73 of file iterator_to_const.defs.hh.

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

Definition at line 76 of file iterator_to_const.defs.hh.

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

Definition at line 77 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 58 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 74 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  )  [inline, private]

Constructs from the lower-level iterator.

Definition at line 44 of file iterator_to_const.inlines.hh.

00045   : base(b) {
00046 }

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.

00033   : base() {
00034 }

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.

00039   : base(y.base) {
00040 }


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::iterator_to_const< Container >::operator==().

00098                                                                          {
00099   return !operator==(y);
00100 }

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.

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

00050                                               {
00051   return *base;
00052 }

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.

References Parma_Polyhedra_Library::iterator_to_const< Container >::operator++().

00069                                             {
00070   iterator_to_const tmp = *this;
00071   operator++();
00072   return tmp;
00073 }

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.

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

Referenced by Parma_Polyhedra_Library::iterator_to_const< Container >::operator++().

00062                                          {
00063   ++base;
00064   return *this;
00065 }

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.

References Parma_Polyhedra_Library::iterator_to_const< Container >::operator--().

00084                                             {
00085   iterator_to_const tmp = *this;
00086   operator--();
00087   return tmp;
00088 }

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.

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

Referenced by Parma_Polyhedra_Library::iterator_to_const< Container >::operator--().

00077                                          {
00078   --base;
00079   return *this;
00080 }

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.

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

00056                                                {
00057   return &*base;
00058 }

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.

Referenced by Parma_Polyhedra_Library::iterator_to_const< Container >::operator!=().

00092                                                                          {
00093   return base == y.base;
00094 }


Friends And Related Function Documentation

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

Definition at line 66 of file iterator_to_const.defs.hh.

template<typename Container>
friend class Powerset [friend]

Definition at line 67 of file iterator_to_const.defs.hh.


Member Data Documentation

template<typename Container>
Base Parma_Polyhedra_Library::iterator_to_const< Container >::base [private]

The documentation for this class was generated from the following files:
Generated on Sun Feb 27 16:20:29 2011 for PPL by  doxygen 1.6.3