1 // Copyright (c) 1999-2014 OPEN CASCADE SAS
3 // This file is part of Open CASCADE Technology software library.
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.
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
15 #include <IGESBasic_AssocGroupType.hxx>
16 #include <IGESBasic_ExternalReferenceFile.hxx>
17 #include <IGESBasic_ExternalRefFile.hxx>
18 #include <IGESBasic_ExternalRefFileIndex.hxx>
19 #include <IGESBasic_ExternalRefFileName.hxx>
20 #include <IGESBasic_ExternalRefLibName.hxx>
21 #include <IGESBasic_ExternalRefName.hxx>
22 #include <IGESBasic_GeneralModule.hxx>
23 #include <IGESBasic_Group.hxx>
24 #include <IGESBasic_GroupWithoutBackP.hxx>
25 #include <IGESBasic_Hierarchy.hxx>
26 #include <IGESBasic_Name.hxx>
27 #include <IGESBasic_OrderedGroup.hxx>
28 #include <IGESBasic_OrderedGroupWithoutBackP.hxx>
29 #include <IGESBasic_SingleParent.hxx>
30 #include <IGESBasic_SingularSubfigure.hxx>
31 #include <IGESBasic_SubfigureDef.hxx>
32 #include <IGESBasic_ToolAssocGroupType.hxx>
33 #include <IGESBasic_ToolExternalReferenceFile.hxx>
34 #include <IGESBasic_ToolExternalRefFile.hxx>
35 #include <IGESBasic_ToolExternalRefFileIndex.hxx>
36 #include <IGESBasic_ToolExternalRefFileName.hxx>
37 #include <IGESBasic_ToolExternalRefLibName.hxx>
38 #include <IGESBasic_ToolExternalRefName.hxx>
39 #include <IGESBasic_ToolGroup.hxx>
40 #include <IGESBasic_ToolGroupWithoutBackP.hxx>
41 #include <IGESBasic_ToolHierarchy.hxx>
42 #include <IGESBasic_ToolName.hxx>
43 #include <IGESBasic_ToolOrderedGroup.hxx>
44 #include <IGESBasic_ToolOrderedGroupWithoutBackP.hxx>
45 #include <IGESBasic_ToolSingleParent.hxx>
46 #include <IGESBasic_ToolSingularSubfigure.hxx>
47 #include <IGESBasic_ToolSubfigureDef.hxx>
48 #include <IGESData_DirChecker.hxx>
49 #include <IGESData_IGESEntity.hxx>
50 #include <Interface_Category.hxx>
51 #include <Interface_Check.hxx>
52 #include <Interface_CopyTool.hxx>
53 #include <Interface_EntityIterator.hxx>
54 #include <Interface_Macros.hxx>
55 #include <Interface_ShareTool.hxx>
56 #include <Standard_Transient.hxx>
57 #include <Standard_Type.hxx>
59 IMPLEMENT_STANDARD_RTTIEXT(IGESBasic_GeneralModule,IGESData_GeneralModule)
61 // Each Module is attached to a Protocol : it must interprete Case Numbers
62 // (arguments <CN> of various methods) in accordance to values returned by
63 // the method TypeNumber from this Protocol
64 IGESBasic_GeneralModule::IGESBasic_GeneralModule () { }
67 void IGESBasic_GeneralModule::OwnSharedCase
68 (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
69 Interface_EntityIterator& iter) const
73 DeclareAndCast(IGESBasic_AssocGroupType,anent,ent);
74 if (anent.IsNull()) return;
75 IGESBasic_ToolAssocGroupType tool;
76 tool.OwnShared(anent,iter);
80 DeclareAndCast(IGESBasic_ExternalRefFile,anent,ent);
81 if (anent.IsNull()) return;
82 IGESBasic_ToolExternalRefFile tool;
83 tool.OwnShared(anent,iter);
87 DeclareAndCast(IGESBasic_ExternalRefFileIndex,anent,ent);
88 if (anent.IsNull()) return;
89 IGESBasic_ToolExternalRefFileIndex tool;
90 tool.OwnShared(anent,iter);
94 DeclareAndCast(IGESBasic_ExternalRefFileName,anent,ent);
95 if (anent.IsNull()) return;
96 IGESBasic_ToolExternalRefFileName tool;
97 tool.OwnShared(anent,iter);
101 DeclareAndCast(IGESBasic_ExternalRefLibName,anent,ent);
102 if (anent.IsNull()) return;
103 IGESBasic_ToolExternalRefLibName tool;
104 tool.OwnShared(anent,iter);
108 DeclareAndCast(IGESBasic_ExternalRefName,anent,ent);
109 if (anent.IsNull()) return;
110 IGESBasic_ToolExternalRefName tool;
111 tool.OwnShared(anent,iter);
115 DeclareAndCast(IGESBasic_ExternalReferenceFile,anent,ent);
116 if (anent.IsNull()) return;
117 IGESBasic_ToolExternalReferenceFile tool;
118 tool.OwnShared(anent,iter);
122 DeclareAndCast(IGESBasic_Group,anent,ent);
123 if (anent.IsNull()) return;
124 IGESBasic_ToolGroup tool;
125 tool.OwnShared(anent,iter);
129 DeclareAndCast(IGESBasic_GroupWithoutBackP,anent,ent);
130 if (anent.IsNull()) return;
131 IGESBasic_ToolGroupWithoutBackP tool;
132 tool.OwnShared(anent,iter);
136 DeclareAndCast(IGESBasic_Hierarchy,anent,ent);
137 if (anent.IsNull()) return;
138 IGESBasic_ToolHierarchy tool;
139 tool.OwnShared(anent,iter);
143 DeclareAndCast(IGESBasic_Name,anent,ent);
144 if (anent.IsNull()) return;
145 IGESBasic_ToolName tool;
146 tool.OwnShared(anent,iter);
150 DeclareAndCast(IGESBasic_OrderedGroup,anent,ent);
151 if (anent.IsNull()) return;
152 IGESBasic_ToolOrderedGroup tool;
153 tool.OwnShared(anent,iter);
157 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,anent,ent);
158 if (anent.IsNull()) return;
159 IGESBasic_ToolOrderedGroupWithoutBackP tool;
160 tool.OwnShared(anent,iter);
164 DeclareAndCast(IGESBasic_SingleParent,anent,ent);
165 if (anent.IsNull()) return;
166 IGESBasic_ToolSingleParent tool;
167 tool.OwnShared(anent,iter);
171 DeclareAndCast(IGESBasic_SingularSubfigure,anent,ent);
172 if (anent.IsNull()) return;
173 IGESBasic_ToolSingularSubfigure tool;
174 tool.OwnShared(anent,iter);
178 DeclareAndCast(IGESBasic_SubfigureDef,anent,ent);
179 if (anent.IsNull()) return;
180 IGESBasic_ToolSubfigureDef tool;
181 tool.OwnShared(anent,iter);
189 IGESData_DirChecker IGESBasic_GeneralModule::DirChecker
190 (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent) const
194 DeclareAndCast(IGESBasic_AssocGroupType,anent,ent);
195 if (anent.IsNull()) break;
196 IGESBasic_ToolAssocGroupType tool;
197 return tool.DirChecker(anent);
200 DeclareAndCast(IGESBasic_ExternalRefFile,anent,ent);
201 if (anent.IsNull()) break;
202 IGESBasic_ToolExternalRefFile tool;
203 return tool.DirChecker(anent);
206 DeclareAndCast(IGESBasic_ExternalRefFileIndex,anent,ent);
207 if (anent.IsNull()) break;
208 IGESBasic_ToolExternalRefFileIndex tool;
209 return tool.DirChecker(anent);
212 DeclareAndCast(IGESBasic_ExternalRefFileName,anent,ent);
213 if (anent.IsNull()) break;
214 IGESBasic_ToolExternalRefFileName tool;
215 return tool.DirChecker(anent);
218 DeclareAndCast(IGESBasic_ExternalRefLibName,anent,ent);
219 if (anent.IsNull()) break;
220 IGESBasic_ToolExternalRefLibName tool;
221 return tool.DirChecker(anent);
224 DeclareAndCast(IGESBasic_ExternalRefName,anent,ent);
225 if (anent.IsNull()) break;
226 IGESBasic_ToolExternalRefName tool;
227 return tool.DirChecker(anent);
230 DeclareAndCast(IGESBasic_ExternalReferenceFile,anent,ent);
231 if (anent.IsNull()) break;
232 IGESBasic_ToolExternalReferenceFile tool;
233 return tool.DirChecker(anent);
236 DeclareAndCast(IGESBasic_Group,anent,ent);
237 if (anent.IsNull()) break;
238 IGESBasic_ToolGroup tool;
239 return tool.DirChecker(anent);
242 DeclareAndCast(IGESBasic_GroupWithoutBackP,anent,ent);
243 if (anent.IsNull()) break;
244 IGESBasic_ToolGroupWithoutBackP tool;
245 return tool.DirChecker(anent);
248 DeclareAndCast(IGESBasic_Hierarchy,anent,ent);
249 if (anent.IsNull()) break;
250 IGESBasic_ToolHierarchy tool;
251 return tool.DirChecker(anent);
254 DeclareAndCast(IGESBasic_Name,anent,ent);
255 if (anent.IsNull()) break;
256 IGESBasic_ToolName tool;
257 return tool.DirChecker(anent);
260 DeclareAndCast(IGESBasic_OrderedGroup,anent,ent);
261 if (anent.IsNull()) break;
262 IGESBasic_ToolOrderedGroup tool;
263 return tool.DirChecker(anent);
266 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,anent,ent);
267 if (anent.IsNull()) break;
268 IGESBasic_ToolOrderedGroupWithoutBackP tool;
269 return tool.DirChecker(anent);
272 DeclareAndCast(IGESBasic_SingleParent,anent,ent);
273 if (anent.IsNull()) break;
274 IGESBasic_ToolSingleParent tool;
275 return tool.DirChecker(anent);
278 DeclareAndCast(IGESBasic_SingularSubfigure,anent,ent);
279 if (anent.IsNull()) break;
280 IGESBasic_ToolSingularSubfigure tool;
281 return tool.DirChecker(anent);
284 DeclareAndCast(IGESBasic_SubfigureDef,anent,ent);
285 if (anent.IsNull()) break;
286 IGESBasic_ToolSubfigureDef tool;
287 return tool.DirChecker(anent);
291 return IGESData_DirChecker(); // by default, no specific criterium
295 void IGESBasic_GeneralModule::OwnCheckCase
296 (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
297 const Interface_ShareTool& shares, Handle(Interface_Check)& ach) const
301 DeclareAndCast(IGESBasic_AssocGroupType,anent,ent);
302 if (anent.IsNull()) return;
303 IGESBasic_ToolAssocGroupType tool;
304 tool.OwnCheck(anent,shares,ach);
308 DeclareAndCast(IGESBasic_ExternalRefFile,anent,ent);
309 if (anent.IsNull()) return;
310 IGESBasic_ToolExternalRefFile tool;
311 tool.OwnCheck(anent,shares,ach);
315 DeclareAndCast(IGESBasic_ExternalRefFileIndex,anent,ent);
316 if (anent.IsNull()) return;
317 IGESBasic_ToolExternalRefFileIndex tool;
318 tool.OwnCheck(anent,shares,ach);
322 DeclareAndCast(IGESBasic_ExternalRefFileName,anent,ent);
323 if (anent.IsNull()) return;
324 IGESBasic_ToolExternalRefFileName tool;
325 tool.OwnCheck(anent,shares,ach);
329 DeclareAndCast(IGESBasic_ExternalRefLibName,anent,ent);
330 if (anent.IsNull()) return;
331 IGESBasic_ToolExternalRefLibName tool;
332 tool.OwnCheck(anent,shares,ach);
336 DeclareAndCast(IGESBasic_ExternalRefName,anent,ent);
337 if (anent.IsNull()) return;
338 IGESBasic_ToolExternalRefName tool;
339 tool.OwnCheck(anent,shares,ach);
343 DeclareAndCast(IGESBasic_ExternalReferenceFile,anent,ent);
344 if (anent.IsNull()) return;
345 IGESBasic_ToolExternalReferenceFile tool;
346 tool.OwnCheck(anent,shares,ach);
350 DeclareAndCast(IGESBasic_Group,anent,ent);
351 if (anent.IsNull()) return;
352 IGESBasic_ToolGroup tool;
353 tool.OwnCheck(anent,shares,ach);
357 DeclareAndCast(IGESBasic_GroupWithoutBackP,anent,ent);
358 if (anent.IsNull()) return;
359 IGESBasic_ToolGroupWithoutBackP tool;
360 tool.OwnCheck(anent,shares,ach);
364 DeclareAndCast(IGESBasic_Hierarchy,anent,ent);
365 if (anent.IsNull()) return;
366 IGESBasic_ToolHierarchy tool;
367 tool.OwnCheck(anent,shares,ach);
371 DeclareAndCast(IGESBasic_Name,anent,ent);
372 if (anent.IsNull()) return;
373 IGESBasic_ToolName tool;
374 tool.OwnCheck(anent,shares,ach);
378 DeclareAndCast(IGESBasic_OrderedGroup,anent,ent);
379 if (anent.IsNull()) return;
380 IGESBasic_ToolOrderedGroup tool;
381 tool.OwnCheck(anent,shares,ach);
385 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,anent,ent);
386 if (anent.IsNull()) return;
387 IGESBasic_ToolOrderedGroupWithoutBackP tool;
388 tool.OwnCheck(anent,shares,ach);
392 DeclareAndCast(IGESBasic_SingleParent,anent,ent);
393 if (anent.IsNull()) return;
394 IGESBasic_ToolSingleParent tool;
395 tool.OwnCheck(anent,shares,ach);
399 DeclareAndCast(IGESBasic_SingularSubfigure,anent,ent);
400 if (anent.IsNull()) return;
401 IGESBasic_ToolSingularSubfigure tool;
402 tool.OwnCheck(anent,shares,ach);
406 DeclareAndCast(IGESBasic_SubfigureDef,anent,ent);
407 if (anent.IsNull()) return;
408 IGESBasic_ToolSubfigureDef tool;
409 tool.OwnCheck(anent,shares,ach);
417 Standard_Boolean IGESBasic_GeneralModule::NewVoid
418 (const Standard_Integer CN, Handle(Standard_Transient)& ent) const
421 case 1 : ent = new IGESBasic_AssocGroupType; break;
422 case 2 : ent = new IGESBasic_ExternalRefFile; break;
423 case 3 : ent = new IGESBasic_ExternalRefFileIndex; break;
424 case 4 : ent = new IGESBasic_ExternalRefFileName; break;
425 case 5 : ent = new IGESBasic_ExternalRefLibName; break;
426 case 6 : ent = new IGESBasic_ExternalRefName; break;
427 case 7 : ent = new IGESBasic_ExternalReferenceFile; break;
428 case 8 : ent = new IGESBasic_Group; break;
429 case 9 : ent = new IGESBasic_GroupWithoutBackP; break;
430 case 10 : ent = new IGESBasic_Hierarchy; break;
431 case 11 : ent = new IGESBasic_Name; break;
432 case 12 : ent = new IGESBasic_OrderedGroup; break;
433 case 13 : ent = new IGESBasic_OrderedGroupWithoutBackP; break;
434 case 14 : ent = new IGESBasic_SingleParent; break;
435 case 15 : ent = new IGESBasic_SingularSubfigure; break;
436 case 16 : ent = new IGESBasic_SubfigureDef; break;
437 default : return Standard_False; // by default, Failure on Recognize
439 return Standard_True;
443 void IGESBasic_GeneralModule::OwnCopyCase
444 (const Standard_Integer CN,
445 const Handle(IGESData_IGESEntity)& entfrom,
446 const Handle(IGESData_IGESEntity)& entto,
447 Interface_CopyTool& TC) const
451 DeclareAndCast(IGESBasic_AssocGroupType,enfr,entfrom);
452 DeclareAndCast(IGESBasic_AssocGroupType,ento,entto);
453 IGESBasic_ToolAssocGroupType tool;
454 tool.OwnCopy(enfr,ento,TC);
458 DeclareAndCast(IGESBasic_ExternalRefFile,enfr,entfrom);
459 DeclareAndCast(IGESBasic_ExternalRefFile,ento,entto);
460 IGESBasic_ToolExternalRefFile tool;
461 tool.OwnCopy(enfr,ento,TC);
465 DeclareAndCast(IGESBasic_ExternalRefFileIndex,enfr,entfrom);
466 DeclareAndCast(IGESBasic_ExternalRefFileIndex,ento,entto);
467 IGESBasic_ToolExternalRefFileIndex tool;
468 tool.OwnCopy(enfr,ento,TC);
472 DeclareAndCast(IGESBasic_ExternalRefFileName,enfr,entfrom);
473 DeclareAndCast(IGESBasic_ExternalRefFileName,ento,entto);
474 IGESBasic_ToolExternalRefFileName tool;
475 tool.OwnCopy(enfr,ento,TC);
479 DeclareAndCast(IGESBasic_ExternalRefLibName,enfr,entfrom);
480 DeclareAndCast(IGESBasic_ExternalRefLibName,ento,entto);
481 IGESBasic_ToolExternalRefLibName tool;
482 tool.OwnCopy(enfr,ento,TC);
486 DeclareAndCast(IGESBasic_ExternalRefName,enfr,entfrom);
487 DeclareAndCast(IGESBasic_ExternalRefName,ento,entto);
488 IGESBasic_ToolExternalRefName tool;
489 tool.OwnCopy(enfr,ento,TC);
493 DeclareAndCast(IGESBasic_ExternalReferenceFile,enfr,entfrom);
494 DeclareAndCast(IGESBasic_ExternalReferenceFile,ento,entto);
495 IGESBasic_ToolExternalReferenceFile tool;
496 tool.OwnCopy(enfr,ento,TC);
500 DeclareAndCast(IGESBasic_Group,enfr,entfrom);
501 DeclareAndCast(IGESBasic_Group,ento,entto);
502 IGESBasic_ToolGroup tool;
503 tool.OwnCopy(enfr,ento,TC);
507 DeclareAndCast(IGESBasic_GroupWithoutBackP,enfr,entfrom);
508 DeclareAndCast(IGESBasic_GroupWithoutBackP,ento,entto);
509 IGESBasic_ToolGroupWithoutBackP tool;
510 tool.OwnCopy(enfr,ento,TC);
514 DeclareAndCast(IGESBasic_Hierarchy,enfr,entfrom);
515 DeclareAndCast(IGESBasic_Hierarchy,ento,entto);
516 IGESBasic_ToolHierarchy tool;
517 tool.OwnCopy(enfr,ento,TC);
521 DeclareAndCast(IGESBasic_Name,enfr,entfrom);
522 DeclareAndCast(IGESBasic_Name,ento,entto);
523 IGESBasic_ToolName tool;
524 tool.OwnCopy(enfr,ento,TC);
528 DeclareAndCast(IGESBasic_OrderedGroup,enfr,entfrom);
529 DeclareAndCast(IGESBasic_OrderedGroup,ento,entto);
530 IGESBasic_ToolOrderedGroup tool;
531 tool.OwnCopy(enfr,ento,TC);
535 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,enfr,entfrom);
536 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,ento,entto);
537 IGESBasic_ToolOrderedGroupWithoutBackP tool;
538 tool.OwnCopy(enfr,ento,TC);
542 DeclareAndCast(IGESBasic_SingleParent,enfr,entfrom);
543 DeclareAndCast(IGESBasic_SingleParent,ento,entto);
544 IGESBasic_ToolSingleParent tool;
545 tool.OwnCopy(enfr,ento,TC);
549 DeclareAndCast(IGESBasic_SingularSubfigure,enfr,entfrom);
550 DeclareAndCast(IGESBasic_SingularSubfigure,ento,entto);
551 IGESBasic_ToolSingularSubfigure tool;
552 tool.OwnCopy(enfr,ento,TC);
556 DeclareAndCast(IGESBasic_SubfigureDef,enfr,entfrom);
557 DeclareAndCast(IGESBasic_SubfigureDef,ento,entto);
558 IGESBasic_ToolSubfigureDef tool;
559 tool.OwnCopy(enfr,ento,TC);
566 Standard_Integer IGESBasic_GeneralModule::CategoryNumber
567 (const Standard_Integer CN, const Handle(Standard_Transient)& ,
568 const Interface_ShareTool& ) const
570 if (CN == 10 || CN == 11) return Interface_Category::Number("Auxiliary");
571 if (CN >= 2 && CN <= 6) return Interface_Category::Number("Description");
572 return Interface_Category::Number("Structure");