ISIStreamWrapper.h

00001 #ifndef SCT_ISISTREAMWRAPPER_H
00002 #define SCT_ISISTREAMWRAPPER_H
00003 #include "is/istream.h"
00004 #include "IStream.h"
00005 
00006 namespace Sct{
00008   class ISIStreamWrapper : public virtual ISistream {
00009   public:
00010     ISIStreamWrapper(IStream& is) : is(is) {
00011       //std::cout << "Made a new ISIStreamWrapper " << std::endl;
00012     }
00013 
00014     virtual ~ISIStreamWrapper() {}
00015     
00016 /*
00017     template <class T>
00018     ISistream & operator>>( T & val ) {
00019       is >> val;
00020       return *this;
00021     };
00022   */  
00023 
00024     virtual ISistream & operator>>(char *str) {
00025       //std::cout << "char* " << std::endl;
00026       is >> str;
00027       return *this;
00028     }
00029 
00030     virtual ISistream & operator>>(unsigned char *str) {
00031       //std::cout << "unsigned char* " << std::endl;
00032       is >> str;
00033     return *this;
00034     }
00035 
00036     virtual ISistream & operator>>(char **str) {
00037       //std::cout << "char** " << std::endl;
00038         is >> str;
00039     return *this;
00040     }
00041 
00042     virtual ISistream & operator>>(unsigned char **str)  {
00043       //std::cout << "u char** " << std::endl;
00044         is >> str;
00045     return *this;
00046     }
00047 
00048     virtual ISistream & operator>>(bool& val) {
00049       //std::cout << "bool " << std::endl;
00050         is >> val;
00051         return *this;
00052     }
00053 
00054     virtual ISistream & operator>>(char& val) {
00055       //std::cout << "char " << std::endl;
00056         is >> val;
00057         return *this;
00058     }
00059 
00060     virtual ISistream & operator>>(unsigned char& val) {
00061       //std::cout << "uchar " << std::endl;
00062         is >> val;
00063         return *this;
00064     }
00065 
00066     virtual ISistream & operator>>(short& val) {
00067       //std::cout << "short " << std::endl;
00068         is >> val;
00069         return *this;
00070     }
00071 
00072     virtual ISistream & operator>>(unsigned short& val) {
00073       //std::cout << "ushort " << std::endl;
00074         is >> val;
00075         return *this;
00076     }
00077 
00078     virtual ISistream & operator>>(int& val) {
00079       //std::cout << "int " << std::endl;
00080         is >> val;
00081         return *this;
00082     }
00083 
00084     virtual ISistream & operator>>(unsigned int& val) {
00085     //std::cout << "uint" << std::endl;
00086         is >> val;
00087         return *this;
00088     }
00089 
00090     virtual ISistream & operator>>(long& val)  {
00091     //std::cout << "val" << std::endl;
00092         is >> val;
00093         return *this;
00094     }
00095 
00096     virtual ISistream & operator>>(unsigned long& val) {
00097     //std::cout << "ulong " << std::endl;
00098         is >> val;
00099         return *this;
00100     }
00101 
00102     virtual ISistream & operator>>(float& val) {
00103     //std::cout << "float " << std::endl;
00104         is >> val;
00105         return *this;
00106     }
00107 
00108     virtual ISistream & operator>>(double& val) {
00109     //std::cout << "double " << std::endl;
00110         is >> val;
00111         return *this;
00112     }
00113 
00114     virtual ISistream & operator>>(std::string& val) {
00115     //std::cout << "std::string " << std::endl;
00116         is >> val;
00117         return *this;
00118     }
00119     
00120     //    virtual ISistream & operator>>(OWLDate& val) = 0;
00121     //    virtual ISistream & operator>>(OWLTime& val) = 0;
00122 
00123 
00124 
00125 
00126 
00127 //#warning It may be necessary to implement the following two method of is/istream.h ... though neither is virtual ...
00128     /*
00129       template <class T>
00130       ISistream & operator>>( std::vector<T> & val )
00131       
00132     ISistream & operator>>( std::vector<bool> & val ) {
00133     
00134       };
00135 
00136       
00137     template <class T>
00138     ISistream & get( T ** val, size_t & size ) {
00139       is.get(val, size);
00140       return *this;
00141     };
00142     */
00143 
00144     
00145     virtual ISistream & get ( bool ** p, size_t & size ) {
00146       is.get(p,size);
00147       return *this;
00148     }
00149 
00150     virtual ISistream & get ( char ** p, size_t & size ) {
00151       is.get(p,size);
00152       return *this;
00153     }
00154 
00155     virtual ISistream & get ( unsigned char ** p, size_t & size ) {
00156       is.get(p,size);
00157       return *this;
00158     }
00159 
00160     virtual ISistream & get( short ** p, size_t & size ) {
00161     is.get(p,size);
00162     return *this;
00163     }
00164 
00165     virtual ISistream & get( unsigned short ** p, size_t & size ) {
00166     is.get(p,size);
00167         return *this;
00168     }
00169 
00170     virtual ISistream & get( int ** p, size_t & size ) {
00171     is.get(p,size);
00172         return *this;
00173     }
00174 
00175     virtual ISistream & get( unsigned int ** p, size_t & size ) {
00176       is.get(p,size);
00177       return *this;
00178     }
00179 
00180     virtual ISistream & get( long ** p, size_t & size ) {
00181       is.get(p,size);
00182       return *this;
00183     }
00184 
00185     virtual ISistream & get( unsigned long ** p, size_t & size ) {
00186       is.get(p,size);
00187       return *this;
00188     }
00189 
00190     virtual ISistream & get( float ** p, size_t & size ) {
00191     is.get(p,size);
00192         return *this;
00193     }
00194 
00195     virtual ISistream & get( double ** p, size_t & size ) {
00196       is.get(p,size);
00197       return *this;
00198     }
00199 
00200     virtual ISistream & get( std::string ** p, size_t & size ) {
00201     is.get(p,size);
00202         return *this;
00203     }
00204 
00205     virtual ISistream & get( bool * const p, const size_t size ) {
00206       is.get(p,size);
00207       return *this;
00208     }
00209 
00210     virtual ISistream & get( char * const p, const size_t size ) {
00211         is.get(p,size);
00212     return *this;
00213     }
00214 
00215     virtual ISistream & get( unsigned char * const p, const size_t size ) {
00216         is.get(p,size);
00217     return *this;
00218     }
00219 
00220     virtual ISistream & get( short * const p, const size_t size ) {
00221         is.get(p,size);
00222     return *this;
00223     }
00224 
00225     virtual ISistream & get( unsigned short * const p, const size_t size ) {
00226         is.get(p,size);
00227     return *this;
00228     }
00229     
00230     virtual ISistream & get( int * const p, const size_t size ) {
00231         is.get(p,size);        
00232     return *this;
00233     }
00234 
00235     virtual ISistream & get( unsigned int * const p, const size_t size ) {
00236         is.get(p,size);        
00237     return *this;
00238     }
00239 
00240     virtual ISistream & get( long * const p, const size_t size ) {
00241         is.get(p,size);
00242     return *this;
00243     }
00244 
00245     virtual ISistream & get( unsigned long * const p, const size_t size ) {
00246         is.get(p,size);
00247         return *this;
00248     }
00249 
00250     virtual ISistream & get( float * const p, const size_t size ) {
00251         is.get(p,size);
00252         return *this;
00253     }
00254 
00255     virtual ISistream & get( double * const p, const size_t size ) {
00256         is.get(p,size);
00257         return *this;
00258     }
00259 
00260     virtual ISistream & get( std::string * const p, const size_t size ) {
00261         is.get(p,size);
00262         return *this;
00263     }
00264 
00265   private:
00266     ISIStreamWrapper();
00267     IStream& is;
00268   };
00269 
00270 } // namespace Sct
00271 
00272 #endif // #ifndef SCT_ISISTREAMWRAPPER_H

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