proj home

Files   Classes   Functions   Hierarchy  

message.h

Go to the documentation of this file.
00001 #ifndef MESSAGE_H
00002 #define MESSAGE_H
00003 
00004 #include <cassert>
00005 #include <string>
00006 #include <iostream>
00007 #include <sstream>
00008 #include <vector>
00009 using namespace std;
00010 
00011 #include <typedefs.h>
00012 
00013 
00014 class message;
00015 
00032 class message
00033 {
00034 public:
00035 
00037   static message *global;
00038 
00040   void globalset()
00041     { global = this; }
00042 
00044   virtual ostream& operator()()=0; 
00045 
00047   virtual ~message() {};
00048 
00050   virtual void pre() {};
00052   virtual void post() {};
00057   template< typename T >
00058   message& operator << (T& x)
00059   { 
00060     pre(); 
00061     (*this)() << x; 
00062     post(); 
00063     return *this; 
00064   }
00065 
00066 };
00067 
00071 /*
00072 class messageglobal : public message
00073 {
00074 public:
00075   
00076   // Write to the global stream. 
00077   ostream& operator()()
00078     { return (*message::global)(); }
00079 };
00080 */
00081 
00083 message& messageglobal();
00084 
00088 class messagecout : public message
00089 {
00090 public:
00091 
00093   ostream& operator()() 
00094     { return cout; }
00095 };
00096 
00119 class messagefile : public message
00120 {
00121   messagefile();
00122   fstream* os;
00123 public:
00124 
00126   messagefile
00127   (
00128     stringc& filename, 
00129     boolc killprevfile=false,  
00130     boolc binary=false
00131   );
00133   ~messagefile();
00134 
00136   ostream& operator()(); 
00137 };
00138 
00139 
00148 class messagelist : public message
00149 {
00150 protected:
00152   stringstream ss;
00153 public:
00154 
00156   vector<string> vi;
00157 
00159   void pre();
00161   void post();
00162   
00164   ostream& operator()();
00165 
00166 };
00167 
00168 
00169 #endif
00170 
00171 

Generated on Fri Mar 4 00:49:29 2011 for Chelton Evans Source by  doxygen 1.5.8