0031501: Foundation Classes, Message_Printer - remove theToPutEndl argument -- prepar...
[occt.git] / src / IGESGeom / IGESGeom_SpecificModule.cxx
1 // Copyright (c) 1999-2014 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14
15 #include <IGESData_IGESDumper.hxx>
16 #include <IGESData_IGESEntity.hxx>
17 #include <IGESGeom_Boundary.hxx>
18 #include <IGESGeom_BoundedSurface.hxx>
19 #include <IGESGeom_BSplineCurve.hxx>
20 #include <IGESGeom_BSplineSurface.hxx>
21 #include <IGESGeom_CircularArc.hxx>
22 #include <IGESGeom_CompositeCurve.hxx>
23 #include <IGESGeom_ConicArc.hxx>
24 #include <IGESGeom_CopiousData.hxx>
25 #include <IGESGeom_CurveOnSurface.hxx>
26 #include <IGESGeom_Direction.hxx>
27 #include <IGESGeom_Flash.hxx>
28 #include <IGESGeom_Line.hxx>
29 #include <IGESGeom_OffsetCurve.hxx>
30 #include <IGESGeom_OffsetSurface.hxx>
31 #include <IGESGeom_Plane.hxx>
32 #include <IGESGeom_Point.hxx>
33 #include <IGESGeom_RuledSurface.hxx>
34 #include <IGESGeom_SpecificModule.hxx>
35 #include <IGESGeom_SplineCurve.hxx>
36 #include <IGESGeom_SplineSurface.hxx>
37 #include <IGESGeom_SurfaceOfRevolution.hxx>
38 #include <IGESGeom_TabulatedCylinder.hxx>
39 #include <IGESGeom_ToolBoundary.hxx>
40 #include <IGESGeom_ToolBoundedSurface.hxx>
41 #include <IGESGeom_ToolBSplineCurve.hxx>
42 #include <IGESGeom_ToolBSplineSurface.hxx>
43 #include <IGESGeom_ToolCircularArc.hxx>
44 #include <IGESGeom_ToolCompositeCurve.hxx>
45 #include <IGESGeom_ToolConicArc.hxx>
46 #include <IGESGeom_ToolCopiousData.hxx>
47 #include <IGESGeom_ToolCurveOnSurface.hxx>
48 #include <IGESGeom_ToolDirection.hxx>
49 #include <IGESGeom_ToolFlash.hxx>
50 #include <IGESGeom_ToolLine.hxx>
51 #include <IGESGeom_ToolOffsetCurve.hxx>
52 #include <IGESGeom_ToolOffsetSurface.hxx>
53 #include <IGESGeom_ToolPlane.hxx>
54 #include <IGESGeom_ToolPoint.hxx>
55 #include <IGESGeom_ToolRuledSurface.hxx>
56 #include <IGESGeom_ToolSplineCurve.hxx>
57 #include <IGESGeom_ToolSplineSurface.hxx>
58 #include <IGESGeom_ToolSurfaceOfRevolution.hxx>
59 #include <IGESGeom_ToolTabulatedCylinder.hxx>
60 #include <IGESGeom_ToolTransformationMatrix.hxx>
61 #include <IGESGeom_ToolTrimmedSurface.hxx>
62 #include <IGESGeom_TransformationMatrix.hxx>
63 #include <IGESGeom_TrimmedSurface.hxx>
64 #include <Interface_Macros.hxx>
65 #include <Standard_Type.hxx>
66
67 IMPLEMENT_STANDARD_RTTIEXT(IGESGeom_SpecificModule,IGESData_SpecificModule)
68
69 //  Each Module is attached to a Protocol : it must interprete Case Numbers
70 //  (arguments <CN> of various methods) in accordance to values returned by
71 //  the method TypeNumber from this Protocol
72 IGESGeom_SpecificModule::IGESGeom_SpecificModule()    {  }
73
74
75     void  IGESGeom_SpecificModule::OwnDump
76   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
77    const IGESData_IGESDumper& dumper, Standard_OStream& S,
78    const Standard_Integer own) const 
79 {
80   switch (CN) {
81     case  1 : {
82       DeclareAndCast(IGESGeom_BSplineCurve,anent,ent);
83       if (anent.IsNull()) return;
84       IGESGeom_ToolBSplineCurve tool;
85       tool.OwnDump(anent,dumper,S,own);
86     }
87       break;
88     case  2 : {
89       DeclareAndCast(IGESGeom_BSplineSurface,anent,ent);
90       if (anent.IsNull()) return;
91       IGESGeom_ToolBSplineSurface tool;
92       tool.OwnDump(anent,dumper,S,own);
93     }
94       break;
95     case  3 : {
96       DeclareAndCast(IGESGeom_Boundary,anent,ent);
97       if (anent.IsNull()) return;
98       IGESGeom_ToolBoundary tool;
99       tool.OwnDump(anent,dumper,S,own);
100     }
101       break;
102     case  4 : {
103       DeclareAndCast(IGESGeom_BoundedSurface,anent,ent);
104       if (anent.IsNull()) return;
105       IGESGeom_ToolBoundedSurface tool;
106       tool.OwnDump(anent,dumper,S,own);
107     }
108       break;
109     case  5 : {
110       DeclareAndCast(IGESGeom_CircularArc,anent,ent);
111       if (anent.IsNull()) return;
112       IGESGeom_ToolCircularArc tool;
113       tool.OwnDump(anent,dumper,S,own);
114     }
115       break;
116     case  6 : {
117       DeclareAndCast(IGESGeom_CompositeCurve,anent,ent);
118       if (anent.IsNull()) return;
119       IGESGeom_ToolCompositeCurve tool;
120       tool.OwnDump(anent,dumper,S,own);
121     }
122       break;
123     case  7 : {
124       DeclareAndCast(IGESGeom_ConicArc,anent,ent);
125       if (anent.IsNull()) return;
126       IGESGeom_ToolConicArc tool;
127       tool.OwnDump(anent,dumper,S,own);
128     }
129       break;
130     case  8 : {
131       DeclareAndCast(IGESGeom_CopiousData,anent,ent);
132       if (anent.IsNull()) return;
133       IGESGeom_ToolCopiousData tool;
134       tool.OwnDump(anent,dumper,S,own);
135     }
136       break;
137     case  9 : {
138       DeclareAndCast(IGESGeom_CurveOnSurface,anent,ent);
139       if (anent.IsNull()) return;
140       IGESGeom_ToolCurveOnSurface tool;
141       tool.OwnDump(anent,dumper,S,own);
142     }
143       break;
144     case 10 : {
145       DeclareAndCast(IGESGeom_Direction,anent,ent);
146       if (anent.IsNull()) return;
147       IGESGeom_ToolDirection tool;
148       tool.OwnDump(anent,dumper,S,own);
149     }
150       break;
151     case 11 : {
152       DeclareAndCast(IGESGeom_Flash,anent,ent);
153       if (anent.IsNull()) return;
154       IGESGeom_ToolFlash tool;
155       tool.OwnDump(anent,dumper,S,own);
156     }
157       break;
158     case 12 : {
159       DeclareAndCast(IGESGeom_Line,anent,ent);
160       if (anent.IsNull()) return;
161       IGESGeom_ToolLine tool;
162       tool.OwnDump(anent,dumper,S,own);
163     }
164       break;
165     case 13 : {
166       DeclareAndCast(IGESGeom_OffsetCurve,anent,ent);
167       if (anent.IsNull()) return;
168       IGESGeom_ToolOffsetCurve tool;
169       tool.OwnDump(anent,dumper,S,own);
170     }
171       break;
172     case 14 : {
173       DeclareAndCast(IGESGeom_OffsetSurface,anent,ent);
174       if (anent.IsNull()) return;
175       IGESGeom_ToolOffsetSurface tool;
176       tool.OwnDump(anent,dumper,S,own);
177     }
178       break;
179     case 15 : {
180       DeclareAndCast(IGESGeom_Plane,anent,ent);
181       if (anent.IsNull()) return;
182       IGESGeom_ToolPlane tool;
183       tool.OwnDump(anent,dumper,S,own);
184     }
185       break;
186     case 16 : {
187       DeclareAndCast(IGESGeom_Point,anent,ent);
188       if (anent.IsNull()) return;
189       IGESGeom_ToolPoint tool;
190       tool.OwnDump(anent,dumper,S,own);
191     }
192       break;
193     case 17 : {
194       DeclareAndCast(IGESGeom_RuledSurface,anent,ent);
195       if (anent.IsNull()) return;
196       IGESGeom_ToolRuledSurface tool;
197       tool.OwnDump(anent,dumper,S,own);
198     }
199       break;
200     case 18 : {
201       DeclareAndCast(IGESGeom_SplineCurve,anent,ent);
202       if (anent.IsNull()) return;
203       IGESGeom_ToolSplineCurve tool;
204       tool.OwnDump(anent,dumper,S,own);
205     }
206       break;
207     case 19 : {
208       DeclareAndCast(IGESGeom_SplineSurface,anent,ent);
209       if (anent.IsNull()) return;
210       IGESGeom_ToolSplineSurface tool;
211       tool.OwnDump(anent,dumper,S,own);
212     }
213       break;
214     case 20 : {
215       DeclareAndCast(IGESGeom_SurfaceOfRevolution,anent,ent);
216       if (anent.IsNull()) return;
217       IGESGeom_ToolSurfaceOfRevolution tool;
218       tool.OwnDump(anent,dumper,S,own);
219     }
220       break;
221     case 21 : {
222       DeclareAndCast(IGESGeom_TabulatedCylinder,anent,ent);
223       if (anent.IsNull()) return;
224       IGESGeom_ToolTabulatedCylinder tool;
225       tool.OwnDump(anent,dumper,S,own);
226     }
227       break;
228     case 22 : {
229       DeclareAndCast(IGESGeom_TransformationMatrix,anent,ent);
230       if (anent.IsNull()) return;
231       IGESGeom_ToolTransformationMatrix tool;
232       tool.OwnDump(anent,dumper,S,own);
233     }
234       break;
235     case 23 : {
236       DeclareAndCast(IGESGeom_TrimmedSurface,anent,ent);
237       if (anent.IsNull()) return;
238       IGESGeom_ToolTrimmedSurface tool;
239       tool.OwnDump(anent,dumper,S,own);
240     }
241       break;
242     default : break;
243   }
244 }
245
246
247     Standard_Boolean  IGESGeom_SpecificModule::OwnCorrect
248   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent) const
249 {
250 //   Applies only on some types
251   switch (CN) {
252     case  3 : {
253       DeclareAndCast(IGESGeom_Boundary,anent,ent);
254       if (anent.IsNull()) break;
255       IGESGeom_ToolBoundary tool;
256       return tool.OwnCorrect(anent);
257     }
258     case  7 : {
259       DeclareAndCast(IGESGeom_ConicArc,anent,ent);
260       if (anent.IsNull()) break;
261       IGESGeom_ToolConicArc tool;
262       return tool.OwnCorrect(anent);
263     }
264     case  9 : {
265       DeclareAndCast(IGESGeom_Boundary,anent,ent);
266       if (anent.IsNull()) break;
267       IGESGeom_ToolBoundary tool;
268       return tool.OwnCorrect(anent);
269     }
270     case 11 : {
271       DeclareAndCast(IGESGeom_Flash,anent,ent);
272       if (anent.IsNull()) break;
273       IGESGeom_ToolFlash tool;
274       return tool.OwnCorrect(anent);
275     }
276     case 13 : {
277       DeclareAndCast(IGESGeom_OffsetCurve,anent,ent);
278       if (anent.IsNull()) break;
279       IGESGeom_ToolOffsetCurve tool;
280       return tool.OwnCorrect(anent);
281     }
282     case 22 : {
283       DeclareAndCast(IGESGeom_TransformationMatrix,anent,ent);
284       if (anent.IsNull()) break;
285       IGESGeom_ToolTransformationMatrix tool;
286       return tool.OwnCorrect(anent);
287     }
288     default : break;
289   }
290   return Standard_False;
291 }