CMS 3D CMS Logo

Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends

poly< T >::const_iterator Class Reference

#include <poly.h>

List of all members.

Public Member Functions

 const_iterator ()
 const_iterator (const poly &p)

Static Public Member Functions

static const_iterator end_of (const poly &p)

Private Types

typedef std::list< typename
std::set< T >::const_iterator >
::const_iterator 
const_state_iterator
typedef std::list< typename
std::set< T >::const_iterator >
::iterator 
state_iterator

Private Member Functions

void decrement ()
T dereference () const
bool equal (const_iterator const &rhs) const
void increment ()

Private Attributes

std::list< std::set< T >
>::const_iterator 
begin
std::list< std::set< T >
>::const_iterator 
end
std::list< typename std::set
< T >::const_iterator
state

Friends

class boost::iterator_core_access

Detailed Description

template<class T>
class poly< T >::const_iterator

Definition at line 64 of file poly.h.


Member Typedef Documentation

template<class T>
typedef std::list<typename std::set<T>::const_iterator>::const_iterator poly< T >::const_iterator::const_state_iterator [private]

Definition at line 72 of file poly.h.

template<class T>
typedef std::list<typename std::set<T>::const_iterator>::iterator poly< T >::const_iterator::state_iterator [private]

Definition at line 71 of file poly.h.


Constructor & Destructor Documentation

template<class T>
poly< T >::const_iterator::const_iterator ( ) [inline]

Definition at line 93 of file poly.h.

{}
template<class T>
poly< T >::const_iterator::const_iterator ( const poly p) [inline]

Definition at line 94 of file poly.h.

References poly< T >::const_iterator::begin, and poly< T >::const_iterator::end.

                                    : begin(p.begin_columns()), end(p.end_columns()) {
        const_column_iterator column = begin; 
        while(column!=end) state.push_back((column++)->begin()); 
      }

Member Function Documentation

template<class T>
void poly< T >::const_iterator::decrement ( ) [inline, private]

Definition at line 83 of file poly.h.

References poly< T >::const_iterator::begin, and poly< T >::const_iterator::end.

                       {  
        state_iterator istate = state.begin();
        const_column_iterator column = begin;
        while( column != end && *istate == column->begin())  { ++istate; ++column;}
        if( column != end) --*istate;
        while( istate != state.begin() ) {--istate; *istate = --((--column)->end());} 
      }
template<class T>
T poly< T >::const_iterator::dereference ( ) const [inline, private]

Definition at line 75 of file poly.h.

References asciidump::s.

{ T s; for(const_state_iterator istate=state.begin(); istate!=state.end(); ++istate)  s+= **istate; return s; }
template<class T>
static const_iterator poly< T >::const_iterator::end_of ( const poly p) [inline, static]

Definition at line 98 of file poly.h.

References poly< T >::const_iterator::end, poly< T >::end_columns(), poly< T >::size(), and poly< T >::const_iterator::state.

Referenced by poly< T >::end().

                                                  {
        const_iterator it(p);
        if(p.size()!=0) *--(it.state.end()) = (--p.end_columns())->end();
        return it;
      }
template<class T>
bool poly< T >::const_iterator::equal ( const_iterator const &  rhs) const [inline, private]

Definition at line 74 of file poly.h.

References poly< T >::const_iterator::state.

{ return std::equal( state.begin(), state.end(), rhs.state.begin() ); }
template<class T>
void poly< T >::const_iterator::increment ( ) [inline, private]

Definition at line 76 of file poly.h.

References poly< T >::const_iterator::begin, and poly< T >::const_iterator::end.

                       { 
        state_iterator istate = state.begin();
        const_column_iterator column = begin;
        while( column != end && ++*istate == column->end() ) { ++istate; ++column;} 
        if( column == end ) {--column; --istate;}
        while( istate != state.begin() ) {--istate; *istate = (--column)->begin();}
      }

Friends And Related Function Documentation

template<class T>
friend class boost::iterator_core_access [friend]

Definition at line 66 of file poly.h.


Member Data Documentation

template<class T>
std::list<std::set<T> >::const_iterator poly< T >::const_iterator::begin [private]
template<class T>
std::list<std::set<T> >::const_iterator poly< T >::const_iterator::end [private]
template<class T>
std::list<typename std::set<T>::const_iterator> poly< T >::const_iterator::state [private]

Definition at line 68 of file poly.h.

Referenced by poly< T >::const_iterator::end_of(), and poly< T >::const_iterator::equal().