StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StMessageManager.h
1 
15 #ifndef ClassStMessageManager
16 #define ClassStMessageManager
17 
18 #include "StMessage.h"
19 #include "StMessTypeList.h"
20 #include "StMessageCounter.h"
21 
22 #ifndef ClassMessVec
23 #define ClassMessVec
24 typedef StVector(StMessage*) messVec;
25 typedef StVector(StMessage*)::iterator messVecIter;
26 typedef StVector(messVec*) messTypeVec;
27 #endif
28 
29 #include "StMessMgr.h"
30 
31 class StMessageManager : public StMessMgr {
32 
33  private:
34  static StMessMgr* mInstance;
35  StMessTypeList* messTypeList;
36  StMessageCounter* messCounter;
37  char* curType;
38  char* curOpt;
39  int building;
40  int remember;
41 
42  protected:
45  messVec messList;
46  messTypeVec messCollection;
47  virtual messVecIter FindMessageIter(const char* s1, const char* s2="",
48  const char* s3="", const char* s4="", messVec* list=0);
49  virtual void BuildMessage(const char* mess="", const char* type="",
50  const char* opt=0);
51  virtual void IgnoreRepeats() { StMessage::IgnoreRepeats(); }
52  virtual void AllowRepeats() { StMessage::AllowRepeats(); }
53 
54 
55  public:
56  virtual ~StMessageManager();
57  static StMessMgr* Instance();
58 
59  virtual std::ostream& OperatorShift(std::ostream& os, StMessage* stm);
60 
61 // Generic Messages:
62  virtual std::ostringstream& Message(const char* mess="", const char* type="",
63  const char* opt=0,const char *sourceFileName=0, int lineNumber=-1);
64  virtual void Print();
65  virtual int PrintList(messVec* list);
66  virtual int PrintAll() {return PrintList(&messList); }
67  virtual const messVec* GetAll() {return (&messList);}
68  virtual StMessage* FindMessage(const char* s1, const char* s2="",
69  const char* s3="", const char* s4="", messVec* list=0);
70  virtual messVec* FindMessageList(const char* s1, const char* s2="",
71  const char* s3="", const char* s4="", messVec* list=0);
72  virtual int RemoveMessage(StMessage* mess);
73  virtual int RemoveMessage(const char* s1, const char* s2="",
74  const char* s3="", const char* s4="")
75  {return RemoveMessage(FindMessage(s1,s2,s3,s4));}
76  virtual void SetLimit(const char* str, int n=0)
77  {messCounter->SetLimit(str,n);}
78  virtual int GetLimit(const char* str)
79  {return messCounter->GetLimit(str);}
80  virtual void ListLimits() {messCounter->ListLimits();}
81  virtual void RemoveLimit(const char* str) {SetLimit(str,-1);}
82  virtual void SetLevel(Int_t logLevel);
83  virtual Int_t GetLevel(Int_t logLevel) const;
84  virtual const char *GetName() const;
85  virtual void SwitchOff(const char* str) {SetLimit(str,0);}
86  virtual void SwitchOn(const char* str) {RemoveLimit(str);}
87  virtual void FixOn(const char* str) {SetLimit(str,-5);}
88  virtual void NoLimits() {messCounter->NoLimits();}
89  virtual void Summary(size_t nTerms=1);
90  virtual void MemorySummary();
91  virtual void MemoryOn() {remember=1;}
92  virtual void MemoryOff() {remember=0;}
93  virtual int AddType(const char* type, const char* text);
94  virtual int ListTypes() {return messTypeList->ListTypes();}
95 
96 // Info Messages:
97  virtual std::ostringstream& Info(const char* mess="", const char* opt="O",const char *sourceFileName=0, int lineNumber=-1)
98  { return Message(mess, "I", opt);}
99  virtual int PrintInfos() {return PrintList(messCollection[1]); }
100  virtual const messVec* GetInfos() {return (messCollection[1]);}
101  virtual StMessage* FindInfo(const char* s1, const char* s2="",
102  const char* s3="", const char* s4="")
103  {return FindMessage(s1,s2,s3,s4,messCollection[1]);}
104  virtual messVec* FindInfoList(const char* s1, const char* s2="",
105  const char* s3="", const char* s4="")
106  {return FindMessageList(s1,s2,s3,s4,messCollection[1]);}
107 
108 // Warning Messages:
109  virtual std::ostringstream& Warning(const char* mess="", const char* opt="E",const char *sourceFileName=0, int lineNumber=-1)
110  { return Message(mess, "W", opt,sourceFileName,lineNumber);}
111  virtual int PrintWarnings() {return PrintList(messCollection[2]); }
112  virtual const messVec* GetWarnings() {return (messCollection[2]);}
113  virtual StMessage* FindWarning(const char* s1, const char* s2="",
114  const char* s3="", const char* s4="")
115  {return FindMessage(s1,s2,s3,s4,messCollection[2]);}
116  virtual messVec* FindWarningList(const char* s1, const char* s2="",
117  const char* s3="", const char* s4="")
118  {return FindMessageList(s1,s2,s3,s4,messCollection[2]);}
119 
120 // Error Messages:
121  virtual std::ostringstream& Error(const char* mess="", const char* opt="E",const char *sourceFileName=0, int lineNumber=-1)
122  { return Message(mess, "E", opt,sourceFileName,lineNumber);}
123  virtual int PrintErrors() {return PrintList(messCollection[3]); }
124  virtual const messVec* GetErrors() {return (messCollection[3]);}
125  virtual StMessage* FindError(const char* s1, const char* s2="",
126  const char* s3="", const char* s4="")
127  {return FindMessage(s1,s2,s3,s4,messCollection[3]);}
128  virtual messVec* FindErrorList(const char* s1, const char* s2="",
129  const char* s3="", const char* s4="")
130  {return FindMessageList(s1,s2,s3,s4,messCollection[3]);}
131 
132 // Debug Messages:
133  virtual std::ostringstream& Debug(const char* mess="", const char* opt="OT",const char *sourceFileName=0, int lineNumber=-1)
134  { return Message(mess, "D", opt,sourceFileName,lineNumber);}
135  virtual int PrintDebug() {return PrintList(messCollection[4]); }
136  virtual const messVec* GetDebugs() {return (messCollection[4]);}
137  virtual StMessage* FindDebug(const char* s1, const char* s2="",
138  const char* s3="", const char* s4="")
139  {return FindMessage(s1,s2,s3,s4,messCollection[4]);}
140  virtual messVec* FindDebugList(const char* s1, const char* s2="",
141  const char* s3="", const char* s4="")
142  {return FindMessageList(s1,s2,s3,s4,messCollection[4]);}
143 
144 // QAInfo Messages:
145  virtual std::ostringstream& QAInfo(const char* mess="", const char* opt="OS",const char *sourceFileName=0, int lineNumber=-1)
146  { return Message(mess, "Q", opt,sourceFileName,lineNumber);}
147  virtual int PrintQAInfo() {return PrintList(messCollection[5]); }
148  virtual const messVec* GetQAInfos() {return (messCollection[5]);}
149  virtual StMessage* FindQAInfo(const char* s1, const char* s2="",
150  const char* s3="", const char* s4="")
151  {return FindMessage(s1,s2,s3,s4,messCollection[5]);}
152  virtual messVec* FindQAInfoList(const char* s1, const char* s2="",
153  const char* s3="", const char* s4="")
154  {return FindMessageList(s1,s2,s3,s4,messCollection[5]);}
155 
156 // UCMInfo Messages:
157  virtual std::ostringstream& UCMInfo(const char* mess="", const char* opt="OS",const char *sourceFileName=0, int lineNumber=-1)
158  { return Message(mess, "U", opt,sourceFileName,lineNumber);}
159  virtual int PrintUCMInfo() {return PrintList(messCollection[6]); }
160  virtual const messVec* GetUCMInfos() {return (messCollection[6]);}
161  virtual StMessage* FindUCMInfo(const char* s1, const char* s2="",
162  const char* s3="", const char* s4="")
163  {return FindMessage(s1,s2,s3,s4,messCollection[6]);}
164  virtual messVec* FindUCMInfoList(const char* s1, const char* s2="",
165  const char* s3="", const char* s4="")
166  {return FindMessageList(s1,s2,s3,s4,messCollection[6]);}
167 
168 // "As is" Messages:
169  virtual std::ostringstream& out(const char* mess="")
170  {return Message(mess,"I","OP-");}
171  virtual std::ostringstream& err(const char* mess="")
172  {return Message(mess,"E","EP-");}
173 
174  virtual void PrintInfo();
175 // Fatal Messages:
176  virtual std::ostringstream& Fatal(const char* mess="", const char* opt="E",const char *sourceFileName=0, int lineNumber=-1)
177  { return Message(mess, "E", opt,sourceFileName,lineNumber);}
178 
179 };
180 
181 
182 #endif
183 
184 // $Id: StMessageManager.h,v 1.29 2009/06/22 22:36:01 fine Exp $
185 // $Log: StMessageManager.h,v $
186 // Revision 1.29 2009/06/22 22:36:01 fine
187 // Add the new dedicated UCM logger, It should force the recompilation of many STAR packages
188 //
189 // Revision 1.28 2008/05/15 23:40:24 fine
190 // Change the abstarct class return type to separate the different STAR streams
191 //
192 // Revision 1.27 2007/01/25 06:28:06 fine
193 // connect Logger and Maker debug levels
194 //
195 // Revision 1.26 2007/01/25 06:11:37 fine
196 // Add the new StMess abstarct interfaces GetLevel/SetLevel
197 //
198 // Revision 1.25 2004/04/15 21:28:02 fine
199 // Remove the redundant StMessageManager RootCint dictionary. User shoudl use the base StMessMgr class anyway
200 //
201 // Revision 1.24 2004/04/15 16:03:38 fine
202 // move StMessMgr class to St_base and change the interface
203 //
204 // Revision 1.22 2004/01/28 00:09:14 genevb
205 // Messages (except Debug) default to no time-date stamp
206 //
207 // Revision 1.21 2003/09/25 21:19:22 genevb
208 // Some new cout-like functions and friend functions, some doxygen-ization
209 //
210 // Revision 1.20 2001/05/14 20:53:20 genevb
211 // Add features to examine memory use, switch from TDatime to time_t
212 //
213 // Revision 1.19 2000/06/07 00:05:36 genevb
214 // Added FixOn(), enforcing no limits on a specific message type/string
215 //
216 // Revision 1.18 2000/05/23 19:03:38 genevb
217 // Correct interface for MessageOut(), update docs
218 //
219 // Revision 1.17 2000/03/30 16:12:55 genevb
220 // Add NoLimits() capability to turn off message limiting.
221 //
222 // Revision 1.16 2000/02/29 16:41:57 genevb
223 // Fortran-compliant interface
224 //
225 // Revision 1.15 2000/01/25 16:01:29 fisyak
226 // Devorce with StAF
227 //
228 // Revision 1.14 2000/01/05 19:53:46 genevb
229 // Fixed CC5 warnings, and several other small improvements under the hood
230 //
231 // Revision 1.13 1999/08/10 22:07:35 genevb
232 // Added QAInfo message types
233 //
234 // Revision 1.12 1999/07/23 16:56:40 genevb
235 // Fix extern C prototypes, default options for omitted types, Linux bug with multi-line messages
236 //
237 // Revision 1.11 1999/07/17 00:23:24 genevb
238 // Fixed bug when option fields are empty in FORTRAN, and let type limits be set before types are even added
239 //
240 // Revision 1.10 1999/07/08 22:58:18 genevb
241 // Created an abstract interface with StMessMgr.h hiding template implementation from others, a few other small fixes
242 //
243 // Revision 1.9 1999/07/01 23:32:53 genevb
244 // Change default message typing
245 //
246 // Revision 1.8 1999/07/01 01:24:46 genevb
247 // Fixed FORTRAN character string bug on linux, removed a memory leak from Summary()
248 //
249 // Revision 1.7 1999/06/29 23:32:42 genevb
250 // Handle multi-line calls to fortran routines better
251 //
252 // Revision 1.5 1999/06/28 15:42:13 genevb
253 // Added Debug message class
254 //
255 // Revision 1.4 1999/06/28 02:40:56 genevb
256 // Additional backward compatibilit with MSG (msg_enable, msg_enabled, msg_disable
257 //
258 // Revision 1.3 1999/06/24 23:23:59 genevb
259 // Added message call for compatibility with old fortran code
260 //
261 // Revision 1.2 1999/06/24 16:30:43 genevb
262 // Fixed some memory leaks
263 //
264 // Revision 1.1 1999/06/23 15:17:53 genevb
265 // Introduction of StMessageManager
266 //
267 //
Definition: FJcore.h:367