|
| | r_MiterDirect (const void *data, const r_Minterval &total, const r_Minterval &iter, r_Bytes tlen, unsigned int step=1) |
| | constructor getting the data, the total domain, the iteration domain, the base type length and the number of steps per iteration.
|
| |
| | ~r_MiterDirect (void) |
| |
| r_MiterDirect & | operator++ (void) |
| | increment the iterator in the default order, i.e. last dimension first
|
| |
| r_MiterDirect & | iterateUserOrder (const r_Dimension *order, const unsigned int *step) |
| | increment the iterator in a user-specified order.
|
| |
| r_MiterDirect & | iterateUserOrder (const unsigned int *order, const int *step) |
| | see the other incrementUserOrder method for more details
|
| |
| bool | isDone (void) const |
| |
| void * | getData (void) |
| |
| void * | getData (unsigned int *order) |
| |
| r_Range | getDimStep (r_Dimension d) const |
| | returns number of bytes to step in dimension d in one iteration
|
| |
| r_Range | getDimBaseStep (r_Dimension d) const |
| | returns number of bytes to step in dimension d when pos changes by 1.
|
| |
| r_Range | getExtent (r_Dimension d) const |
| | returns extent in dimension d
|
| |
| void | posChanged (void) |
| | notify that the position was changed and internal variables need to be recalculated
|
| |
| void | reset (void) |
| | reset the iterator (pos to low and data to baseAddress + offset)
|
| |
| void | print_pos (std::ostream &str) const |
| | print the position
|
| |
r_MiterDirect is similar to r_Miter, but allows stepping by more than one cell in each direction, arbitrary order of dimensions in the iteration and has a lot of its internal state variables as public members.
It should be used in low-level, very time-critical code like folding operations which would otherwise require construction of a new iterator for each cell when only position and base address need to change.
increment the iterator in a user-specified order.
order points to an array defining the order of the dimensions during iteration, e.g. for a 3D iteration 0,1,2 would iterate over the first dimension first and the last dimension last wheres 2,1,0 is equivalent to operator++(). step is the number of steps to do in each dimension.