soma-io  5.0.5
soma::ItemReader< T > Class Template Referenceabstract

Low-level "small item" reader, used by higher-level file readers. More...

#include <soma-io/reader/itemreader.h>

Inheritance diagram for soma::ItemReader< T >:

Public Member Functions

virtual ~ItemReader ()
 
virtual ItemReader< T > * reader (bool binary=true, bool bswap=false) const =0
 Factory function. More...
 
virtual long read (DataSource &ds, T *pitem, size_t n=1) const =0
 Reading on an arbitrary DataSource. More...
 

Detailed Description

template<typename T>
class soma::ItemReader< T >

Low-level "small item" reader, used by higher-level file readers.

It can read either a single item, or an array of them. This template class is inherited by specific item readers, esp. by the DefaultItemReader classes.

Usage: you generally have to allocate two readers: one as a factory to use the correct item variant, and another one to switch on the reading-mode specific ItemReader:

#include <soma-io/reader/defaultitemreader.h>
using namespace soma;
// Let's read a vector of signed 16 bits elements
short shortarray[ 100 ];
bool binary;
bool bswap;
// get binary and bswap from the header of the file to read
// ...
// now we assume it's done
ItemReader<short> *ir = ir1.reader( binary, bswap );
// we use ir in the following, we can forget ir1 now.
FileDataSource ds( "file.dat" );
if( !ds.open( DataSource::Read ) )
return false; // fail
// read 100 elements
ir->read( ds, shortarray, 100 );
// don't forget to destroy the reader after use
// (or put it in a scoped_ptr)
delete ir;

Definition at line 84 of file itemreader.h.

Constructor & Destructor Documentation

◆ ~ItemReader()

template<typename T>
virtual soma::ItemReader< T >::~ItemReader ( )
inlinevirtual

Definition at line 87 of file itemreader.h.

References soma::ItemReader< T >::read(), and soma::ItemReader< T >::reader().

Member Function Documentation

◆ read()

template<typename T>
virtual long soma::ItemReader< T >::read ( DataSource ds,
T *  pitem,
size_t  n = 1 
) const
pure virtual

Reading on an arbitrary DataSource.

Parameters
dssource of data (file, buffer, socket...)
pitembuffer to fill with read values
nnumber of elements to read
Returns
number of elements actually read

Implemented in soma::DefaultBSwapItemReader< T >, soma::DefaultAsciiItemReader< T >, and soma::DefaultItemReader< T >.

Referenced by soma::DefaultAsciiItemReader< T >::~DefaultAsciiItemReader(), soma::DefaultBSwapItemReader< T >::~DefaultBSwapItemReader(), soma::DefaultItemReader< T >::~DefaultItemReader(), and soma::ItemReader< T >::~ItemReader().

◆ reader()

template<typename T>
virtual ItemReader<T>* soma::ItemReader< T >::reader ( bool  binary = true,
bool  bswap = false 
) const
pure virtual

The documentation for this class was generated from the following file: