0022627: Change OCCT memory management defaults
[occt.git] / src / StepToTopoDS / StepToTopoDS_Tool.cxx
1 // File:        StepToTopoDS_Tool.cxx
2 // Created:     Tue Jan  3 11:34:47 1995
3 // Author:      Frederic MAUPAS
4 //              <fma@stylox>
5
6 //  Complement : CKY, alimentation du TransientProcess
7 //    (Bind general;  BindVertex ?)
8
9 #include <StepToTopoDS_Tool.ixx>
10 #include <TransferBRep.hxx>
11
12 // ============================================================================
13 // Method  : StepToTopoDS_Tool::StepToTopoDS_Tool
14 // Purpose : Empty Constructor
15 // ============================================================================
16
17 StepToTopoDS_Tool::StepToTopoDS_Tool() {}
18
19 // ============================================================================
20 // Method  : StepToTopoDS_Tool::StepToTopoDS_Tool
21 // Purpose : Constructor with a Map and a TransientProcess
22 // ============================================================================
23
24 StepToTopoDS_Tool::StepToTopoDS_Tool(const StepToTopoDS_DataMapOfTRI& Map, 
25                                    const Handle(Transfer_TransientProcess)& TP)
26 {
27   Init(Map, TP);
28 }
29
30 // ============================================================================
31 // Method  : Init
32 // Purpose : Init with a Map
33 // ============================================================================
34
35 void StepToTopoDS_Tool::Init(const StepToTopoDS_DataMapOfTRI& Map, 
36                             const Handle(Transfer_TransientProcess)& TP)
37
38   myComputePC = Standard_False;
39
40   StepToTopoDS_PointVertexMap aVertexMap;
41   StepToTopoDS_PointEdgeMap   aEdgeMap;
42   
43   myDataMap   = Map;
44   myVertexMap = aVertexMap;
45   myEdgeMap   = aEdgeMap;
46   myTransProc = TP;
47
48   myNbC0Surf = myNbC1Surf = myNbC2Surf = 0;
49   myNbC0Cur2 = myNbC1Cur2 = myNbC2Cur2 = 0;
50   myNbC0Cur3 = myNbC1Cur3 = myNbC2Cur3 = 0;
51
52
53 }
54
55 // ============================================================================
56 // Method  : StepToTopoDS_Tool::IsBound
57 // Purpose : Indicates weither a TRI is bound or not in the Map
58 // ============================================================================
59
60 Standard_Boolean StepToTopoDS_Tool::IsBound(const Handle(StepShape_TopologicalRepresentationItem)& TRI)
61 {
62   return myDataMap.IsBound(TRI);
63 }
64
65 // ============================================================================
66 // Method  : StepToTopoDS_Tool::Bind
67 // Purpose : Binds a TRI with a Shape in the Map
68 // ============================================================================
69
70 void StepToTopoDS_Tool::Bind(const Handle(StepShape_TopologicalRepresentationItem)& TRI, const TopoDS_Shape& S)
71 {
72   myDataMap.Bind(TRI, S);
73   TransferBRep::SetShapeResult (myTransProc,TRI,S);
74 }
75
76 // ============================================================================
77 // Method  : StepToTopoDS_Tool::Find
78 // Purpose : Returns the Shape corresponding to the bounded TRI
79 // ============================================================================
80
81 const TopoDS_Shape& StepToTopoDS_Tool::Find(const Handle(StepShape_TopologicalRepresentationItem)& TRI)
82 {
83   return myDataMap.Find(TRI);
84 }
85
86
87 // ============================================================================
88 // Method  : StepToTopoDS_Tool::ClearEdgeMap
89 // Purpose : 
90 // ============================================================================
91
92 void StepToTopoDS_Tool::ClearEdgeMap()
93 {
94   myEdgeMap.Clear();
95 }
96
97 // ============================================================================
98 // Method  : StepToTopoDS_Tool::IsEdgeBound
99 // Purpose : 
100 // ============================================================================
101
102 Standard_Boolean StepToTopoDS_Tool::IsEdgeBound(const StepToTopoDS_PointPair& PP)
103 {
104   return myEdgeMap.IsBound(PP);
105 }
106
107 // ============================================================================
108 // Method  : StepToTopoDS_Tool_BindEdge
109 // Purpose : 
110 // ============================================================================
111
112 void StepToTopoDS_Tool::BindEdge(const StepToTopoDS_PointPair& PP, const TopoDS_Edge& E)
113 {
114   myEdgeMap.Bind(PP, E);
115 }
116
117 // ============================================================================
118 // Method  : StepToTopoDS_Tool::FindEdge
119 // Purpose : 
120 // ============================================================================
121
122 const TopoDS_Edge& StepToTopoDS_Tool::FindEdge(const StepToTopoDS_PointPair& PP)
123 {
124   return myEdgeMap.Find(PP);
125 }
126
127 // ============================================================================
128 // Method  : StepToTopoDS_Tool::ClearVertexMap
129 // Purpose : 
130 // ============================================================================
131
132 void StepToTopoDS_Tool::ClearVertexMap()
133 {
134   myVertexMap.Clear();
135 }
136
137 // ============================================================================
138 // Method  : StepToTopoDS_Tool::IsVertexBound
139 // Purpose : 
140 // ============================================================================
141
142 Standard_Boolean StepToTopoDS_Tool::IsVertexBound(const Handle(StepGeom_CartesianPoint)& PG)
143 {
144   return myVertexMap.IsBound(PG);
145 }
146
147 // ============================================================================
148 // Method  : StepToTopoDS_Tool::BindVertex
149 // Purpose : 
150 // ============================================================================
151
152 void StepToTopoDS_Tool::BindVertex(const Handle(StepGeom_CartesianPoint)& P, const TopoDS_Vertex& V)
153 {
154   myVertexMap.Bind(P, V);
155 #ifdef DEBUG
156   TransferBRep::SetShapeResult (myTransProc,P,V);
157 #endif
158 }
159
160 // ============================================================================
161 // Method  : StepToTopoDS_Tool::FindVertex
162 // Purpose : 
163 // ============================================================================
164
165 const TopoDS_Vertex& StepToTopoDS_Tool::FindVertex(const Handle(StepGeom_CartesianPoint)& P)
166 {
167   return myVertexMap.Find(P);
168 }
169
170 // ============================================================================
171 // Method  : ComputePCurve
172 // Purpose : 
173 // ============================================================================
174
175 void StepToTopoDS_Tool::ComputePCurve(const Standard_Boolean B)
176 {
177   myComputePC = B;
178 }
179
180 // ============================================================================
181 // Method  : ComputePCurve
182 // Purpose : 
183 // ============================================================================
184
185 Standard_Boolean StepToTopoDS_Tool::ComputePCurve() const
186 {
187   return myComputePC;
188 }
189
190 // ============================================================================
191 // Method  : StepToTopoDS_Tool::TransientProcess
192 // Purpose : Returns the TransientProcess
193 // ============================================================================
194
195 Handle(Transfer_TransientProcess) StepToTopoDS_Tool::TransientProcess() const
196 {
197   return myTransProc;
198 }
199
200
201 //===========
202 // AddStatistics
203 //===========
204
205 void  StepToTopoDS_Tool::AddContinuity (const Handle(Geom_Surface)& GeomSurf)
206 {
207   switch(GeomSurf->Continuity())
208     {
209     case GeomAbs_C0:    myNbC0Surf ++;  break;
210     case GeomAbs_C1:    myNbC1Surf ++;  break;
211     default:            myNbC2Surf ++;
212     }
213 }
214
215 void  StepToTopoDS_Tool::AddContinuity (const Handle(Geom_Curve)&   GeomCurve)
216 {
217   switch(GeomCurve->Continuity())
218     {
219     case GeomAbs_C0:    myNbC0Cur3 ++;  break;
220     case GeomAbs_C1:    myNbC1Cur3 ++;  break;
221     default:            myNbC2Cur3 ++;
222     }
223 }
224
225 void  StepToTopoDS_Tool::AddContinuity (const Handle(Geom2d_Curve)& GeomCur2d)
226 {
227   switch(GeomCur2d->Continuity())
228     {
229     case GeomAbs_C0:    myNbC0Cur2 ++;  break;
230     case GeomAbs_C1:    myNbC1Cur2 ++;  break;
231     default:            myNbC2Cur2 ++;
232     }
233 }
234
235 //===========
236 // Statistics
237 //===========
238
239 Standard_Integer StepToTopoDS_Tool::C0Surf() const
240 {
241   return myNbC0Surf;
242 }
243
244
245 Standard_Integer StepToTopoDS_Tool::C1Surf() const
246 {
247   return myNbC1Surf;
248 }
249
250
251 Standard_Integer StepToTopoDS_Tool::C2Surf() const
252 {
253   return myNbC2Surf;
254 }
255
256
257 //===========
258 // Statistics
259 //===========
260
261 Standard_Integer StepToTopoDS_Tool::C0Cur2() const
262 {
263   return myNbC0Cur2;
264 }
265
266
267 Standard_Integer StepToTopoDS_Tool::C1Cur2() const
268 {
269   return myNbC1Cur2;
270 }
271
272
273 Standard_Integer StepToTopoDS_Tool::C2Cur2() const
274 {
275   return myNbC2Cur2;
276 }
277
278
279 //===========
280 // Statistics
281 //===========
282
283 Standard_Integer StepToTopoDS_Tool::C0Cur3() const
284 {
285   return myNbC0Cur3;
286 }
287
288
289 Standard_Integer StepToTopoDS_Tool::C1Cur3() const
290 {
291   return myNbC1Cur3;
292 }
293
294
295 Standard_Integer StepToTopoDS_Tool::C2Cur3() const
296 {
297   return myNbC2Cur3;
298 }
299