34 #ifndef SOMAIO_WRITER_ITEMWRITER_H
35 #define SOMAIO_WRITER_ITEMWRITER_H
56 bool bswap =
false )
const = 0;
59 {
return write( ds, &item, 1 ) == 1; }
79 bool bswap =
false )
const;
105 template<
typename T> ItemWriter<T>*
117 template <
typename T>
inline long
121 long len = ds.
writeBlock( (
const char *) pitem,
sizeof(T) * n );
122 return len /
sizeof( T );
126 template <
typename T>
inline
130 const T* ptr = pitem;
132 for( i=0; i<n && ds.
isOpen(); ++i, ++ptr )
138 template <
typename T>
inline
142 std::vector<uint8_t> pd( n *
sizeof(T) );
143 const uint8_t *ps = (uint8_t *) pitem;
144 for(
size_t k=0; k<n*
sizeof(T); k+=
sizeof(T) ) {
145 for(
size_t b=0; b<
sizeof(T)/2; ++b ) {
146 pd[k+b] = ps[k+
sizeof(T)-1-b];
147 pd[k+
sizeof(T)-1-b] = ps[k+b];
150 return ds.
writeBlock( (
const char *) &pd[0],
sizeof(T) * n ) /
sizeof(T);
156 template <>
inline long
163 template <>
inline long
171 template <>
inline long
Abstraction layer for various data sources (file, buffer, socket...).
virtual long writeBlock(const char *data, unsigned long len)=0
virtual bool isOpen() const =0
virtual ~DefaultAsciiItemWriter()
virtual long write(DataSource &ds, const T *pitem, size_t n) const
virtual long write(DataSource &ds, const T *pitem, size_t n) const
virtual ~DefaultBSwapItemWriter()
Default low-levels writers.
virtual ItemWriter< T > * writer(bool binary=true, bool bswap=false) const
Factory function.
virtual ~DefaultItemWriter()
virtual long write(DataSource &ds, const T *pitem, size_t n) const
Low-level "small item" writer, used by higher-level file writers.
virtual ItemWriter< T > * writer(bool binary=true, bool bswap=false) const =0
Factory function.
bool write(DataSource &ds, const T &item) const
virtual long write(DataSource &ds, const T *pitem, size_t n) const =0