Main Page   Modules   Namespace List   Class Hierarchy   Data Structures   File List   Namespace Members   Data Fields   Globals   Related Pages  

OStreamFile.h

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

Generated on Mon Dec 15 19:36:10 2003 for SCT DAQ/DCS Software by doxygen1.3-rc3