// This file is generated by WOK (CPPExt). // Please do not edit this file; modify original file instead. // The copyright and license terms as defined for the original file apply to // this header file considered to be the "object code" form of the original source. #ifndef _MoniTool_CaseData_HeaderFile #define _MoniTool_CaseData_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_DefineHandle_HeaderFile #include #endif #ifndef _Handle_MoniTool_CaseData_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _TCollection_AsciiString_HeaderFile #include #endif #ifndef _TColStd_SequenceOfTransient_HeaderFile #include #endif #ifndef _TColStd_SequenceOfInteger_HeaderFile #include #endif #ifndef _TColStd_SequenceOfAsciiString_HeaderFile #include #endif #ifndef _MMgt_TShared_HeaderFile #include #endif #ifndef _Standard_CString_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Handle_Standard_Transient_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Handle_Standard_Type_HeaderFile #include #endif class Standard_Transient; class TopoDS_Shape; class gp_XYZ; class gp_XY; class Standard_Type; class TCollection_AsciiString; class Message_Msg; //! This class is intended to record data attached to a case to be
//! exploited.
//! Cases can be :
//! * internal, i.e. for immediate debug
//! for instance, on an abnormal exception, fill a CaseData
//! in a DB (see class DB) then look at its content by XSDRAW
//! * to record abnormal situation, which cause a warning or fail
//! message, for instance during a transfer
//! This will allow, firstly to build a more comprehensive
//! message (with associated data), secondly to help seeing
//! "what happened"
//! * to record data in order to fix a problem
//! If a CASE is well defined and its fix is well known too,
//! recording a CaseData which identifies the CASE will allow
//! to furstherly call the appropriate fix routine
//!
//! A CaseData is defined by
//! * an optional CASE identifier
//! If it is defined, this will allow systematic exploitation
//! such as calling a fix routine
//! * an optional Check Status, Warning or Fail, else it is Info
//! * a NAME : it just allows to identify where this CaseData was
//! created (help to debug)
//! * a LIST OF DATA
//!
//! Each Data has a type (integer, real etc...) and can have a name
//! Hence, each data may be identified by :
//! * its absolute rank (from 1 to NbData)
//! * its name if it has one (exact matching)
//! * else, an interpreted identifier, which gives the type and
//! the rank in the type (for instance, first integer; etc)
//! (See NameRank)
class MoniTool_CaseData : public MMgt_TShared { public: //! Creates a CaseData with a CaseId and a Name
//! (by default not defined)
Standard_EXPORT MoniTool_CaseData(const Standard_CString caseid = "",const Standard_CString name = ""); //! Sets a CaseId
Standard_EXPORT void SetCaseId(const Standard_CString caseid) ; //! Sets a Name
Standard_EXPORT void SetName(const Standard_CString name) ; //! Returns the CaseId
Standard_EXPORT Standard_CString CaseId() const; //! Returns the Name
Standard_EXPORT Standard_CString Name() const; //! Tells if is Check (Warning or Fail), else it is Info
Standard_EXPORT Standard_Boolean IsCheck() const; //! Tells if is Warning
Standard_EXPORT Standard_Boolean IsWarning() const; //! Tells if is Fail
Standard_EXPORT Standard_Boolean IsFail() const; //! Resets Check Status, i.e. sets as Info
Standard_EXPORT void ResetCheck() ; //! Sets as Warning
Standard_EXPORT void SetWarning() ; //! Sets as Fail
Standard_EXPORT void SetFail() ; //! Sets the next Add... not to add but to change the data item
//! designated by its name.
//! If next Add... is not called with a name, SetChange is ignored
//! Reset by next Add... , whatever is correct or not
Standard_EXPORT void SetChange() ; //! Sets the next Add... not to add but to replace the data item
//! , if is between 1 and NbData.
//! Reset by next Add... , whatever is correct or not
Standard_EXPORT void SetReplace(const Standard_Integer num) ; //! Unitary adding a data; rather internal
Standard_EXPORT void AddData(const Handle(Standard_Transient)& val,const Standard_Integer kind,const Standard_CString name = "") ; //! Adds the currently caught exception
Standard_EXPORT void AddRaised(const Standard_CString name = "") ; //! Adds a Shape (recorded as a HShape)
Standard_EXPORT void AddShape(const TopoDS_Shape& sh,const Standard_CString name = "") ; //! Adds a XYZ
Standard_EXPORT void AddXYZ(const gp_XYZ& aXYZ,const Standard_CString name = "") ; //! Adds a XY
Standard_EXPORT void AddXY(const gp_XY& aXY,const Standard_CString name = "") ; //! Adds a Real
Standard_EXPORT void AddReal(const Standard_Real val,const Standard_CString name = "") ; //! Adds two reals (for instance, two parameters)
Standard_EXPORT void AddReals(const Standard_Real v1,const Standard_Real v2,const Standard_CString name = "") ; //! Adds the CPU time between lastCPU and now
//! if is given, the CPU amount is curCPU-lastCPU
//! else it is currently measured CPU - lastCPU
//! lastCPU has been read by call to GetCPU
//! See GetCPU to get amount, and LargeCPU to test large amount
Standard_EXPORT void AddCPU(const Standard_Real lastCPU,const Standard_Real curCPU = 0,const Standard_CString name = "") ; //! Returns the current amount of CPU
//! This allows to laterly test and record CPU amount
//! Its value has to be given to LargeCPU and AddCPU
Standard_EXPORT Standard_Real GetCPU() const; //! Tells if a CPU time amount is large
//! gives the amount over which an amount is large
//! gives the start CPU amount
//! if is given, the tested CPU amount is curCPU-lastCPU
//! else it is currently measured CPU - lastCPU
Standard_EXPORT Standard_Boolean LargeCPU(const Standard_Real maxCPU,const Standard_Real lastCPU,const Standard_Real curCPU = 0) const; //! Adds a Geometric as a Transient (Curve, Surface ...)
Standard_EXPORT void AddGeom(const Handle(Standard_Transient)& geom,const Standard_CString name = "") ; //! Adds a Transient, as an Entity from an InterfaceModel for
//! instance : it will then be printed with the help of a DBPE
Standard_EXPORT void AddEntity(const Handle(Standard_Transient)& ent,const Standard_CString name = "") ; //! Adds a Text (as HAsciiString)
Standard_EXPORT void AddText(const Standard_CString text,const Standard_CString name = "") ; //! Adds an Integer
Standard_EXPORT void AddInteger(const Standard_Integer val,const Standard_CString name = "") ; //! Adds a Transient, with no more meaning
Standard_EXPORT void AddAny(const Handle(Standard_Transient)& val,const Standard_CString name = "") ; //! Removes a Data from its rank. Does nothing if out of range
Standard_EXPORT void RemoveData(const Standard_Integer num) ; //! Returns the count of data recorded to a set
Standard_EXPORT Standard_Integer NbData() const; //! Returns a data item (n0 in the set )
Standard_EXPORT Handle_Standard_Transient Data(const Standard_Integer nd) const; //! Returns a data item, under control of a Type
//! If the data item is kind of this type, it is returned in
//! and the returned value is True
//! Else, is unchanged and the returned value is False
Standard_EXPORT Standard_Boolean GetData(const Standard_Integer nd,const Handle(Standard_Type)& type,Handle(Standard_Transient)& val) const; //! Returns the kind of a data :
//! KIND TYPE MEANING
//! 0 ANY any (not one of the followings)
//! 1 EX raised exception
//! 2 EN entity
//! 3 G geom
//! 4 SH shape
//! 5 XYZ XYZ
//! 6 XY or UV XY
//! 7 RR 2 reals
//! 8 R 1 real
//! 9 CPU CPU (1 real)
//! 10 T text
//! 11 I integer
//!
//! For NameNum, these codes for TYPE must be given exact
//! i.e. SH for a Shape, not S nor SHAPE nor SOLID etc
Standard_EXPORT Standard_Integer Kind(const Standard_Integer nd) const; //! Returns the name of a data. If it has no name, the string is
//! empty (length = 0)
Standard_EXPORT const TCollection_AsciiString& Name(const Standard_Integer nd) const; //! Returns the first suitable data rank for a given name
//! Exact maching (exact case, no completion) is required
//! Firstly checks the recorded names
//! If not found, considers the name as follows :
//! Name = "TYPE" : search for the first item with this TYPE
//! Name = "TYPE:nn" : search for the nn.th item with this TYPE
//! See allowed values in method Kind
Standard_EXPORT Standard_Integer NameNum(const Standard_CString name) const; //! Returns a data as a shape, Null if not a shape
Standard_EXPORT TopoDS_Shape Shape(const Standard_Integer nd) const; //! Returns a data as a XYZ (i.e. Geom_CartesianPoint)
//! Returns False if not the good type
Standard_EXPORT Standard_Boolean XYZ(const Standard_Integer nd,gp_XYZ& val) const; //! Returns a data as a XY (i.e. Geom2d_CartesianPoint)
//! Returns False if not the good type
Standard_EXPORT Standard_Boolean XY(const Standard_Integer nd,gp_XY& val) const; //! Returns a couple of reals (stored in Geom2d_CartesianPoint)
Standard_EXPORT Standard_Boolean Reals(const Standard_Integer nd,Standard_Real& v1,Standard_Real& v2) const; //! Returns a real or CPU amount (stored in Geom2d_CartesianPoint)
//! (allows an Integer converted to a Real)
Standard_EXPORT Standard_Boolean Real(const Standard_Integer nd,Standard_Real& val) const; //! Returns a text (stored in TCollection_HAsciiString)
Standard_EXPORT Standard_Boolean Text(const Standard_Integer nd,Standard_CString& text) const; //! Returns an Integer
Standard_EXPORT Standard_Boolean Integer(const Standard_Integer nd,Standard_Integer& val) const; //! Returns a Msg from a CaseData : it is build from DefMsg, which
//! gives the message code plus the designation of items of the
//! CaseData to be added to the Msg
//! Empty if no message attached
//!
//! Remains to be implemented
Standard_EXPORT Message_Msg Msg() const; //! Sets a Code to give a Warning
Standard_EXPORT static void SetDefWarning(const Standard_CString acode) ; //! Sets a Code to give a Fail
Standard_EXPORT static void SetDefFail(const Standard_CString acode) ; //! Returns Check Status for a Code : 0 non/info (default),
//! 1 warning, 2 fail
//!
//! Remark : DefCheck is used to set the check status of a
//! CaseData when it is attached to a case code, it can be changed
//! later (by SetFail, SetWarning, ResetCheck)
Standard_EXPORT static Standard_Integer DefCheck(const Standard_CString acode) ; //! Attaches a message definition to a case code
//! This definition includes the message code plus designation of
//! items of the CaseData to be added to the message (this part
//! not yet implemented)
Standard_EXPORT static void SetDefMsg(const Standard_CString casecode,const Standard_CString mesdef) ; //! Returns the message definition for a case code
//! Empty if no message attached
Standard_EXPORT static Standard_CString DefMsg(const Standard_CString casecode) ; DEFINE_STANDARD_RTTI(MoniTool_CaseData) protected: private: Standard_Integer thecheck; Standard_Integer thesubst; TCollection_AsciiString thecase; TCollection_AsciiString thename; TColStd_SequenceOfTransient thedata; TColStd_SequenceOfInteger thekind; TColStd_SequenceOfAsciiString thednam; }; // other Inline functions and methods (like "C++: function call" methods) #endif