Main Page | Modules | Namespace List | Class Hierarchy | Class List | Namespace Members | Class Members

EnumeratorIndex Class Reference
[Miscellaneous]

EnumeratorIndex class. More...

#include <enumerator.h>

List of all members.

Public Member Functions

Constructors and Destructors
 EnumeratorIndex () throw ()
 Default Constructor.
template<typename Variant, typename VariantIterator>
 EnumeratorIndex (const std::list< std::pair< VariantIterator, std::vector< Variant > > > &variant_list) throw ()
 Detailed Constructor.
 ~EnumeratorIndex () throw ()
 Destructor.
Assignment
const EnumeratorIndexoperator= (const EnumeratorIndex &rhs) throw ()
 Assignment operator.
const EnumeratorIndexoperator= (Position index) throw (Exception::IndexOverflow)
 Assignment operator for Position.
template<typename Variant, typename VariantIterator>
const EnumeratorIndexoperator= (const std::list< std::pair< VariantIterator, std::vector< Variant > > > &variant_list) throw ()
 Assignment operator for a variant list.
Accessors
const std::vector< Size > & getModulus () const throw ()
 Access the modulus part of the enumerator.
Size getModulus (Position pos) const throw ()
 Access the modulus of a specific position.
EnumeratorIndexoperator++ () throw (Exception::IndexOverflow)
 Increment an instance of EnumeratorIndex.
EnumeratorIndexoperator-- () throw (Exception::IndexUnderflow)
 Decrement an instance of EnumeratorIndex.
Position operator[] (Position pos) const throw ()
 Random access operator.
Positionoperator[] (Position pos) throw ()
 Random access operator.
Size getSize () const throw ()
 Return the size of the array.
EnumeratorIndexoperator<< (Size modulus) throw (Exception::OutOfRange)
 Add a new digit.
Predicates for EnumeratorIndex class
bool operator== (const EnumeratorIndex &rhs) const throw ()
 Equality operator.
bool operator!= (const EnumeratorIndex &rhs) const throw ()
 Inequality operator.
bool operator> (const EnumeratorIndex &rhs) const throw (EnumeratorIndex::IncompatibleIndex)
 Greater than operator.
bool operator< (const EnumeratorIndex &rhs) const throw (EnumeratorIndex::IncompatibleIndex)
 Lesser than operator.
bool operator>= (const EnumeratorIndex &rhs) const throw (EnumeratorIndex::IncompatibleIndex)
 Greater or equal operator.
bool operator<= (const EnumeratorIndex &rhs) const throw (EnumeratorIndex::IncompatibleIndex)
 Lesser or equal operator.


Detailed Description

EnumeratorIndex class.

The Enumerator class provides a means for enumerating all possible combinations of objects. The counting is hereby done by the EnumeratorIndex class. This class is derived from vector and additionally contains two vectors of the same size which hold the modulus and the base for each digit. The values of the EnumeratorIndex vector itself are interpreted as an inhomogenous number consisting of digits that have different bases. The bases are the numbers of possibilities for each variant in the list. Most significant component is operator [] (0), so incrementing starts at operator [] (size() - 1)


Constructor & Destructor Documentation

template<typename Variant, typename VariantIterator>
EnumeratorIndex::EnumeratorIndex const std::list< std::pair< VariantIterator, std::vector< Variant > > > &  variant_list  )  throw ()
 

Detailed Constructor.

Parameters:
variant_list the list of variants to be applied


Member Function Documentation

Size EnumeratorIndex::getSize  )  const throw ()
 

Return the size of the array.

bool EnumeratorIndex::operator!= const EnumeratorIndex rhs  )  const throw ()
 

Inequality operator.

Parameters:
rhs 
Returns:
true, if rhs is not equal to this instance

EnumeratorIndex& EnumeratorIndex::operator++  )  throw (Exception::IndexOverflow)
 

Increment an instance of EnumeratorIndex.

Increment the least significant component and apply any overflow to more signficant components.

EnumeratorIndex& EnumeratorIndex::operator--  )  throw (Exception::IndexUnderflow)
 

Decrement an instance of EnumeratorIndex.

Decrement the least significant component and apply any underflow to more signficant components.

bool EnumeratorIndex::operator< const EnumeratorIndex rhs  )  const throw (EnumeratorIndex::IncompatibleIndex)
 

Lesser than operator.

Parameters:
rhs 
Returns:
true, if rhs is lesser than this instance
Exceptions:
EnumeratorIndex::Incompatible index if the modulus vector differs, i.e. the two indices aren't comparable

EnumeratorIndex& EnumeratorIndex::operator<< Size  modulus  )  throw (Exception::OutOfRange)
 

Add a new digit.

Push the modulus to the ack of the modulus array and initialize the corresponding digit with zero.

Example: To construct a hex counter with three digits, you can use something like: EnumerationIndex counter;
counter << 16 << 16 << 16;
The counter will be initialized with all zeros.
Exceptions:
OutOfRange if the modulus is less than 2

bool EnumeratorIndex::operator<= const EnumeratorIndex rhs  )  const throw (EnumeratorIndex::IncompatibleIndex)
 

Lesser or equal operator.

Parameters:
rhs 
Returns:
true, if rhs is lesser than or equal to this instance
Exceptions:
EnumeratorIndex::Incompatible index if the modulus vector differs, i.e. the two indices aren't comparable

template<typename Variant, typename VariantIterator>
const EnumeratorIndex & EnumeratorIndex::operator= const std::list< std::pair< VariantIterator, std::vector< Variant > > > &  variant_list  )  throw ()
 

Assignment operator for a variant list.

const EnumeratorIndex& EnumeratorIndex::operator= Position  index  )  throw (Exception::IndexOverflow)
 

Assignment operator for Position.

const EnumeratorIndex& EnumeratorIndex::operator= const EnumeratorIndex rhs  )  throw ()
 

Assignment operator.

bool EnumeratorIndex::operator== const EnumeratorIndex rhs  )  const throw ()
 

Equality operator.

Parameters:
rhs 
Returns:
true, if rhs is equal to this instance

bool EnumeratorIndex::operator> const EnumeratorIndex rhs  )  const throw (EnumeratorIndex::IncompatibleIndex)
 

Greater than operator.

Parameters:
rhs 
Returns:
true, if rhs is greater than this instance
Exceptions:
EnumeratorIndex::Incompatible index if the modulus vector differs, i.e. the two indices aren't comparable

bool EnumeratorIndex::operator>= const EnumeratorIndex rhs  )  const throw (EnumeratorIndex::IncompatibleIndex)
 

Greater or equal operator.

Parameters:
rhs 
Returns:
true, if rhs is greater than or equal to this instance
Exceptions:
EnumeratorIndex::Incompatible index if the modulus vector differs, i.e. the two indices aren't comparable