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
00045 #include "arts.h"
00046 #include "array.h"
00047 #include "arts_omp.h"
00048
00049 extern bool in_main_agenda;
00050 #pragma omp threadprivate(in_main_agenda)
00051
00053
00074 class Messages {
00075 public:
00076 bool valid();
00077 bool sufficient_priority_agenda(Index priority);
00078 bool sufficient_priority_screen(Index priority);
00079 bool sufficient_priority_file(Index priority);
00080
00090 template<class T>
00091 void Print(ostream& os, Index priority, const T& t)
00092 {
00093 extern ofstream report_file;
00094
00095
00096
00097
00098
00099
00100
00101 if (in_main_agenda || sufficient_priority_agenda(priority))
00102 {
00103 if (sufficient_priority_screen(priority))
00104 os << t;
00105
00106 if (sufficient_priority_file(priority))
00107
00108 report_file << t;
00109 }
00110 }
00111
00113 Index va;
00115 Index vs;
00117 Index vf;
00118 };
00119
00120
00121
00122
00127 class Out0 {
00128 };
00129
00133 class Out1 {
00134 };
00135
00139 class Out2 {
00140 };
00141
00145 class Out3 {
00146 };
00147
00148
00149
00150
00152 template<class T>
00153 Out0& operator<<(Out0& os, const T& t)
00154 {
00155 extern Messages arts_messages;
00156 arts_messages.Print(cerr,0,t);
00157 return os;
00158 }
00159
00161 template<class T>
00162 Out1& operator<<(Out1& os, const T& t)
00163 {
00164
00165 extern Messages arts_messages;
00166 arts_messages.Print(cout,1,t);
00167 return os;
00168 }
00169
00171 template<class T>
00172 Out2& operator<<(Out2& os, const T& t)
00173 {
00174 extern Messages arts_messages;
00175 arts_messages.Print(cout,2,t);
00176 return os;
00177 }
00178
00180 template<class T>
00181 Out3& operator<<(Out3& os, const T& t)
00182 {
00183 extern Messages arts_messages;
00184 arts_messages.Print(cout,3,t);
00185 return os;
00186 }
00187
00188
00189
00190 extern Out0 out0;
00191 extern Out1 out1;
00192 extern Out2 out2;
00193 extern Out3 out3;
00194
00195
00196
00197 #endif // messages_h