16 #ifndef odc_WriterDispatchingIterator_H
17 #define odc_WriterDispatchingIterator_H
22 #include "eckit/sql/SQLTypedefs.h"
28 namespace eckit {
class PathName; }
29 namespace eckit {
class DataHandle; }
33 class TemplateParameters;
35 template <
typename WRITE_ITERATOR,
typename OWNER >
48 double&
data(
size_t i);
55 template <
typename T>
unsigned long pass1(T&,
const T&);
56 template <
typename T>
void verify(T&,
const T&);
92 WRITE_ITERATOR&
dispatch(
const double* values,
unsigned long count);
static void count(void *counter, const double *data, size_t n)
Writer< WRITE_ITERATOR > iteratorsOwner_
WriterDispatchingIterator & operator=(const WriterDispatchingIterator &)
size_t rowDataSizeDoubles() const
WRITE_ITERATOR & dispatch(const double *values, unsigned long count)
Find iterator data should be dispatched to.
unsigned long gatherStats(const double *values, unsigned long count)
std::vector< eckit::PathName > files_
std::vector< int > dispatchedIndexes_
void missingValue(size_t i, double)
const core::MetaData & columns() const
std::vector< unsigned long long > lastDispatch_
TemplateParameters & templateParameters()
std::vector< WRITE_ITERATOR * > Iterators
Values2IteratorIndex values2iteratorIndex_
std::string generateFileName(const double *values, unsigned long count)
std::map< Values, int > Values2IteratorIndex
api::ColumnType columnType(size_t index)
core::Properties properties_
std::vector< eckit::PathName > outputFiles()
unsigned long long nrows_
std::string outputFileTemplate_
int writeRow(const double *values, unsigned long count)
WriterDispatchingIterator(OWNER &owner, int maxOpenFiles, bool append=false)
int createIterator(const Values &dispatchedValues, const std::string &fileName)
WriterDispatchingIterator(const WriterDispatchingIterator &)
Values lastDispatchedValues_
std::vector< double > Values
TemplateParameters templateParameters_
size_t dataOffset(size_t i) const
The offset of a given column in the doubles[] data array.
int setColumn(size_t index, std::string name, api::ColumnType type)
int setBitfieldColumn(size_t index, std::string name, api::ColumnType type, eckit::sql::BitfieldDef b)
void verify(T &, const T &)
unsigned long pass1(T &, const T &)
double columnMissingValue(size_t index)
int dispatchIndex(const double *values, unsigned long count)
std::map< std::string, int > filesCreated_
const std::string & codecName(size_t index) const
void property(std::string key, std::string value)
const std::string & columnName(size_t index) const
~WriterDispatchingIterator()
std::vector< std::string > iteratorIndex2fileName_
void parseTemplateParameters()
std::map< std::string, std::string > Properties