37 #ifndef AIMS_IO_DEFAULTITEMW_H 38 #define AIMS_IO_DEFAULTITEMW_H 64 virtual void write( std::ostream & os,
const T & item )
const 65 { write( os, &item, 1 ); }
66 virtual void write( std::ostream & os,
const T* pitem,
size_t n )
const;
67 virtual ItemWriter<T>* writer(
const std::string & openmode =
"binar",
68 bool bswap =
false )
const;
79 virtual void write( std::ostream & os,
const T& item )
const;
80 virtual void write( std::ostream & os,
const T* pitem,
size_t n )
const;
91 virtual void write( std::ostream & os,
const T& item )
const 92 { write( os, &item, 1 ); }
93 virtual void write( std::ostream & os,
const T* pitem,
size_t n )
const;
97 #ifndef DOXYGEN_HIDE_INTERNAL_CLASSES 100 template <
class T,
int D>
108 virtual void write( std::ostream & os,
110 { write( os, &item, 1 ); }
115 bool bswap =
false )
const;
120 template <
class T,
int D>
128 virtual void write( std::ostream & os,
130 { write( os, &item, 1 ); }
142 if( openmode ==
"ascii" )
150 template <
class T>
inline void 154 os.write( (
const char *) pitem,
sizeof(T) * n );
158 template <
class T>
inline 160 const T& item )
const 166 template <
class T>
inline 170 const T* ptr = pitem;
171 for(
size_t i=0; i<n; ++i, ++ptr )
176 template <
class T>
inline 180 byte *pd =
new byte[ n *
sizeof( T ) ];
182 for(
size_t k=0; k<n*
sizeof(T); k+=
sizeof(T) )
183 for(
size_t b=0; b<
sizeof(T)/2; ++b )
184 pd[k+b] = ps[k+
sizeof(T)-1-b];
185 os.write( (
const char *) pd,
sizeof(T) * n );
196 if( openmode ==
"ascii" )
204 template <
class T,
int D>
inline void 212 for(
size_t p=0; p<n; ++p, ++ptr )
213 ir.
write( os, &(*ptr)[0], D );
217 template <
class T,
int D>
inline void 226 for(
size_t p=0; p<n; ++p, ++ptr )
227 ir.
write( os, &(*ptr)[0], D );
233 template <>
inline void 239 template <>
inline void 246 template <>
inline void 253 template <>
inline void 255 const int8_t* pitem,
size_t n )
const 257 os.write( (
const char *) pitem, n );
261 template <>
inline void 263 const uint8_t* pitem,
266 os.write( (
const char *) pitem, n );
270 template <>
inline void 274 os.write( (
const char *) pitem, n );
278 template <>
inline void 280 const cfloat* pitem,
size_t n )
const 284 for(
size_t k=0; k<n*
sizeof(
cfloat); k+=
sizeof(float) )
285 for(
size_t b=0; b<
sizeof(float)/2; ++b )
286 pd[k+b] = ps[k+
sizeof(
float)-1-b];
287 os.write( (
const char *) pd, n );
292 template <>
inline void 299 for(
size_t k=0; k<n*
sizeof(
cdouble); k+=
sizeof(float) )
300 for(
size_t b=0; b<
sizeof(double)/2; ++b )
301 pd[k+b] = ps[k+
sizeof(
double)-1-b];
302 os.write( (
const char *) pd, n );
308 #if !defined(__sun__) || !defined(_CHAR_IS_SIGNED) 309 template <>
inline void 314 os.write( (
const char *) pitem, n );
virtual ~DefaultBSwapItemWriter()
Default low-levels writers.
virtual ItemWriter< T > * writer(const std::string &openmode="binar", bool bswap=false) const
virtual ~DefaultItemWriter()
virtual void write(std::ostream &os, const T &item) const
The class for EcatSino data write operation.
std::complex< float > cfloat
virtual ~DefaultBSwapItemWriter()
Low-level "small item" writer, used by higher-level file readers.
virtual void write(std::ostream &os, const AimsVector< T, D > &item) const
virtual void write(std::ostream &os, const T &item) const
virtual ~DefaultItemWriter()
virtual void write(std::ostream &os, const AimsVector< T, D > &item) const
virtual void write(std::ostream &os, const T &item) const
std::complex< double > cdouble
virtual ~DefaultAsciiItemWriter()