BALL::EnumeratorIndex Class Reference
[Miscellaneous]
#include <BALL/CONCEPT/enumerator.h>
Inherits std::vector<Position>.
List of all members.
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
BALL::EnumeratorIndex::EnumeratorIndex |
( |
|
) |
|
template<typename Variant , typename VariantIterator >
BALL::EnumeratorIndex::EnumeratorIndex |
( |
const std::list< std::pair< VariantIterator, std::vector< Variant > > > & |
variant_list |
) |
[inline] |
Detailed Constructor
- Parameters:
-
| variant_list | the list of variants to be applied |
BALL::EnumeratorIndex::~EnumeratorIndex |
( |
|
) |
|
Member Function Documentation
Size BALL::EnumeratorIndex::getModulus |
( |
Position |
pos |
) |
const |
Access the modulus of a specific position
const std::vector<Size>& BALL::EnumeratorIndex::getModulus |
( |
|
) |
const |
Access the modulus part of the enumerator
Size BALL::EnumeratorIndex::getSize |
( |
|
) |
const |
Return the size of the array.
Inequality operator.
- Parameters:
-
- Returns:
- true, if
rhs
is not equal to this
instance
Increment an instance of EnumeratorIndex. Increment the least significant component and apply any overflow to more signficant components.
Decrement an instance of EnumeratorIndex. Decrement the least significant component and apply any underflow to more signficant components.
Lesser than operator.
- Parameters:
-
- 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 |
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 |
Lesser or equal operator.
- Parameters:
-
- 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 & BALL::EnumeratorIndex::operator= |
( |
const std::list< std::pair< VariantIterator, std::vector< Variant > > > & |
variant_list |
) |
[inline] |
Assignment operator for a variant list.
Assignment operator for Position.
Equality operator.
- Parameters:
-
- Returns:
- true, if
rhs
is equal to this
instance
Greater than operator.
- Parameters:
-
- 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 |
Greater or equal operator.
- Parameters:
-
- 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 |
Member Data Documentation