13 #include "eckit/io/DataHandle.h"
20 using namespace eckit;
25 ReaderIterator::ReaderIterator(
Reader &owner)
30 rowDataSizeDoubles_(0),
32 rowsRemainingInTable_(0),
33 f_(owner_.dataHandle()->clone()),
58 rowDataSizeDoubles_(0),
60 rowsRemainingInTable_(0),
87 if (!Header::readMagic(*
f_)) {
107 size_t dataSize = header.
dataSize();
119 ASSERT(dataSize >= 2);
123 throw SeriousBug(
"Expected row data to follow table header");
136 Log::debug() <<
"ReaderIterator::~ReaderIterator: headers read: " <<
headerCounter_ <<
" rows:" <<
nrows_ << std::endl;
153 size_t nCols =
columns().size();
165 for(
size_t i = 0;
i < nCols;
i++)
170 offset +=
columns()[
i]->dataSizeDoubles();
185 if (bytesRead == 0)
return 0;
187 if (bytesRead != dataSize) {
188 std::stringstream ss;
189 ss <<
"Failed to read " << dataSize <<
" bytes of encoded data";
215 unsigned char marker[2];
218 int startCol = (marker[0] * 256) + marker[1];
220 size_t nCols =
columns().size();
221 for(
size_t i = startCol;
i < nCols;
i++) {
233 for (
const auto& column :
columns()) {
234 total += column->dataSizeDoubles();
std::unique_ptr< eckit::DataHandle > f_
const std::string & codecName(unsigned long index) const
size_t rowDataSizeDoubles_
ReaderIterator(Reader &owner)
eckit::Buffer rowDataBuffer_
size_t rowDataSizeDoublesInternal() const
const std::string & columnName(unsigned long index) const
bool operator!=(const ReaderIterator &other)
size_t rowsRemainingInTable_
std::vector< core::Codec * > codecs_
const eckit::sql::BitfieldDef & bitfieldDef(unsigned long index)
api::ColumnType columnType(unsigned long index)
unsigned long long nrows_
void property(std::string, std::string)
const double * data() const
unsigned long headerCounter_
size_t readBuffer(size_t dataSize)
core::Properties properties_
const core::MetaData & columns() const
bool loadHeaderAndBufferData()
size_t rowDataSizeDoubles() const
double columnMissingValue(unsigned long index)
core::GeneralDataStream rowDataStream_
eckit::DataHandle * dataHandle()
void readBytes(Args &&... args)
const int32_t BYTE_ORDER_INDICATOR