0031501: Foundation Classes, Message_Printer - remove theToPutEndl argument -- prepar...
[occt.git] / src / Interface / Interface_Check.hxx
1 // Created on: 1992-02-03
2 // Created by: Christian CAILLET
3 // Copyright (c) 1992-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #ifndef _Interface_Check_HeaderFile
18 #define _Interface_Check_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_Type.hxx>
22
23 #include <TColStd_HSequenceOfHAsciiString.hxx>
24 #include <Standard_Transient.hxx>
25 #include <Standard_CString.hxx>
26 #include <Standard_Boolean.hxx>
27 #include <Standard_Integer.hxx>
28 #include <Interface_CheckStatus.hxx>
29 class Standard_Transient;
30 class Standard_OutOfRange;
31 class Message_Msg;
32 class TCollection_HAsciiString;
33
34 // resolve name collisions with X11 headers
35 #ifdef Status
36   #undef Status
37 #endif
38
39 class Interface_Check;
40 DEFINE_STANDARD_HANDLE(Interface_Check, Standard_Transient)
41
42 //! Defines a Check, as a list of Fail or Warning Messages under
43 //! a literal form, which can be empty. A Check can also bring an
44 //! Entity, which is the Entity to which the messages apply
45 //! (this Entity may be any Transient Object).
46 //!
47 //! Messages can be stored in two forms : the definitive form
48 //! (the only one by default), and another form, the original
49 //! form, which can be different if it contains values to be
50 //! inserted (integers, reals, strings)
51 //! The original form can be more suitable for some operations
52 //! such as counting messages
53 class Interface_Check : public Standard_Transient
54 {
55
56 public:
57
58   
59   //! Allows definition of a Sequence. Used also for Global Check
60   //! of an InterfaceModel (which stores global messages for file)
61   Standard_EXPORT Interface_Check();
62   
63   //! Defines a Check on an Entity
64   Standard_EXPORT Interface_Check(const Handle(Standard_Transient)& anentity);
65   
66   //! New name for AddFail (Msg)
67   Standard_EXPORT void SendFail (const Message_Msg& amsg);
68   
69   //! Records a new Fail message
70   Standard_EXPORT void AddFail (const Handle(TCollection_HAsciiString)& amess);
71   
72   //! Records a new Fail message under two forms : final,original
73   Standard_EXPORT void AddFail (const Handle(TCollection_HAsciiString)& amess, const Handle(TCollection_HAsciiString)& orig);
74   
75   //! Records a new Fail message given as "error text" directly
76   //! If <orig> is given, a distinct original form is recorded
77   //! else (D), the original form equates <amess>
78   Standard_EXPORT void AddFail (const Standard_CString amess, const Standard_CString orig = "");
79   
80   //! Records a new Fail from the definition of a Msg (Original+Value)
81   Standard_EXPORT void AddFail (const Message_Msg& amsg);
82   
83   //! Returns True if Check brings at least one Fail Message
84   Standard_EXPORT Standard_Boolean HasFailed() const;
85   
86   //! Returns count of recorded Fails
87   Standard_EXPORT Standard_Integer NbFails() const;
88   
89   //! Returns Fail Message as a String
90   //! Final form by default, Original form if <final> is False
91   Standard_EXPORT const Handle(TCollection_HAsciiString)& Fail (const Standard_Integer num, const Standard_Boolean final = Standard_True) const;
92   
93   //! Same as above, but returns a CString (to be printed ...)
94   //! Final form by default, Original form if <final> is False
95   Standard_EXPORT Standard_CString CFail (const Standard_Integer num, const Standard_Boolean final = Standard_True) const;
96   
97   //! Returns the list of Fails, for a frontal-engine logic
98   //! Final forms by default, Original forms if <final> is False
99   //! Can be empty
100   Standard_EXPORT Handle(TColStd_HSequenceOfHAsciiString) Fails (const Standard_Boolean final = Standard_True) const;
101   
102   //! New name for AddWarning
103   Standard_EXPORT void SendWarning (const Message_Msg& amsg);
104   
105   //! Records a new Warning message
106   Standard_EXPORT void AddWarning (const Handle(TCollection_HAsciiString)& amess);
107   
108   //! Records a new Warning message under two forms : final,original
109   Standard_EXPORT void AddWarning (const Handle(TCollection_HAsciiString)& amess, const Handle(TCollection_HAsciiString)& orig);
110   
111   //! Records a Warning message given as "warning message" directly
112   //! If <orig> is given, a distinct original form is recorded
113   //! else (D), the original form equates <amess>
114   Standard_EXPORT void AddWarning (const Standard_CString amess, const Standard_CString orig = "");
115   
116   //! Records a new Warning from the definition of a Msg (Original+Value)
117   Standard_EXPORT void AddWarning (const Message_Msg& amsg);
118   
119   //! Returns True if Check brings at least one Warning Message
120   Standard_EXPORT Standard_Boolean HasWarnings() const;
121   
122   //! Returns count of recorded Warning messages
123   Standard_EXPORT Standard_Integer NbWarnings() const;
124   
125   //! Returns Warning message as a String
126   //! Final form by default, Original form if <final> is False
127   Standard_EXPORT const Handle(TCollection_HAsciiString)& Warning (const Standard_Integer num, const Standard_Boolean final = Standard_True) const;
128   
129   //! Same as above, but returns a CString (to be printed ...)
130   //! Final form by default, Original form if <final> is False
131   Standard_EXPORT Standard_CString CWarning (const Standard_Integer num, const Standard_Boolean final = Standard_True) const;
132   
133   //! Returns the list of Warnings, for a frontal-engine logic
134   //! Final forms by default, Original forms if <final> is False
135   //! Can be empty
136   Standard_EXPORT Handle(TColStd_HSequenceOfHAsciiString) Warnings (const Standard_Boolean final = Standard_True) const;
137   
138   //! Records an information message
139   //! This does not change the status of the Check
140   Standard_EXPORT void SendMsg (const Message_Msg& amsg);
141   
142   //! Returns the count of recorded information messages
143   Standard_EXPORT Standard_Integer NbInfoMsgs() const;
144   
145   //! Returns information message as a String
146   Standard_EXPORT const Handle(TCollection_HAsciiString)& InfoMsg (const Standard_Integer num, const Standard_Boolean final = Standard_True) const;
147   
148   //! Same as above, but returns a CString (to be printed ...)
149   //! Final form by default, Original form if <final> is False
150   Standard_EXPORT Standard_CString CInfoMsg (const Standard_Integer num, const Standard_Boolean final = Standard_True) const;
151   
152   //! Returns the list of Info Msg, for a frontal-engine logic
153   //! Final forms by default, Original forms if <final> is False
154   //! Can be empty
155   Standard_EXPORT Handle(TColStd_HSequenceOfHAsciiString) InfoMsgs (const Standard_Boolean final = Standard_True) const;
156   
157   //! Returns the Check Status : OK, Warning or Fail
158   Standard_EXPORT Interface_CheckStatus Status() const;
159   
160   //! Tells if Check Status complies with a given one
161   //! (i.e. also status for query)
162   Standard_EXPORT Standard_Boolean Complies (const Interface_CheckStatus status) const;
163   
164   //! Tells if a message is brought by a Check, as follows :
165   //! <incl> = 0 : <mess> exactly matches one of the messages
166   //! <incl> < 0 : <mess> is contained by one of the messages
167   //! <incl> > 0 : <mess> contains one of the messages
168   //! For <status> : for CheckWarning and CheckFail, considers only
169   //! resp. Warning or Check messages. for CheckAny, considers all
170   //! other values are ignored (answer will be false)
171   Standard_EXPORT Standard_Boolean Complies (const Handle(TCollection_HAsciiString)& mess, const Standard_Integer incl, const Interface_CheckStatus status) const;
172   
173   //! Returns True if a Check is devoted to an entity; else, it is
174   //! global (for InterfaceModel's storing of global error messages)
175   Standard_EXPORT Standard_Boolean HasEntity() const;
176   
177   //! Returns the entity on which the Check has been defined
178   Standard_EXPORT const Handle(Standard_Transient)& Entity() const;
179   
180   //! Clears a check, in order to receive informations from transfer
181   //! (Messages and Entity)
182   Standard_EXPORT void Clear();
183   
184   //! Clears the Fail Messages (for instance to keep only Warnings)
185   Standard_EXPORT void ClearFails();
186   
187   //! Clears the Warning Messages (for instance to keep only Fails)
188   Standard_EXPORT void ClearWarnings();
189   
190   //! Clears the Info Messages
191   Standard_EXPORT void ClearInfoMsgs();
192   
193   //! Removes the messages which comply with <mess>, as follows :
194   //! <incl> = 0 : <mess> exactly matches one of the messages
195   //! <incl> < 0 : <mess> is contained by one of the messages
196   //! <incl> > 0 : <mess> contains one of the messages
197   //! For <status> : for CheckWarning and CheckFail, considers only
198   //! resp. Warning or Check messages. for CheckAny, considers all
199   //! other values are ignored (nothing is done)
200   //! Returns True if at least one message has been removed, False else
201   Standard_EXPORT Standard_Boolean Remove (const Handle(TCollection_HAsciiString)& mess, const Standard_Integer incl, const Interface_CheckStatus status);
202   
203   //! Mends messages, according <pref> and <num>
204   //! According to <num>, works on the whole list of Fails if = 0(D)
205   //! or only one Fail message, given its rank
206   //! If <pref> is empty, converts Fail(s) to Warning(s)
207   //! Else, does the conversion but prefixes the new Warning(s) but
208   //! <pref> followed by a semi-column
209   //! Some reserved values of <pref> are :
210   //! "FM" : standard prefix "Mended" (can be translated)
211   //! "CF" : clears Fail(s)
212   //! "CW" : clears Warning(s) : here, <num> refers to Warning list
213   //! "CA" : clears all messages : here, <num> is ignored
214   Standard_EXPORT Standard_Boolean Mend (const Standard_CString pref, const Standard_Integer num = 0);
215   
216   //! Receives an entity result of a Transfer
217   Standard_EXPORT void SetEntity (const Handle(Standard_Transient)& anentity);
218   
219   //! same as SetEntity (old form kept for compatibility)
220   //! Warning : Does nothing if Entity field is not yet clear
221   Standard_EXPORT void GetEntity (const Handle(Standard_Transient)& anentity);
222   
223   //! Copies messages stored in another Check, cumulating
224   //! Does not regard other's Entity. Used to cumulate messages
225   Standard_EXPORT void GetMessages (const Handle(Interface_Check)& other);
226   
227   //! Copies messages converted into Warning messages
228   //! If failsonly is true, only Fails are taken, and converted
229   //! else, Warnings are taken too. Does not regard Entity
230   //! Used to keep Fail messages as Warning, after a recovery
231   Standard_EXPORT void GetAsWarning (const Handle(Interface_Check)& other, const Standard_Boolean failsonly);
232   
233   //! Prints the messages of the check to an Messenger
234   //! <level> = 1 : only fails
235   //! <level> = 2 : fails and warnings
236   //! <level> = 3 : all (fails, warnings, info msg)
237   //! <final> : if positive (D) prints final values of messages
238   //! if negative, prints originals
239   //! if null, prints both forms
240   Standard_EXPORT void Print (Standard_OStream& S, const Standard_Integer level, const Standard_Integer final = 1) const;
241   
242   //! Prints the messages of the check to the default trace file
243   //! By default, according to the default standard level
244   //! Else, according level (see method Print)
245   Standard_EXPORT void Trace (const Standard_Integer level = -1, const Standard_Integer final = 1) const;
246
247
248
249
250   DEFINE_STANDARD_RTTIEXT(Interface_Check,Standard_Transient)
251
252 protected:
253
254
255
256
257 private:
258
259
260   Handle(TColStd_HSequenceOfHAsciiString) thefails;
261   Handle(TColStd_HSequenceOfHAsciiString) thefailo;
262   Handle(TColStd_HSequenceOfHAsciiString) thewarns;
263   Handle(TColStd_HSequenceOfHAsciiString) thewarno;
264   Handle(TColStd_HSequenceOfHAsciiString) theinfos;
265   Handle(TColStd_HSequenceOfHAsciiString) theinfoo;
266   Handle(Standard_Transient) theent;
267
268
269 };
270
271
272
273
274
275
276
277 #endif // _Interface_Check_HeaderFile