1 // Created on: 1993-02-02
2 // Created by: Christian CAILLET
3 // Copyright (c) 1993-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_CheckTool_HeaderFile
18 #define _Interface_CheckTool_HeaderFile
19 
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
23 
24 #include <Interface_ShareTool.hxx>
25 #include <Standard_Integer.hxx>
26 #include <Standard_Boolean.hxx>
27 class Interface_GTool;
28 class Interface_CheckFailure;
29 class Interface_InterfaceModel;
30 class Interface_Protocol;
31 class Interface_Graph;
32 class Interface_HGraph;
33 class Standard_Transient;
34 class Interface_ShareTool;
35 class Interface_Check;
36 class Message_Messenger;
37 class Interface_CheckIterator;
38 class Interface_EntityIterator;
39 
40 
41 //! Performs Checks on Entities, using General Service Library and
42 //! Modules to work. Works on one Entity or on a complete Model
43 class Interface_CheckTool
44 {
45 public:
46 
47   DEFINE_STANDARD_ALLOC
48 
49 
50   //! Creates a CheckTool, by calling the General Service Library
51   //! and Modules, selected through a Protocol, to work on a Model
52   //! Moreover, Protocol recognizes Unknown Entities
53   Standard_EXPORT Interface_CheckTool(const Handle(Interface_InterfaceModel)& model, const Handle(Interface_Protocol)& protocol);
54 
55   //! Creates a CheckTool, by calling the General Service Library
56   //! and Modules, selected through a Protocol, to work on a Model
57   //! Protocol and so on are taken from the Model (its GTool)
58   Standard_EXPORT Interface_CheckTool(const Handle(Interface_InterfaceModel)& model);
59 
60   //! Creates a CheckTool from a Graph. The Graph contains a Model
61   //! which designates a Protocol: they are used to create ShareTool
62   Standard_EXPORT Interface_CheckTool(const Interface_Graph& graph);
63 
64   Standard_EXPORT Interface_CheckTool(const Handle(Interface_HGraph)& hgraph);
65 
66   //! Fills as required a Check with the Error and Warning messages
67   //! produced by Checking a given Entity.
68   //! For an Erroneous or Corrected Entity : Check build at Analyse
69   //! time; else, Check computed for Entity (Verify integrity), can
70   //! use a Graph as required to control context
71   Standard_EXPORT void FillCheck (const Handle(Standard_Transient)& ent, const Interface_ShareTool& sh, Handle(Interface_Check)& ach);
72 
73   //! Utility method which Prints the content of a Check
74   Standard_EXPORT void Print (const Handle(Interface_Check)& ach, const Handle(Message_Messenger)& S) const;
75 
76   //! Simply Lists all the Checks and the Content (messages) and the
77   //! Entity, if there is, of each Check
78   //! (if all Checks are OK, nothing is Printed)
79   Standard_EXPORT void Print (const Interface_CheckIterator& list, const Handle(Message_Messenger)& S) const;
80 
81   //! Returns the Check associated to an Entity identified by
82   //! its Number in a Model.
83   Standard_EXPORT Handle(Interface_Check) Check (const Standard_Integer num);
84 
85   //! Checks if any Error has been detected (CheckList not empty)
86   //! Returns normally if none, raises exception if some exists.
87   //! It reuses the last computations from other checking methods,
88   //! unless the argument <resest> is given True
89   Standard_EXPORT void CheckSuccess (const Standard_Boolean reset = Standard_False);
90 
91   //! Returns list of all "remarkable" informations, which include :
92   //! - GlobalCheck, if not empty
93   //! - Error Checks, for all Errors (Verify + Analyse)
94   //! - also Corrected Entities
95   //! - and Unknown Entities : for those, each Unknown Entity is
96   //! associated to an empty Check (it is neither an Error nor a
97   //! Correction, but a remarkable information)
98   Standard_EXPORT Interface_CheckIterator CompleteCheckList();
99 
100   //! Returns list of all Errors detected
101   //! Note that presence of Unknown Entities is not an error
102   //! Cumulates : GlobalCheck if error +
103   //! AnalyseCheckList + VerifyCheckList
104   Standard_EXPORT Interface_CheckIterator CheckList();
105 
106   //! Returns list of errors dectected at Analyse time (syntactic)
107   //! (note that GlobalCheck is not in this list)
108   Standard_EXPORT Interface_CheckIterator AnalyseCheckList();
109 
110   //! Returns list of integrity constraints errors (semantic)
111   //! (note that GlobalCheck is not in this list)
112   Standard_EXPORT Interface_CheckIterator VerifyCheckList();
113 
114   //! Returns list of Corrections (includes GlobalCheck if corrected)
115   Standard_EXPORT Interface_CheckIterator WarningCheckList();
116 
117   //! Returns list of Unknown Entities
118   //! Note that Error and Erroneous Entities are not considered
119   //! as Unknown
120   Standard_EXPORT Interface_EntityIterator UnknownEntities();
121 
122 
123 
124 
125 protected:
126 
127 
128 
129 
130 
131 private:
132 
133 
134 
135   Handle(Interface_GTool) thegtool;
136   Interface_ShareTool theshare;
137   Standard_Integer thestat;
138 
139 
140 };
141 
142 
143 
144 
145 
146 
147 
148 #endif // _Interface_CheckTool_HeaderFile
149