XmlStyleStream.h

00001 #ifndef SCT_XMLSTYLESTREAM_H
00002 #define SCT_XMLSTYLESTREAM_H
00003 #include <sstream>
00004 #include "Sct/OStream.h"
00005 #include "Sct/IStream.h"
00006 
00007 namespace Sct{
00008   
00009   class XmlStyleOStream : public OStream{
00010   public:
00011     XmlStyleOStream(std::ostream& out);
00012     
00013     virtual ~XmlStyleOStream();
00014     
00015     virtual XmlStyleOStream& operator<< ( const char * ); 
00016     virtual XmlStyleOStream& operator<< ( const unsigned char * ); 
00017     virtual XmlStyleOStream& operator<< ( bool ); 
00018     virtual XmlStyleOStream& operator<< ( char ); 
00019     virtual XmlStyleOStream& operator<< ( short ); 
00020     virtual XmlStyleOStream& operator<< ( int ); 
00021     virtual XmlStyleOStream& operator<< ( long ); 
00022     virtual XmlStyleOStream& operator<< ( unsigned char ); 
00023     virtual XmlStyleOStream& operator<< ( unsigned short ); 
00024     virtual XmlStyleOStream& operator<< ( unsigned int ); 
00025     virtual XmlStyleOStream& operator<< ( unsigned long ); 
00026     virtual XmlStyleOStream& operator<< ( float ); 
00027     virtual XmlStyleOStream& operator<< ( double );
00028     virtual XmlStyleOStream& operator<< ( const std::string & ); 
00029     
00030     virtual XmlStyleOStream& put( const bool * , size_t );
00031     virtual XmlStyleOStream& put( const char * , size_t );
00032     virtual XmlStyleOStream& put( const short * , size_t );
00033     virtual XmlStyleOStream& put( const int * , size_t );
00034     virtual XmlStyleOStream& put( const long * , size_t );
00035     virtual XmlStyleOStream& put( const unsigned char * , size_t );
00036     virtual XmlStyleOStream& put( const unsigned short * , size_t );
00037     virtual XmlStyleOStream& put( const unsigned int * , size_t );
00038     virtual XmlStyleOStream& put( const unsigned long * , size_t );
00039     virtual XmlStyleOStream& put( const float * , size_t );
00040     virtual XmlStyleOStream& put( const double * , size_t );
00041     virtual XmlStyleOStream& put( const std::string * , size_t );
00042     
00043   private:
00044     std::ostream& m_out;
00045   };
00046 
00047   class XmlStyleIStream : public IStream {
00048   public:
00049     XmlStyleIStream( std::istream& is );
00050     virtual ~XmlStyleIStream( );
00051     
00052     XmlStyleIStream& operator>> ( char *  );        
00053     XmlStyleIStream& operator>> ( char ** ); 
00054     XmlStyleIStream& operator>> ( unsigned char *  ); 
00055     XmlStyleIStream& operator>> ( unsigned char ** ); 
00056     XmlStyleIStream& operator>> ( bool &  );
00057     XmlStyleIStream& operator>> ( char &  );
00058     XmlStyleIStream& operator>> ( short &  );
00059     XmlStyleIStream& operator>> ( int &  );
00060     XmlStyleIStream& operator>> ( long &  );
00061     XmlStyleIStream& operator>> ( unsigned char &  );
00062     XmlStyleIStream& operator>> ( unsigned short &  );
00063     XmlStyleIStream& operator>> ( unsigned int &  );
00064     XmlStyleIStream& operator>> ( unsigned long &  );
00065     XmlStyleIStream& operator>> ( float &  );
00066     XmlStyleIStream& operator>> ( double &  );
00067     XmlStyleIStream& operator>> ( std::string &  );
00068     
00069     XmlStyleIStream& get( bool ** , size_t & );
00070     XmlStyleIStream& get( char ** , size_t & );
00071     XmlStyleIStream& get( short ** , size_t & );
00072     XmlStyleIStream& get( int ** , size_t & );
00073     XmlStyleIStream& get( long ** , size_t & );
00074     XmlStyleIStream& get( unsigned char ** , size_t & );
00075     XmlStyleIStream& get( unsigned short ** , size_t & );
00076     XmlStyleIStream& get( unsigned int ** , size_t & );
00077     XmlStyleIStream& get( unsigned long ** , size_t & );
00078     XmlStyleIStream& get( float ** , size_t & );
00079     XmlStyleIStream& get( double ** , size_t & );
00080     XmlStyleIStream& get( std::string ** , size_t & );
00081     
00082     XmlStyleIStream& get( bool * const , const size_t );
00083     XmlStyleIStream& get( char * const , const size_t );
00084     XmlStyleIStream& get( short * const , const size_t );
00085     XmlStyleIStream& get( int * const , const size_t );
00086     XmlStyleIStream& get( long * const , const size_t );
00087     XmlStyleIStream& get( unsigned char * const , const size_t );
00088     XmlStyleIStream& get( unsigned short * const , const size_t );
00089     XmlStyleIStream& get( unsigned int * const , const size_t );
00090     XmlStyleIStream& get( unsigned long * const , const size_t );
00091     XmlStyleIStream& get( float * const , const size_t );
00092     XmlStyleIStream& get( double * const , const size_t );
00093     XmlStyleIStream& get( std::string * const , const size_t );
00094     
00095   protected:
00096     void        reset( );
00097     size_t      entries( ) const;
00098     size_t      readSize( ) const;
00099     bool        isArray( ) const;
00100     
00101   private:
00102     std::string     data_;
00103     std::string::size_type  count_;
00104     size_t          entries_;
00105   };
00106 }
00107 
00108 #endif  // ISSTREAM_H

Generated on Mon Feb 6 14:01:37 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6