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 ); }
 
  138   template<
class T> ItemWriter<T>* 
 
  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 ) ];
 
  181     const byte  *ps = (
byte *) pitem;
 
  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 
  282     byte        *pd = 
new byte[ n * 
sizeof( 
cfloat ) ];
 
  283     const byte  *ps = (
byte*) pitem;
 
  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 
  297     byte        *pd = 
new byte[ n * 
sizeof( 
cdouble ) ];
 
  298     const byte  *ps = (
byte*) pitem;
 
  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 void write(std::ostream &os, const T &item) const
virtual ~DefaultAsciiItemWriter()
virtual ~DefaultBSwapItemWriter()
virtual void write(std::ostream &os, const AimsVector< T, D > &item) const
virtual void write(std::ostream &os, const T &item) const
virtual ~DefaultBSwapItemWriter()
virtual ~DefaultItemWriter()
virtual void write(std::ostream &os, const AimsVector< T, D > &item) const
Default low-levels writers.
virtual void write(std::ostream &os, const T &item) const
virtual ItemWriter< T > * writer(const std::string &openmode="binar", bool bswap=false) const
virtual ~DefaultItemWriter()
Low-level "small item" writer, used by higher-level file readers.
The class for EcatSino data write operation.
bool write(const T &obj, const std::string &filename, carto::Object options=carto::none(), const std::string *format=0)
Finds the correct format and writes the object, global version.
std::complex< double > cdouble
std::complex< float > cfloat