OStreamAdaptor.h

00001 #ifndef SCT_OSTREAMADAPTOR_H
00002 #define SCT_OSTREAMADAPTOR_H
00003 
00004 #include "Sct/OStream.h"
00005 #include <iostream>
00006 #include <string>
00007 #include <cstring>
00008 
00009 using std::ostream;
00010 using std::string;
00011 using std::strcpy;
00012 
00013 namespace Sct {
00014 
00019 class OStreamAdaptor : public virtual OStream {
00020 public:
00021   /* constructor from a std::ostream */
00022     OStreamAdaptor(ostream& os) : os(&os) {
00023     }
00024     
00025     virtual ~OStreamAdaptor() {
00026     }
00027     
00028     virtual OStream & operator<<(bool val) {
00029     *os << val << " ";
00030     return *this;
00031     }
00032     
00033     virtual OStream & operator<<(char val) {
00034     *os << (int)val << " ";
00035     return *this;
00036     }
00037     
00038     virtual OStream & operator<<(unsigned char val) {
00039     *os << (unsigned int)val << " ";
00040     //cout << "WriteUChar: " << (int)val << " at: " << *os.tellp() << endl;
00041     return *this;
00042     }
00043     
00044     virtual OStream & operator<<(short val) {
00045     *os << val << " ";
00046     return *this;
00047     }
00048     
00049     virtual OStream & operator<<(unsigned short val){
00050     *os << val << " ";
00051     return *this;
00052     }
00053     
00054     virtual OStream & operator<<(int val) {
00055     *os << val << " ";
00056     return *this;
00057     }
00058     
00059     virtual OStream & operator<<(unsigned int val) {
00060     *os << val << " ";
00061     return *this;
00062     }
00063     
00064     virtual OStream & operator<<(long val) {
00065     *os << val << " ";
00066     return *this;
00067     }
00068     
00069     virtual OStream & operator<<(unsigned long val) {
00070     *os << val << " ";
00071     return *this;
00072     }
00073     
00074     virtual OStream & operator<<(double val) {
00075     *os << val << " ";
00076     return *this;
00077     }
00078     
00079     virtual OStream & operator<<(float val) {
00080     *os << val << " ";
00081     return *this;
00082     }
00083     
00084     virtual OStream & operator<<(const std::string & val) {
00085     *os << val << " ";
00086     return *this;
00087     }
00088     
00089 //    virtual OStream & operator<<(OWLDate & val)  = 0;
00090 //    virtual OStream & operator<<(OWLTime & val)  = 0;
00091 
00092     virtual OStream & operator<<(const char * str) {
00093     *os << str << " ";
00094     return *this;
00095     }
00096     
00097     virtual OStream & operator<<(const unsigned char * str) {
00098     *os << str << " ";
00099     return *this;
00100     }
00101     
00102     virtual OStream & put(const bool* p, size_t size) {
00103     *os << size << " ";
00104     for (unsigned int i=0; i<size; ++i) {
00105         *os << p[i] << " ";
00106     }
00107     return *this;
00108     }
00109     
00110     virtual OStream & put(const char* p, size_t size) {
00111     *os << size << " ";
00112     for (unsigned int i=0; i<size; ++i) {
00113         *os << (int)p[i] << " ";
00114     }
00115     return *this;
00116     }
00117     
00118     virtual OStream & put(const unsigned char* p, size_t size) {
00119     *os << size << " ";
00120     for (unsigned int i=0; i<size; ++i) {
00121         *os << (int)p[i] << " ";
00122     }
00123     return *this;
00124     }
00125   
00126     virtual OStream & put(const short* p, size_t size) {
00127     *os << size << " ";
00128     for (unsigned int i=0; i<size; ++i) {
00129         *os << p[i] << " ";
00130     }
00131     return *this;
00132     }
00133   
00134     virtual OStream & put(const unsigned short* p, size_t size) {
00135     *os << size << " ";
00136     for (unsigned int i=0; i<size; ++i) {
00137         *os << p[i] << " ";
00138     }
00139     return *this;
00140     }
00141   
00142     virtual OStream & put(const int* p, size_t size) {
00143     *os << size << " ";
00144     for (unsigned int i=0; i<size; ++i) {
00145         *os << p[i] << " ";
00146     }
00147     return *this;
00148     }
00149   
00150     virtual OStream & put(const unsigned int* p, size_t size) {
00151     *os << size << " ";
00152     for (unsigned int i=0; i<size; ++i) {
00153         *os << p[i] << " ";
00154     }
00155     return *this;
00156     }
00157   
00158     virtual OStream & put(const long* p, size_t size) {
00159     *os << size << " ";
00160     for (unsigned int i=0; i<size; ++i) {
00161         *os << p[i] << " ";
00162     }
00163     return *this;
00164     }
00165   
00166     virtual OStream & put(const unsigned long* p, size_t size) {
00167     *os << size << " ";
00168     for (unsigned int i=0; i<size; ++i) {
00169         *os << p[i] << " ";
00170     }
00171     return *this;
00172     }
00173   
00174     virtual OStream & put(const float* p, size_t size) {
00175     *os << size << " ";
00176     for (unsigned int i=0; i<size; ++i) {
00177         *os << p[i] << " ";
00178     }
00179     return *this;
00180     }
00181   
00182     virtual OStream & put(const double* p, size_t size) {
00183     *os << size << " ";
00184     for (unsigned int i=0; i<size; ++i) {
00185         *os << p[i] << " ";
00186     }
00187     return *this;
00188     }
00189   
00190     virtual OStream & put(const std::string* p, size_t size) {
00191       *os << size << " ";
00192       for (unsigned int i=0; i<size; ++i) {
00193     *os << p[i] << " ";
00194       }
00195       return *this;
00196     }
00197 //    virtual OStream & put(const OWLDate* p, size_t size) = 0;
00198 //    virtual OStream & put(const OWLTime* p, size_t size) = 0;
00199     
00200 private:
00201     ostream *os;
00202     OStreamAdaptor(){}
00203 };
00204 
00205 }
00206 #endif //SCT_OSTREAMADAPTOR_H

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