bes Updated for version 3.21.1
The Backend Server (BES) is the lower two tiers of the Hyrax data server
|
#include <Odometer.h>
Public Types | |
typedef std::vector< unsigned int > | shape |
Public Member Functions | |
unsigned int | end () |
void | indices (shape &indices) |
unsigned int | next () |
unsigned int | next_safe () |
Odometer (shape shape) | |
unsigned int | offset () |
void | reset () |
unsigned int | set_indices (const shape &indices) |
unsigned int | set_indices (const std::vector< int > &indices) |
Map the indices of a N-dimensional array to the offset into memory (i.e., a vector) that matches those indices. This code can be used to step through each element of an N-dim array without using multiplication to compute the offset into the vector that holds the array's data.
reset(): zero internal state next(): move to the next element, incrementing the shape information and returning an offset into a linear vector for that element. Calling next() when the object is at the last element should return one past the last element. calling next() after that should throw an exception. vector<int> indices(): for the given state of the odometer, return the indices that match the offset. offset(): return the offset end(): should return one past the last valid offset - the value returned by next() when it indicates all elements/indices have been visited.
Definition at line 56 of file Odometer.h.
typedef std::vector<unsigned int> functions::Odometer::shape |
Definition at line 59 of file Odometer.h.
|
inlineexplicit |
Build an instance of Odometer using the given 'shape'. Each element of the shape vector is the size of the corresponding dimension. E.G., a 10 by 20 by 30 array would be described by a vector of 10,20,30.
Initially, the Odometer object is set to index 0, 0, ..., 0 that matches the offset 0
Definition at line 80 of file Odometer.h.
|
inline |
Return the sentinel value that indicates that the offset (returned by offset()) is at the end of the array. When offset() < end() the values of offset() and indices() are valid elements of the array being indexed. When offset() == end(), the values are no longer valid and the last array element has been visited.
Definition at line 194 of file Odometer.h.
|
inline |
Return the current set of indices. These match the current offset. Both the offset and indices are incremented by the next() method.
To access the ith index, use [i] or .at(i)
Definition at line 174 of file Odometer.h.
|
inline |
Increment the Odometer to the next element and return the offset value. This increments the internal state and returns the offset to that element in a vector of values. Calling indices() after calling this method will return a vector<unsigned int> of the current index value.
Definition at line 115 of file Odometer.h.
unsigned int functions::Odometer::next_safe | ( | ) |
Definition at line 39 of file Odometer.cc.
|
inline |
The offset into memory for the current element.
Definition at line 182 of file Odometer.h.
|
inline |
Reset the internal state. The offset is reset to the 0th element and the indices are reset to 0, 0, ..., 0.
Definition at line 97 of file Odometer.h.
|
inline |
Given a set of indices, update offset to match the position in the memory/vector they correspond to given the Odometer's initial shape.
indices | Indices of an element |
Definition at line 141 of file Odometer.h.
Definition at line 160 of file Odometer.h.