Files Classes Functions Hierarchy
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
1.5.8