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