0029151: GCC 7.1 warnings "this statement may fall through" [-Wimplicit-fallthrough=]
[occt.git] / src / IGESDraw / IGESDraw_GeneralModule.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_DirChecker.hxx>
16 #include <IGESData_IGESEntity.hxx>
17 #include <IGESDraw_CircArraySubfigure.hxx>
18 #include <IGESDraw_ConnectPoint.hxx>
19 #include <IGESDraw_Drawing.hxx>
20 #include <IGESDraw_DrawingWithRotation.hxx>
21 #include <IGESDraw_GeneralModule.hxx>
22 #include <IGESDraw_LabelDisplay.hxx>
23 #include <IGESDraw_NetworkSubfigure.hxx>
24 #include <IGESDraw_NetworkSubfigureDef.hxx>
25 #include <IGESDraw_PerspectiveView.hxx>
26 #include <IGESDraw_Planar.hxx>
27 #include <IGESDraw_RectArraySubfigure.hxx>
28 #include <IGESDraw_SegmentedViewsVisible.hxx>
29 #include <IGESDraw_ToolCircArraySubfigure.hxx>
30 #include <IGESDraw_ToolConnectPoint.hxx>
31 #include <IGESDraw_ToolDrawing.hxx>
32 #include <IGESDraw_ToolDrawingWithRotation.hxx>
33 #include <IGESDraw_ToolLabelDisplay.hxx>
34 #include <IGESDraw_ToolNetworkSubfigure.hxx>
35 #include <IGESDraw_ToolNetworkSubfigureDef.hxx>
36 #include <IGESDraw_ToolPerspectiveView.hxx>
37 #include <IGESDraw_ToolPlanar.hxx>
38 #include <IGESDraw_ToolRectArraySubfigure.hxx>
39 #include <IGESDraw_ToolSegmentedViewsVisible.hxx>
40 #include <IGESDraw_ToolView.hxx>
41 #include <IGESDraw_ToolViewsVisible.hxx>
42 #include <IGESDraw_ToolViewsVisibleWithAttr.hxx>
43 #include <IGESDraw_View.hxx>
44 #include <IGESDraw_ViewsVisible.hxx>
45 #include <IGESDraw_ViewsVisibleWithAttr.hxx>
46 #include <Interface_Category.hxx>
47 #include <Interface_Check.hxx>
48 #include <Interface_CopyTool.hxx>
49 #include <Interface_EntityIterator.hxx>
50 #include <Interface_Macros.hxx>
51 #include <Interface_ShareTool.hxx>
52 #include <Standard_Transient.hxx>
53 #include <Standard_Type.hxx>
54
55 IMPLEMENT_STANDARD_RTTIEXT(IGESDraw_GeneralModule,IGESData_GeneralModule)
56
57 //  Each Module is attached to a Protocol : it must interprete Case Numbers
58 //  (arguments <CN> of various methods) in accordance to values returned by
59 //  the method TypeNumber from this Protocol
60 IGESDraw_GeneralModule::IGESDraw_GeneralModule ()    {  }
61
62
63     void  IGESDraw_GeneralModule::OwnSharedCase
64   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
65    Interface_EntityIterator& iter) const 
66 {
67   switch (CN) {
68     case  1 : {
69       DeclareAndCast(IGESDraw_CircArraySubfigure,anent,ent);
70       if (anent.IsNull()) return;
71       IGESDraw_ToolCircArraySubfigure tool;
72       tool.OwnShared(anent,iter);
73     }
74       break;
75     case  2 : {
76       DeclareAndCast(IGESDraw_ConnectPoint,anent,ent);
77       if (anent.IsNull()) return;
78       IGESDraw_ToolConnectPoint tool;
79       tool.OwnShared(anent,iter);
80     }
81       break;
82     case  3 : {
83       DeclareAndCast(IGESDraw_Drawing,anent,ent);
84       if (anent.IsNull()) return;
85       IGESDraw_ToolDrawing tool;
86       tool.OwnShared(anent,iter);
87     }
88       break;
89     case  4 : {
90       DeclareAndCast(IGESDraw_DrawingWithRotation,anent,ent);
91       if (anent.IsNull()) return;
92       IGESDraw_ToolDrawingWithRotation tool;
93       tool.OwnShared(anent,iter);
94     }
95       break;
96     case  5 : {
97       DeclareAndCast(IGESDraw_LabelDisplay,anent,ent);
98       if (anent.IsNull()) return;
99       IGESDraw_ToolLabelDisplay tool;
100       tool.OwnShared(anent,iter);
101     }
102       break;
103     case  6 : {
104       DeclareAndCast(IGESDraw_NetworkSubfigure,anent,ent);
105       if (anent.IsNull()) return;
106       IGESDraw_ToolNetworkSubfigure tool;
107       tool.OwnShared(anent,iter);
108     }
109       break;
110     case  7 : {
111       DeclareAndCast(IGESDraw_NetworkSubfigureDef,anent,ent);
112       if (anent.IsNull()) return;
113       IGESDraw_ToolNetworkSubfigureDef tool;
114       tool.OwnShared(anent,iter);
115     }
116       break;
117     case  8 : {
118       DeclareAndCast(IGESDraw_PerspectiveView,anent,ent);
119       if (anent.IsNull()) return;
120       IGESDraw_ToolPerspectiveView tool;
121       tool.OwnShared(anent,iter);
122     }
123       break;
124     case  9 : {
125       DeclareAndCast(IGESDraw_Planar,anent,ent);
126       if (anent.IsNull()) return;
127       IGESDraw_ToolPlanar tool;
128       tool.OwnShared(anent,iter);
129     }
130       break;
131     case 10 : {
132       DeclareAndCast(IGESDraw_RectArraySubfigure,anent,ent);
133       if (anent.IsNull()) return;
134       IGESDraw_ToolRectArraySubfigure tool;
135       tool.OwnShared(anent,iter);
136     }
137       break;
138     case 11 : {
139       DeclareAndCast(IGESDraw_SegmentedViewsVisible,anent,ent);
140       if (anent.IsNull()) return;
141       IGESDraw_ToolSegmentedViewsVisible tool;
142       tool.OwnShared(anent,iter);
143     }
144       break;
145     case 12 : {
146       DeclareAndCast(IGESDraw_View,anent,ent);
147       if (anent.IsNull()) return;
148       IGESDraw_ToolView tool;
149       tool.OwnShared(anent,iter);
150     }
151       break;
152     case 13 : {
153       DeclareAndCast(IGESDraw_ViewsVisible,anent,ent);
154       if (anent.IsNull()) return;
155       IGESDraw_ToolViewsVisible tool;
156       tool.OwnShared(anent,iter);
157     }
158       break;
159     case 14 : {
160       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,anent,ent);
161       if (anent.IsNull()) return;
162       IGESDraw_ToolViewsVisibleWithAttr tool;
163       tool.OwnShared(anent,iter);
164     }
165       break;
166     default : break;
167   }
168 }
169
170     void  IGESDraw_GeneralModule::OwnImpliedCase
171   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
172    Interface_EntityIterator& iter) const 
173 {
174   switch (CN ) {
175     case 13 : {
176       DeclareAndCast(IGESDraw_ViewsVisible,anent,ent);
177       if (anent.IsNull()) break;
178       IGESDraw_ToolViewsVisible tool;
179       tool.OwnImplied(anent,iter);
180     }
181     break;
182     case 14 : {
183       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,anent,ent);
184       if (anent.IsNull()) break;
185       IGESDraw_ToolViewsVisibleWithAttr tool;
186       tool.OwnImplied(anent,iter);
187     }
188     break;
189     default : break;
190   }
191 }
192
193
194
195     IGESData_DirChecker  IGESDraw_GeneralModule::DirChecker
196   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent) const 
197 {
198   switch (CN) {
199     case  1 : {
200       DeclareAndCast(IGESDraw_CircArraySubfigure,anent,ent);
201       if (anent.IsNull()) break;
202       IGESDraw_ToolCircArraySubfigure tool;
203       return tool.DirChecker(anent);
204     }
205     case  2 : {
206       DeclareAndCast(IGESDraw_ConnectPoint,anent,ent);
207       if (anent.IsNull()) break;
208       IGESDraw_ToolConnectPoint tool;
209       return tool.DirChecker(anent);
210     }
211     case  3 : {
212       DeclareAndCast(IGESDraw_Drawing,anent,ent);
213       if (anent.IsNull()) break;
214       IGESDraw_ToolDrawing tool;
215       return tool.DirChecker(anent);
216     }
217     case  4 : {
218       DeclareAndCast(IGESDraw_DrawingWithRotation,anent,ent);
219       if (anent.IsNull()) break;
220       IGESDraw_ToolDrawingWithRotation tool;
221       return tool.DirChecker(anent);
222     }
223     case  5 : {
224       DeclareAndCast(IGESDraw_LabelDisplay,anent,ent);
225       if (anent.IsNull()) break;
226       IGESDraw_ToolLabelDisplay tool;
227       return tool.DirChecker(anent);
228     }
229     case  6 : {
230       DeclareAndCast(IGESDraw_NetworkSubfigure,anent,ent);
231       if (anent.IsNull()) break;
232       IGESDraw_ToolNetworkSubfigure tool;
233       return tool.DirChecker(anent);
234     }
235     case  7 : {
236       DeclareAndCast(IGESDraw_NetworkSubfigureDef,anent,ent);
237       if (anent.IsNull()) break;
238       IGESDraw_ToolNetworkSubfigureDef tool;
239       return tool.DirChecker(anent);
240     }
241     case  8 : {
242       DeclareAndCast(IGESDraw_PerspectiveView,anent,ent);
243       if (anent.IsNull()) break;
244       IGESDraw_ToolPerspectiveView tool;
245       return tool.DirChecker(anent);
246     }
247     case  9 : {
248       DeclareAndCast(IGESDraw_Planar,anent,ent);
249       if (anent.IsNull()) break;
250       IGESDraw_ToolPlanar tool;
251       return tool.DirChecker(anent);
252     }
253     case 10 : {
254       DeclareAndCast(IGESDraw_RectArraySubfigure,anent,ent);
255       if (anent.IsNull()) break;
256       IGESDraw_ToolRectArraySubfigure tool;
257       return tool.DirChecker(anent);
258     }
259     case 11 : {
260       DeclareAndCast(IGESDraw_SegmentedViewsVisible,anent,ent);
261       if (anent.IsNull()) break;
262       IGESDraw_ToolSegmentedViewsVisible tool;
263       return tool.DirChecker(anent);
264     }
265     case 12 : {
266       DeclareAndCast(IGESDraw_View,anent,ent);
267       if (anent.IsNull()) break;
268       IGESDraw_ToolView tool;
269       return tool.DirChecker(anent);
270     }
271     case 13 : {
272       DeclareAndCast(IGESDraw_ViewsVisible,anent,ent);
273       if (anent.IsNull()) break;
274       IGESDraw_ToolViewsVisible tool;
275       return tool.DirChecker(anent);
276     }
277     case 14 : {
278       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,anent,ent);
279       if (anent.IsNull()) break;
280       IGESDraw_ToolViewsVisibleWithAttr tool;
281       return tool.DirChecker(anent);
282     }
283     default : break;
284   }
285   return IGESData_DirChecker();    // by default, no specific criterium
286 }
287
288
289     void  IGESDraw_GeneralModule::OwnCheckCase
290   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
291    const Interface_ShareTool& shares, Handle(Interface_Check)& ach) const 
292 {
293   switch (CN) {
294     case  1 : {
295       DeclareAndCast(IGESDraw_CircArraySubfigure,anent,ent);
296       if (anent.IsNull()) return;
297       IGESDraw_ToolCircArraySubfigure tool;
298       tool.OwnCheck(anent,shares,ach);
299     }
300       break;
301     case  2 : {
302       DeclareAndCast(IGESDraw_ConnectPoint,anent,ent);
303       if (anent.IsNull()) return;
304       IGESDraw_ToolConnectPoint tool;
305       tool.OwnCheck(anent,shares,ach);
306     }
307       break;
308     case  3 : {
309       DeclareAndCast(IGESDraw_Drawing,anent,ent);
310       if (anent.IsNull()) return;
311       IGESDraw_ToolDrawing tool;
312       tool.OwnCheck(anent,shares,ach);
313     }
314       break;
315     case  4 : {
316       DeclareAndCast(IGESDraw_DrawingWithRotation,anent,ent);
317       if (anent.IsNull()) return;
318       IGESDraw_ToolDrawingWithRotation tool;
319       tool.OwnCheck(anent,shares,ach);
320     }
321       break;
322     case  5 : {
323       DeclareAndCast(IGESDraw_LabelDisplay,anent,ent);
324       if (anent.IsNull()) return;
325       IGESDraw_ToolLabelDisplay tool;
326       tool.OwnCheck(anent,shares,ach);
327     }
328       break;
329     case  6 : {
330       DeclareAndCast(IGESDraw_NetworkSubfigure,anent,ent);
331       if (anent.IsNull()) return;
332       IGESDraw_ToolNetworkSubfigure tool;
333       tool.OwnCheck(anent,shares,ach);
334     }
335       break;
336     case  7 : {
337       DeclareAndCast(IGESDraw_NetworkSubfigureDef,anent,ent);
338       if (anent.IsNull()) return;
339       IGESDraw_ToolNetworkSubfigureDef tool;
340       tool.OwnCheck(anent,shares,ach);
341     }
342       break;
343     case  8 : {
344       DeclareAndCast(IGESDraw_PerspectiveView,anent,ent);
345       if (anent.IsNull()) return;
346       IGESDraw_ToolPerspectiveView tool;
347       tool.OwnCheck(anent,shares,ach);
348     }
349       break;
350     case  9 : {
351       DeclareAndCast(IGESDraw_Planar,anent,ent);
352       if (anent.IsNull()) return;
353       IGESDraw_ToolPlanar tool;
354       tool.OwnCheck(anent,shares,ach);
355     }
356       break;
357     case 10 : {
358       DeclareAndCast(IGESDraw_RectArraySubfigure,anent,ent);
359       if (anent.IsNull()) return;
360       IGESDraw_ToolRectArraySubfigure tool;
361       tool.OwnCheck(anent,shares,ach);
362     }
363       break;
364     case 11 : {
365       DeclareAndCast(IGESDraw_SegmentedViewsVisible,anent,ent);
366       if (anent.IsNull()) return;
367       IGESDraw_ToolSegmentedViewsVisible tool;
368       tool.OwnCheck(anent,shares,ach);
369     }
370       break;
371     case 12 : {
372       DeclareAndCast(IGESDraw_View,anent,ent);
373       if (anent.IsNull()) return;
374       IGESDraw_ToolView tool;
375       tool.OwnCheck(anent,shares,ach);
376     }
377       break;
378     case 13 : {
379       DeclareAndCast(IGESDraw_ViewsVisible,anent,ent);
380       if (anent.IsNull()) return;
381       IGESDraw_ToolViewsVisible tool;
382       tool.OwnCheck(anent,shares,ach);
383     }
384       break;
385     case 14 : {
386       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,anent,ent);
387       if (anent.IsNull()) return;
388       IGESDraw_ToolViewsVisibleWithAttr tool;
389       tool.OwnCheck(anent,shares,ach);
390     }
391       break;
392     default : break;
393   }
394 }
395
396
397     Standard_Boolean  IGESDraw_GeneralModule::NewVoid
398   (const Standard_Integer CN, Handle(Standard_Transient)& ent) const 
399 {
400   switch (CN) {
401     case  1 : ent = new IGESDraw_CircArraySubfigure;    break;
402     case  2 : ent = new IGESDraw_ConnectPoint;          break;
403     case  3 : ent = new IGESDraw_Drawing;               break;
404     case  4 : ent = new IGESDraw_DrawingWithRotation;   break;
405     case  5 : ent = new IGESDraw_LabelDisplay;          break;
406     case  6 : ent = new IGESDraw_NetworkSubfigure;      break;
407     case  7 : ent = new IGESDraw_NetworkSubfigureDef;   break;
408     case  8 : ent = new IGESDraw_PerspectiveView;       break;
409     case  9 : ent = new IGESDraw_Planar;                break;
410     case 10 : ent = new IGESDraw_RectArraySubfigure;    break;
411     case 11 : ent = new IGESDraw_SegmentedViewsVisible; break;
412     case 12 : ent = new IGESDraw_View;                  break;
413     case 13 : ent = new IGESDraw_ViewsVisible;          break;
414     case 14 : ent = new IGESDraw_ViewsVisibleWithAttr;  break;
415     default : return Standard_False;    // by default, Failure on Recognize
416   }
417   return Standard_True;
418 }
419
420
421     void  IGESDraw_GeneralModule::OwnCopyCase
422   (const Standard_Integer CN,
423    const Handle(IGESData_IGESEntity)& entfrom,
424    const Handle(IGESData_IGESEntity)& entto,
425    Interface_CopyTool& TC) const 
426 {
427   switch (CN) {
428     case  1 : {
429       DeclareAndCast(IGESDraw_CircArraySubfigure,enfr,entfrom);
430       DeclareAndCast(IGESDraw_CircArraySubfigure,ento,entto);
431       IGESDraw_ToolCircArraySubfigure tool;
432       tool.OwnCopy(enfr,ento,TC);
433     }
434       break;
435     case  2 : {
436       DeclareAndCast(IGESDraw_ConnectPoint,enfr,entfrom);
437       DeclareAndCast(IGESDraw_ConnectPoint,ento,entto);
438       IGESDraw_ToolConnectPoint tool;
439       tool.OwnCopy(enfr,ento,TC);
440     }
441       break;
442     case  3 : {
443       DeclareAndCast(IGESDraw_Drawing,enfr,entfrom);
444       DeclareAndCast(IGESDraw_Drawing,ento,entto);
445       IGESDraw_ToolDrawing tool;
446       tool.OwnCopy(enfr,ento,TC);
447     }
448       break;
449     case  4 : {
450       DeclareAndCast(IGESDraw_DrawingWithRotation,enfr,entfrom);
451       DeclareAndCast(IGESDraw_DrawingWithRotation,ento,entto);
452       IGESDraw_ToolDrawingWithRotation tool;
453       tool.OwnCopy(enfr,ento,TC);
454     }
455       break;
456     case  5 : {
457       DeclareAndCast(IGESDraw_LabelDisplay,enfr,entfrom);
458       DeclareAndCast(IGESDraw_LabelDisplay,ento,entto);
459       IGESDraw_ToolLabelDisplay tool;
460       tool.OwnCopy(enfr,ento,TC);
461     }
462       break;
463     case  6 : {
464       DeclareAndCast(IGESDraw_NetworkSubfigure,enfr,entfrom);
465       DeclareAndCast(IGESDraw_NetworkSubfigure,ento,entto);
466       IGESDraw_ToolNetworkSubfigure tool;
467       tool.OwnCopy(enfr,ento,TC);
468     }
469       break;
470     case  7 : {
471       DeclareAndCast(IGESDraw_NetworkSubfigureDef,enfr,entfrom);
472       DeclareAndCast(IGESDraw_NetworkSubfigureDef,ento,entto);
473       IGESDraw_ToolNetworkSubfigureDef tool;
474       tool.OwnCopy(enfr,ento,TC);
475     }
476       break;
477     case  8 : {
478       DeclareAndCast(IGESDraw_PerspectiveView,enfr,entfrom);
479       DeclareAndCast(IGESDraw_PerspectiveView,ento,entto);
480       IGESDraw_ToolPerspectiveView tool;
481       tool.OwnCopy(enfr,ento,TC);
482     }
483       break;
484     case  9 : {
485       DeclareAndCast(IGESDraw_Planar,enfr,entfrom);
486       DeclareAndCast(IGESDraw_Planar,ento,entto);
487       IGESDraw_ToolPlanar tool;
488       tool.OwnCopy(enfr,ento,TC);
489     }
490       break;
491     case 10 : {
492       DeclareAndCast(IGESDraw_RectArraySubfigure,enfr,entfrom);
493       DeclareAndCast(IGESDraw_RectArraySubfigure,ento,entto);
494       IGESDraw_ToolRectArraySubfigure tool;
495       tool.OwnCopy(enfr,ento,TC);
496     }
497       break;
498     case 11 : {
499       DeclareAndCast(IGESDraw_SegmentedViewsVisible,enfr,entfrom);
500       DeclareAndCast(IGESDraw_SegmentedViewsVisible,ento,entto);
501       IGESDraw_ToolSegmentedViewsVisible tool;
502       tool.OwnCopy(enfr,ento,TC);
503     }
504       break;
505     case 12 : {
506       DeclareAndCast(IGESDraw_View,enfr,entfrom);
507       DeclareAndCast(IGESDraw_View,ento,entto);
508       IGESDraw_ToolView tool;
509       tool.OwnCopy(enfr,ento,TC);
510     }
511       break;
512     case 13 : {
513       DeclareAndCast(IGESDraw_ViewsVisible,enfr,entfrom);
514       DeclareAndCast(IGESDraw_ViewsVisible,ento,entto);
515       IGESDraw_ToolViewsVisible tool;
516       tool.OwnCopy(enfr,ento,TC);
517     }
518       break;
519     case 14 : {
520       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,enfr,entfrom);
521       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,ento,entto);
522       IGESDraw_ToolViewsVisibleWithAttr tool;
523       tool.OwnCopy(enfr,ento,TC);
524     }
525       break;
526     default : break;
527   }
528 }
529
530
531     void  IGESDraw_GeneralModule::OwnRenewCase
532   (const Standard_Integer CN,
533    const Handle(IGESData_IGESEntity)& entfrom,
534    const Handle(IGESData_IGESEntity)& entto,
535    const Interface_CopyTool& TC) const 
536 {
537   switch (CN) {
538     case 13 : {
539       DeclareAndCast(IGESDraw_ViewsVisible,enfr,entfrom);
540       DeclareAndCast(IGESDraw_ViewsVisible,ento,entto);
541       IGESDraw_ToolViewsVisible tool;
542       tool.OwnRenew(enfr,ento,TC);
543     }
544       break;
545     case 14 : {
546       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,enfr,entfrom);
547       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,ento,entto);
548       IGESDraw_ToolViewsVisibleWithAttr tool;
549       tool.OwnRenew(enfr,ento,TC);
550     }
551       break;
552     default : break;
553   }
554 }
555
556
557     void  IGESDraw_GeneralModule::OwnDeleteCase
558   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent) const
559 {
560   switch (CN) {
561     case 13 : {
562       DeclareAndCast(IGESDraw_ViewsVisible,anent,ent);
563       IGESDraw_ToolViewsVisible tool;
564       tool.OwnWhenDelete(anent);
565     }
566       break;
567     case 14 : {
568       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,anent,ent);
569       IGESDraw_ToolViewsVisibleWithAttr tool;
570       tool.OwnWhenDelete(anent);
571     }
572       break;
573     default : break;
574   }
575 }
576
577
578     Standard_Integer  IGESDraw_GeneralModule::CategoryNumber
579   (const Standard_Integer CN, const Handle(Standard_Transient)& ,
580    const Interface_ShareTool& ) const
581 {
582   if (CN == 9) return Interface_Category::Number("Auxiliary");
583   if (CN == 1 || CN == 2 || CN == 10) return Interface_Category::Number("Structure");
584   return Interface_Category::Number("Drawing");
585 }