BALL::EnumeratorIndex Class Reference
[Miscellaneous]

EnumeratorIndex class. More...

#include <enumerator.h>

Inherits std::vector<Position>.

List of all members.


Classes

class IncompatibleIndex
Exception for reporting incompatible EnumeratorIndex instances, i.e. More...

Public Member Functions

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

Detailed Constructor.

Parameters:
variant_list the list of variants to be applied

Member Function Documentation

bool BALL::EnumeratorIndex::operator!= ( const EnumeratorIndex & rhs ) const

Inequality operator.

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

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

Increment an instance of EnumeratorIndex.

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

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

Decrement an instance of EnumeratorIndex.

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

bool BALL::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& BALL::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 BALL::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

bool BALL::EnumeratorIndex::operator== ( const EnumeratorIndex & rhs ) const

Equality operator.

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

bool BALL::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 BALL::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

Generated on Thu Aug 6 18:30:26 2009 for BALL by doxygen 1.5.8