34 #ifndef SOMAIO_READER_ITEMREADER_H
35 #define SOMAIO_READER_ITEMREADER_H
91 bool bswap =
false )
const = 0;
104 template <
typename T>
112 bool bswap =
false )
const;
114 virtual long read(
DataSource & ds, T* pitem,
size_t n = 1 )
const;
118 template <
typename T>
125 virtual long read(
DataSource & ds, T* pitem,
size_t n = 1 )
const;
130 template <
typename T>
137 virtual long read(
DataSource & ds, T* pitem,
size_t n = 1 )
const;
145 template <
typename T>
179 template <
typename T>
185 long len = ds.
readBlock(
reinterpret_cast<char*
>( pitem ),
187 return len /
sizeof(T);
191 template <
typename T>
197 long len = ds.
readBlock(
reinterpret_cast<char*
>( pitem ), n *
sizeof(T) );
198 uint8_t *ptr =
reinterpret_cast<uint8_t*
>( pitem );
199 for(
long k=0; k<len; k+=
sizeof(T) )
200 for(
size_t b=0; b<
sizeof(T)/2; ++b )
201 std::swap( ptr[k+b], ptr[k+
sizeof(T)-1-b] );
202 return len /
sizeof(T);
206 template <
typename T>
215 for( i=0; i<n; ++i, ++ptr )
222 while( ( c ==
' ' || c ==
'\t' || c ==
'\n' || c ==
'\r' || c ==
',' )
227 if( !readOne( ds, ptr ) )
234 template <
typename T>
static bool read(DataSource &ds, T &item)
Abstraction layer for various data sources (file, buffer, socket...).
virtual bool ungetch(int ch)=0
virtual long readBlock(char *data, unsigned long maxlen)=0
virtual bool isOpen() const =0
virtual ~DefaultAsciiItemReader()
virtual long read(DataSource &ds, T *pitem, size_t n=1) const
Reading on an arbitrary DataSource.
bool readOne(DataSource &ds, T *pitem) const
virtual ~DefaultBSwapItemReader()
virtual long read(DataSource &ds, T *pitem, size_t n=1) const
Reading on an arbitrary DataSource.
Default low-levels readers.
virtual ItemReader< T > * reader(bool binary=true, bool bswap=false) const
Factory function.
virtual ~DefaultItemReader()
virtual long read(DataSource &ds, T *pitem, size_t n=1) const
Reading on an arbitrary DataSource.
Low-level "small item" reader, used by higher-level file readers.
virtual ItemReader< T > * reader(bool binary=true, bool bswap=false) const =0
Factory function.
virtual long read(DataSource &ds, T *pitem, size_t n=1) const =0
Reading on an arbitrary DataSource.