casacore
|
Base class for table iterator. More...
#include <BaseTabIter.h>
Public Member Functions | |
BaseTableIterator (BaseTable *, const Block< String > &columnNames, const Block< CountedPtr< BaseCompare > > &cmpObjs, const Block< Int > &orders, int option, bool cacheIterationBoundaries=false) | |
Create the table iterator to iterate through the given columns in the given order. More... | |
BaseTableIterator * | clone () const |
Clone this iterator. More... | |
virtual | ~BaseTableIterator () |
virtual void | reset () |
Reset the iterator (i.e. More... | |
virtual BaseTable * | next () |
Return the next group. More... | |
virtual void | copyState (const BaseTableIterator &) |
const String & | keyChangeAtLastNext () const |
Report Name of slowest sort column that changed (according to the comparison function) to terminate the most recent call to next() Enables clients to sense iteration boundary properties and organize associated iterations. More... | |
Protected Member Functions | |
BaseTableIterator (const BaseTableIterator &) | |
Copy constructor (to be used by clone) More... | |
BaseTable * | noCachedIterBoundariesNext () |
Protected Attributes | |
BaseTable * | sortTab_p |
rownr_t | lastRow_p |
uInt | nrkeys_p |
String | keyChangeAtLastNext_p |
PtrBlock< BaseColumn * > | colPtr_p |
Block< CountedPtr< BaseCompare > > | cmpObj_p |
Private Member Functions | |
BaseTableIterator & | operator= (const BaseTableIterator &) |
Assignment is not needed, because the assignment operator in the envelope class TableIterator has reference semantics. More... | |
Private Attributes | |
Block< void * > | lastVal_p |
Block< void * > | curVal_p |
std::shared_ptr< Vector < rownr_t > > | sortIterBoundaries_p |
std::shared_ptr< Vector< size_t > > | sortIterKeyIdxChange_p |
Vector< rownr_t >::iterator | sortIterBoundariesIt_p |
Vector< size_t >::iterator | sortIterKeyIdxChangeIt_p |
RefTable * | aRefTable_p |
Base class for table iterator.
Internal
BaseTableIterator is the base class for the classes doing the actual iterating through a table.
BaseTableIterator is the base class for the table iterators. It is a letter class of the envelope TableIterator. Currently there are no classes derived from BaseTableIterator, since it can do all the work itself. However, in the future this need not to be true anymore.
BaseTableIterator iterates by sorting the table in the required order and then creating a RefTable for each step containing the rows for that iteration step. Each iteration step assembles the rows with equal key values.
Definition at line 83 of file BaseTabIter.h.
casacore::BaseTableIterator::BaseTableIterator | ( | BaseTable * | , |
const Block< String > & | columnNames, | ||
const Block< CountedPtr< BaseCompare > > & | cmpObjs, | ||
const Block< Int > & | orders, | ||
int | option, | ||
bool | cacheIterationBoundaries = false |
||
) |
Create the table iterator to iterate through the given columns in the given order.
The given compare objects will be used for the sort and to compare if values are equal. If a compare object in cmpObjs is null, the default ObjCompare<T> will be used. If cacheIterationBoundaries is set to true then the iteration boundaries computed at construction time while sorting the table are used when advancing with next(). Otherwise, for each next() call the comparison functions are reevaluated again to get the iteration boundary. This improves performance in general but will break existing applications that change the comparison objects (cmpObjs) between iterations.
|
virtual |
|
protected |
Copy constructor (to be used by clone)
BaseTableIterator* casacore::BaseTableIterator::clone | ( | ) | const |
Clone this iterator.
|
virtual |
|
inline |
Report Name of slowest sort column that changed (according to the comparison function) to terminate the most recent call to next() Enables clients to sense iteration boundary properties and organize associated iterations.
Definition at line 122 of file BaseTabIter.h.
|
virtual |
Return the next group.
|
protected |
|
private |
Assignment is not needed, because the assignment operator in the envelope class TableIterator has reference semantics.
Declaring it private, makes it unusable.
|
virtual |
Reset the iterator (i.e.
restart iteration).
|
private |
Definition at line 150 of file BaseTabIter.h.
|
protected |
Definition at line 130 of file BaseTabIter.h.
|
protected |
Definition at line 129 of file BaseTabIter.h.
|
private |
Definition at line 144 of file BaseTabIter.h.
|
protected |
Definition at line 128 of file BaseTabIter.h.
|
protected |
Definition at line 126 of file BaseTabIter.h.
|
private |
Definition at line 143 of file BaseTabIter.h.
|
protected |
Definition at line 127 of file BaseTabIter.h.
Definition at line 146 of file BaseTabIter.h.
Definition at line 148 of file BaseTabIter.h.
|
private |
Definition at line 147 of file BaseTabIter.h.
|
private |
Definition at line 149 of file BaseTabIter.h.
|
protected |
Definition at line 122 of file BaseTabIter.h.