00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00039 #ifndef messages_h
00040 #define messages_h
00041
00042 #include <iostream>
00043 #include <fstream>
00044 #include "arts.h"
00045
00063 class Messages {
00064 public:
00067 Messages() : screen(-1), file(-1) { }
00069 Index screen;
00071 Index file;
00072 };
00073
00074
00084 template<class T>
00085 void MessagePrint(ostream& os, Index priority, const T& t)
00086 {
00087 extern Messages messages;
00088 extern ofstream report_file;
00089
00090
00091
00092 if (messages.screen >= priority)
00093 os << t;
00094
00095 if (messages.file >= priority)
00096
00097 {
00098 report_file << t;
00099 report_file.flush ();
00100 }
00101 }
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00120 class Out0 {
00121 };
00122
00126 class Out1 {
00127 };
00128
00132 class Out2 {
00133 };
00134
00138 class Out3 {
00139 };
00140
00141
00142
00144 template<class T>
00145 Out0& operator<<(Out0& os, const T& t)
00146 {
00147 MessagePrint(cerr,0,t);
00148 return os;
00149 }
00150
00152 template<class T>
00153 Out1& operator<<(Out1& os, const T& t)
00154 {
00155
00156 MessagePrint(cout,1,t);
00157 return os;
00158 }
00159
00161 template<class T>
00162 Out2& operator<<(Out2& os, const T& t)
00163 {
00164 MessagePrint(cout,2,t);
00165 return os;
00166 }
00167
00169 template<class T>
00170 Out3& operator<<(Out3& os, const T& t)
00171 {
00172 MessagePrint(cout,3,t);
00173 return os;
00174 }
00175
00176
00177
00178 extern Out0 out0;
00179 extern Out1 out1;
00180 extern Out2 out2;
00181 extern Out3 out3;
00182
00183
00184
00185 #endif // messages_h