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 49 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 52 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 56 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::value_type Parma_Polyhedra_Library::iterator_to_const< Container >::value_type

Definition at line 72 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::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.


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 43 of file iterator_to_const.inlines.hh.

00044   : base(b) {
00045 }

template<typename Container>
Parma_Polyhedra_Library::iterator_to_const< Container >::iterator_to_const (  )  [inline]

Default constructor.

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

00032   : base() {
00033 }

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 37 of file iterator_to_const.inlines.hh.

00038   : base(y.base) {
00039 }


Member Function Documentation

template<typename Container>
iterator_to_const< Container >::reference Parma_Polyhedra_Library::iterator_to_const< Container >::operator* (  )  const [inline]

Dereference operator.

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

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

00049                                               {
00050   return *base;
00051 }

template<typename Container>
iterator_to_const< Container >::pointer Parma_Polyhedra_Library::iterator_to_const< Container >::operator-> (  )  const [inline]

Indirect access operator.

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

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

00055                                                {
00056   return &*base;
00057 }

template<typename Container>
iterator_to_const< Container > & Parma_Polyhedra_Library::iterator_to_const< Container >::operator++ (  )  [inline]

Prefix increment operator.

Definition at line 61 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++().

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

template<typename Container>
iterator_to_const< Container > Parma_Polyhedra_Library::iterator_to_const< Container >::operator++ ( int   )  [inline]

Postfix increment operator.

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

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

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

template<typename Container>
iterator_to_const< Container > & Parma_Polyhedra_Library::iterator_to_const< Container >::operator-- (  )  [inline]

Prefix decrement operator.

Definition at line 76 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--().

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

template<typename Container>
iterator_to_const< Container > Parma_Polyhedra_Library::iterator_to_const< Container >::operator-- ( int   )  [inline]

Postfix decrement operator.

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

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

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

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 91 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!=().

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

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 97 of file iterator_to_const.inlines.hh.

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

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


Friends And Related Function Documentation

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

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

template<typename Container>
friend class Powerset [friend]

Definition at line 65 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 Sat Oct 11 10:41:13 2008 for PPL by  doxygen 1.5.6