0031939: Coding - correction of spelling errors in comments
[occt.git] / src / Interface / Interface_Protocol.hxx
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_Protocol_HeaderFile
18 #define _Interface_Protocol_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_Type.hxx>
22
23 #include <Standard_Transient.hxx>
24 #include <Standard_Integer.hxx>
25 #include <Standard_Boolean.hxx>
26 #include <Standard_Type.hxx>
27 class Interface_InterfaceError;
28 class Standard_Transient;
29 class Interface_Graph;
30 class Interface_Check;
31 class Interface_InterfaceModel;
32
33
34 class Interface_Protocol;
35 DEFINE_STANDARD_HANDLE(Interface_Protocol, Standard_Transient)
36
37 //! General description of Interface Protocols. A Protocol defines
38 //! a set of Entity types. This class provides also the notion of
39 //! Active Protocol, as a working context, defined once then
40 //! exploited by various Tools and Libraries.
41 //!
42 //! It also gives control of type definitions. By default, types
43 //! are provided by CDL, but specific implementations, or topics
44 //! like multi-typing, may involve another way
45 class Interface_Protocol : public Standard_Transient
46 {
47
48 public:
49
50   
51   //! Returns the Active Protocol, if defined (else, returns a
52   //! Null Handle, which means "no defined active protocol")
53   Standard_EXPORT static Handle(Interface_Protocol) Active();
54   
55   //! Sets a given Protocol to be the Active one (for the users of
56   //! Active, see just above). Applies to every sub-type of Protocol
57   Standard_EXPORT static void SetActive (const Handle(Interface_Protocol)& aprotocol);
58   
59   //! Erases the Active Protocol (hence it becomes undefined)
60   Standard_EXPORT static void ClearActive();
61   
62   //! Returns count of Protocol used as Resources (level one)
63   Standard_EXPORT virtual Standard_Integer NbResources() const = 0;
64   
65   //! Returns a Resource, given its rank (between 1 and NbResources)
66   Standard_EXPORT virtual Handle(Interface_Protocol) Resource (const Standard_Integer num) const = 0;
67   
68   //! Returns a unique positive CaseNumber for each Recognized
69   //! Object. By default, recognition is based on Type(1)
70   //! By default, calls the following one which is deferred.
71   Standard_EXPORT virtual Standard_Integer CaseNumber (const Handle(Standard_Transient)& obj) const;
72   
73   //! Returns True if type of <obj> is that defined from CDL
74   //! This is the default but it may change according implementation
75   Standard_EXPORT virtual Standard_Boolean IsDynamicType (const Handle(Standard_Transient)& obj) const;
76   
77   //! Returns the count of DISTINCT types under which an entity may
78   //! be processed. Each one is candidate to be recognized by
79   //! TypeNumber, <obj> is then processed according it
80   //! By default, returns 1 (the DynamicType)
81   Standard_EXPORT virtual Standard_Integer NbTypes (const Handle(Standard_Transient)& obj) const;
82   
83   //! Returns a type under which <obj> can be recognized and
84   //! processed, according its rank in its definition list (see
85   //! NbTypes).
86   //! By default, returns DynamicType
87   Standard_EXPORT Handle(Standard_Type) Type (const Handle(Standard_Transient)& obj, const Standard_Integer nt = 1) const;
88   
89   //! Returns a unique positive CaseNumber for each Recognized Type,
90   //! Returns Zero for "<type> not recognized"
91   Standard_EXPORT virtual Standard_Integer TypeNumber (const Handle(Standard_Type)& atype) const = 0;
92   
93   //! Evaluates a Global Check for a model (with its Graph)
94   //! Returns True when done, False if data in model do not apply
95   //!
96   //! Very specific of each norm, i.e. of each protocol : the
97   //! uppest level Protocol assumes it, it can call GlobalCheck of
98   //! its resources only if it is necessary
99   //!
100   //! Default does nothing, can be redefined
101   Standard_EXPORT virtual Standard_Boolean GlobalCheck (const Interface_Graph& G, Handle(Interface_Check)& ach) const;
102   
103   //! Creates an empty Model of the considered Norm
104   Standard_EXPORT virtual Handle(Interface_InterfaceModel) NewModel() const = 0;
105   
106   //! Returns True if <model> is a Model of the considered Norm
107   Standard_EXPORT virtual Standard_Boolean IsSuitableModel (const Handle(Interface_InterfaceModel)& model) const = 0;
108   
109   //! Creates a new Unknown Entity for the considered Norm
110   Standard_EXPORT virtual Handle(Standard_Transient) UnknownEntity() const = 0;
111   
112   //! Returns True if <ent> is an Unknown Entity for the Norm, i.e.
113   //! same Type as them created by method UnknownEntity
114   //! (for an Entity out of the Norm, answer can be unpredicable)
115   Standard_EXPORT virtual Standard_Boolean IsUnknownEntity (const Handle(Standard_Transient)& ent) const = 0;
116
117
118
119
120   DEFINE_STANDARD_RTTIEXT(Interface_Protocol,Standard_Transient)
121
122 protected:
123
124
125
126
127 private:
128
129
130
131
132 };
133
134
135
136
137
138
139
140 #endif // _Interface_Protocol_HeaderFile