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_GroupWithoutBackP.hxx>
24 #include <IGESBasic_Hierarchy.hxx>
25 #include <IGESBasic_Name.hxx>
26 #include <IGESBasic_OrderedGroup.hxx>
27 #include <IGESBasic_OrderedGroupWithoutBackP.hxx>
28 #include <IGESBasic_SingleParent.hxx>
29 #include <IGESBasic_SingularSubfigure.hxx>
30 #include <IGESBasic_SubfigureDef.hxx>
31 #include <IGESBasic_ToolAssocGroupType.hxx>
32 #include <IGESBasic_ToolExternalReferenceFile.hxx>
33 #include <IGESBasic_ToolExternalRefFile.hxx>
34 #include <IGESBasic_ToolExternalRefFileIndex.hxx>
35 #include <IGESBasic_ToolExternalRefFileName.hxx>
36 #include <IGESBasic_ToolExternalRefLibName.hxx>
37 #include <IGESBasic_ToolExternalRefName.hxx>
38 #include <IGESBasic_ToolGroup.hxx>
39 #include <IGESBasic_ToolGroupWithoutBackP.hxx>
40 #include <IGESBasic_ToolHierarchy.hxx>
41 #include <IGESBasic_ToolName.hxx>
42 #include <IGESBasic_ToolOrderedGroup.hxx>
43 #include <IGESBasic_ToolOrderedGroupWithoutBackP.hxx>
44 #include <IGESBasic_ToolSingleParent.hxx>
45 #include <IGESBasic_ToolSingularSubfigure.hxx>
46 #include <IGESBasic_ToolSubfigureDef.hxx>
47 #include <IGESData_DirChecker.hxx>
48 #include <IGESData_IGESEntity.hxx>
49 #include <Interface_Category.hxx>
50 #include <Interface_Check.hxx>
51 #include <Interface_CopyTool.hxx>
52 #include <Interface_EntityIterator.hxx>
53 #include <Interface_Macros.hxx>
54 #include <Interface_ShareTool.hxx>
55 #include <Standard_Transient.hxx>
56 #include <Standard_Type.hxx>
58 IMPLEMENT_STANDARD_RTTIEXT(IGESBasic_GeneralModule,IGESData_GeneralModule)
60 // Each Module is attached to a Protocol : it must interpret Case Numbers
61 // (arguments <CN> of various methods) in accordance to values returned by
62 // the method TypeNumber from this Protocol
63 IGESBasic_GeneralModule::IGESBasic_GeneralModule () { }
66 void IGESBasic_GeneralModule::OwnSharedCase
67 (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
68 Interface_EntityIterator& iter) const
72 DeclareAndCast(IGESBasic_AssocGroupType,anent,ent);
73 if (anent.IsNull()) return;
74 IGESBasic_ToolAssocGroupType tool;
75 tool.OwnShared(anent,iter);
79 DeclareAndCast(IGESBasic_ExternalRefFile,anent,ent);
80 if (anent.IsNull()) return;
81 IGESBasic_ToolExternalRefFile tool;
82 tool.OwnShared(anent,iter);
86 DeclareAndCast(IGESBasic_ExternalRefFileIndex,anent,ent);
87 if (anent.IsNull()) return;
88 IGESBasic_ToolExternalRefFileIndex tool;
89 tool.OwnShared(anent,iter);
93 DeclareAndCast(IGESBasic_ExternalRefFileName,anent,ent);
94 if (anent.IsNull()) return;
95 IGESBasic_ToolExternalRefFileName tool;
96 tool.OwnShared(anent,iter);
100 DeclareAndCast(IGESBasic_ExternalRefLibName,anent,ent);
101 if (anent.IsNull()) return;
102 IGESBasic_ToolExternalRefLibName tool;
103 tool.OwnShared(anent,iter);
107 DeclareAndCast(IGESBasic_ExternalRefName,anent,ent);
108 if (anent.IsNull()) return;
109 IGESBasic_ToolExternalRefName tool;
110 tool.OwnShared(anent,iter);
114 DeclareAndCast(IGESBasic_ExternalReferenceFile,anent,ent);
115 if (anent.IsNull()) return;
116 IGESBasic_ToolExternalReferenceFile tool;
117 tool.OwnShared(anent,iter);
121 DeclareAndCast(IGESBasic_Group,anent,ent);
122 if (anent.IsNull()) return;
123 IGESBasic_ToolGroup tool;
124 tool.OwnShared(anent,iter);
128 DeclareAndCast(IGESBasic_GroupWithoutBackP,anent,ent);
129 if (anent.IsNull()) return;
130 IGESBasic_ToolGroupWithoutBackP tool;
131 tool.OwnShared(anent,iter);
135 DeclareAndCast(IGESBasic_Hierarchy,anent,ent);
136 if (anent.IsNull()) return;
137 IGESBasic_ToolHierarchy tool;
138 tool.OwnShared(anent,iter);
142 DeclareAndCast(IGESBasic_Name,anent,ent);
143 if (anent.IsNull()) return;
144 IGESBasic_ToolName tool;
145 tool.OwnShared(anent,iter);
149 DeclareAndCast(IGESBasic_OrderedGroup,anent,ent);
150 if (anent.IsNull()) return;
151 IGESBasic_ToolOrderedGroup tool;
152 tool.OwnShared(anent,iter);
156 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,anent,ent);
157 if (anent.IsNull()) return;
158 IGESBasic_ToolOrderedGroupWithoutBackP tool;
159 tool.OwnShared(anent,iter);
163 DeclareAndCast(IGESBasic_SingleParent,anent,ent);
164 if (anent.IsNull()) return;
165 IGESBasic_ToolSingleParent tool;
166 tool.OwnShared(anent,iter);
170 DeclareAndCast(IGESBasic_SingularSubfigure,anent,ent);
171 if (anent.IsNull()) return;
172 IGESBasic_ToolSingularSubfigure tool;
173 tool.OwnShared(anent,iter);
177 DeclareAndCast(IGESBasic_SubfigureDef,anent,ent);
178 if (anent.IsNull()) return;
179 IGESBasic_ToolSubfigureDef tool;
180 tool.OwnShared(anent,iter);
188 IGESData_DirChecker IGESBasic_GeneralModule::DirChecker
189 (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent) const
193 DeclareAndCast(IGESBasic_AssocGroupType,anent,ent);
194 if (anent.IsNull()) break;
195 IGESBasic_ToolAssocGroupType tool;
196 return tool.DirChecker(anent);
199 DeclareAndCast(IGESBasic_ExternalRefFile,anent,ent);
200 if (anent.IsNull()) break;
201 IGESBasic_ToolExternalRefFile tool;
202 return tool.DirChecker(anent);
205 DeclareAndCast(IGESBasic_ExternalRefFileIndex,anent,ent);
206 if (anent.IsNull()) break;
207 IGESBasic_ToolExternalRefFileIndex tool;
208 return tool.DirChecker(anent);
211 DeclareAndCast(IGESBasic_ExternalRefFileName,anent,ent);
212 if (anent.IsNull()) break;
213 IGESBasic_ToolExternalRefFileName tool;
214 return tool.DirChecker(anent);
217 DeclareAndCast(IGESBasic_ExternalRefLibName,anent,ent);
218 if (anent.IsNull()) break;
219 IGESBasic_ToolExternalRefLibName tool;
220 return tool.DirChecker(anent);
223 DeclareAndCast(IGESBasic_ExternalRefName,anent,ent);
224 if (anent.IsNull()) break;
225 IGESBasic_ToolExternalRefName tool;
226 return tool.DirChecker(anent);
229 DeclareAndCast(IGESBasic_ExternalReferenceFile,anent,ent);
230 if (anent.IsNull()) break;
231 IGESBasic_ToolExternalReferenceFile tool;
232 return tool.DirChecker(anent);
235 DeclareAndCast(IGESBasic_Group,anent,ent);
236 if (anent.IsNull()) break;
237 IGESBasic_ToolGroup tool;
238 return tool.DirChecker(anent);
241 DeclareAndCast(IGESBasic_GroupWithoutBackP,anent,ent);
242 if (anent.IsNull()) break;
243 IGESBasic_ToolGroupWithoutBackP tool;
244 return tool.DirChecker(anent);
247 DeclareAndCast(IGESBasic_Hierarchy,anent,ent);
248 if (anent.IsNull()) break;
249 IGESBasic_ToolHierarchy tool;
250 return tool.DirChecker(anent);
253 DeclareAndCast(IGESBasic_Name,anent,ent);
254 if (anent.IsNull()) break;
255 IGESBasic_ToolName tool;
256 return tool.DirChecker(anent);
259 DeclareAndCast(IGESBasic_OrderedGroup,anent,ent);
260 if (anent.IsNull()) break;
261 IGESBasic_ToolOrderedGroup tool;
262 return tool.DirChecker(anent);
265 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,anent,ent);
266 if (anent.IsNull()) break;
267 IGESBasic_ToolOrderedGroupWithoutBackP tool;
268 return tool.DirChecker(anent);
271 DeclareAndCast(IGESBasic_SingleParent,anent,ent);
272 if (anent.IsNull()) break;
273 IGESBasic_ToolSingleParent tool;
274 return tool.DirChecker(anent);
277 DeclareAndCast(IGESBasic_SingularSubfigure,anent,ent);
278 if (anent.IsNull()) break;
279 IGESBasic_ToolSingularSubfigure tool;
280 return tool.DirChecker(anent);
283 DeclareAndCast(IGESBasic_SubfigureDef,anent,ent);
284 if (anent.IsNull()) break;
285 IGESBasic_ToolSubfigureDef tool;
286 return tool.DirChecker(anent);
290 return IGESData_DirChecker(); // by default, no specific criterium
294 void IGESBasic_GeneralModule::OwnCheckCase
295 (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
296 const Interface_ShareTool& shares, Handle(Interface_Check)& ach) const
300 DeclareAndCast(IGESBasic_AssocGroupType,anent,ent);
301 if (anent.IsNull()) return;
302 IGESBasic_ToolAssocGroupType tool;
303 tool.OwnCheck(anent,shares,ach);
307 DeclareAndCast(IGESBasic_ExternalRefFile,anent,ent);
308 if (anent.IsNull()) return;
309 IGESBasic_ToolExternalRefFile tool;
310 tool.OwnCheck(anent,shares,ach);
314 DeclareAndCast(IGESBasic_ExternalRefFileIndex,anent,ent);
315 if (anent.IsNull()) return;
316 IGESBasic_ToolExternalRefFileIndex tool;
317 tool.OwnCheck(anent,shares,ach);
321 DeclareAndCast(IGESBasic_ExternalRefFileName,anent,ent);
322 if (anent.IsNull()) return;
323 IGESBasic_ToolExternalRefFileName tool;
324 tool.OwnCheck(anent,shares,ach);
328 DeclareAndCast(IGESBasic_ExternalRefLibName,anent,ent);
329 if (anent.IsNull()) return;
330 IGESBasic_ToolExternalRefLibName tool;
331 tool.OwnCheck(anent,shares,ach);
335 DeclareAndCast(IGESBasic_ExternalRefName,anent,ent);
336 if (anent.IsNull()) return;
337 IGESBasic_ToolExternalRefName tool;
338 tool.OwnCheck(anent,shares,ach);
342 DeclareAndCast(IGESBasic_ExternalReferenceFile,anent,ent);
343 if (anent.IsNull()) return;
344 IGESBasic_ToolExternalReferenceFile tool;
345 tool.OwnCheck(anent,shares,ach);
349 DeclareAndCast(IGESBasic_Group,anent,ent);
350 if (anent.IsNull()) return;
351 IGESBasic_ToolGroup tool;
352 tool.OwnCheck(anent,shares,ach);
356 DeclareAndCast(IGESBasic_GroupWithoutBackP,anent,ent);
357 if (anent.IsNull()) return;
358 IGESBasic_ToolGroupWithoutBackP tool;
359 tool.OwnCheck(anent,shares,ach);
363 DeclareAndCast(IGESBasic_Hierarchy,anent,ent);
364 if (anent.IsNull()) return;
365 IGESBasic_ToolHierarchy tool;
366 tool.OwnCheck(anent,shares,ach);
370 DeclareAndCast(IGESBasic_Name,anent,ent);
371 if (anent.IsNull()) return;
372 IGESBasic_ToolName tool;
373 tool.OwnCheck(anent,shares,ach);
377 DeclareAndCast(IGESBasic_OrderedGroup,anent,ent);
378 if (anent.IsNull()) return;
379 IGESBasic_ToolOrderedGroup tool;
380 tool.OwnCheck(anent,shares,ach);
384 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,anent,ent);
385 if (anent.IsNull()) return;
386 IGESBasic_ToolOrderedGroupWithoutBackP tool;
387 tool.OwnCheck(anent,shares,ach);
391 DeclareAndCast(IGESBasic_SingleParent,anent,ent);
392 if (anent.IsNull()) return;
393 IGESBasic_ToolSingleParent tool;
394 tool.OwnCheck(anent,shares,ach);
398 DeclareAndCast(IGESBasic_SingularSubfigure,anent,ent);
399 if (anent.IsNull()) return;
400 IGESBasic_ToolSingularSubfigure tool;
401 tool.OwnCheck(anent,shares,ach);
405 DeclareAndCast(IGESBasic_SubfigureDef,anent,ent);
406 if (anent.IsNull()) return;
407 IGESBasic_ToolSubfigureDef tool;
408 tool.OwnCheck(anent,shares,ach);
416 Standard_Boolean IGESBasic_GeneralModule::NewVoid
417 (const Standard_Integer CN, Handle(Standard_Transient)& ent) const
420 case 1 : ent = new IGESBasic_AssocGroupType; break;
421 case 2 : ent = new IGESBasic_ExternalRefFile; break;
422 case 3 : ent = new IGESBasic_ExternalRefFileIndex; break;
423 case 4 : ent = new IGESBasic_ExternalRefFileName; break;
424 case 5 : ent = new IGESBasic_ExternalRefLibName; break;
425 case 6 : ent = new IGESBasic_ExternalRefName; break;
426 case 7 : ent = new IGESBasic_ExternalReferenceFile; break;
427 case 8 : ent = new IGESBasic_Group; break;
428 case 9 : ent = new IGESBasic_GroupWithoutBackP; break;
429 case 10 : ent = new IGESBasic_Hierarchy; break;
430 case 11 : ent = new IGESBasic_Name; break;
431 case 12 : ent = new IGESBasic_OrderedGroup; break;
432 case 13 : ent = new IGESBasic_OrderedGroupWithoutBackP; break;
433 case 14 : ent = new IGESBasic_SingleParent; break;
434 case 15 : ent = new IGESBasic_SingularSubfigure; break;
435 case 16 : ent = new IGESBasic_SubfigureDef; break;
436 default : return Standard_False; // by default, Failure on Recognize
438 return Standard_True;
442 void IGESBasic_GeneralModule::OwnCopyCase
443 (const Standard_Integer CN,
444 const Handle(IGESData_IGESEntity)& entfrom,
445 const Handle(IGESData_IGESEntity)& entto,
446 Interface_CopyTool& TC) const
450 DeclareAndCast(IGESBasic_AssocGroupType,enfr,entfrom);
451 DeclareAndCast(IGESBasic_AssocGroupType,ento,entto);
452 IGESBasic_ToolAssocGroupType tool;
453 tool.OwnCopy(enfr,ento,TC);
457 DeclareAndCast(IGESBasic_ExternalRefFile,enfr,entfrom);
458 DeclareAndCast(IGESBasic_ExternalRefFile,ento,entto);
459 IGESBasic_ToolExternalRefFile tool;
460 tool.OwnCopy(enfr,ento,TC);
464 DeclareAndCast(IGESBasic_ExternalRefFileIndex,enfr,entfrom);
465 DeclareAndCast(IGESBasic_ExternalRefFileIndex,ento,entto);
466 IGESBasic_ToolExternalRefFileIndex tool;
467 tool.OwnCopy(enfr,ento,TC);
471 DeclareAndCast(IGESBasic_ExternalRefFileName,enfr,entfrom);
472 DeclareAndCast(IGESBasic_ExternalRefFileName,ento,entto);
473 IGESBasic_ToolExternalRefFileName tool;
474 tool.OwnCopy(enfr,ento,TC);
478 DeclareAndCast(IGESBasic_ExternalRefLibName,enfr,entfrom);
479 DeclareAndCast(IGESBasic_ExternalRefLibName,ento,entto);
480 IGESBasic_ToolExternalRefLibName tool;
481 tool.OwnCopy(enfr,ento,TC);
485 DeclareAndCast(IGESBasic_ExternalRefName,enfr,entfrom);
486 DeclareAndCast(IGESBasic_ExternalRefName,ento,entto);
487 IGESBasic_ToolExternalRefName tool;
488 tool.OwnCopy(enfr,ento,TC);
492 DeclareAndCast(IGESBasic_ExternalReferenceFile,enfr,entfrom);
493 DeclareAndCast(IGESBasic_ExternalReferenceFile,ento,entto);
494 IGESBasic_ToolExternalReferenceFile tool;
495 tool.OwnCopy(enfr,ento,TC);
499 DeclareAndCast(IGESBasic_Group,enfr,entfrom);
500 DeclareAndCast(IGESBasic_Group,ento,entto);
501 IGESBasic_ToolGroup tool;
502 tool.OwnCopy(enfr,ento,TC);
506 DeclareAndCast(IGESBasic_GroupWithoutBackP,enfr,entfrom);
507 DeclareAndCast(IGESBasic_GroupWithoutBackP,ento,entto);
508 IGESBasic_ToolGroupWithoutBackP tool;
509 tool.OwnCopy(enfr,ento,TC);
513 DeclareAndCast(IGESBasic_Hierarchy,enfr,entfrom);
514 DeclareAndCast(IGESBasic_Hierarchy,ento,entto);
515 IGESBasic_ToolHierarchy tool;
516 tool.OwnCopy(enfr,ento,TC);
520 DeclareAndCast(IGESBasic_Name,enfr,entfrom);
521 DeclareAndCast(IGESBasic_Name,ento,entto);
522 IGESBasic_ToolName tool;
523 tool.OwnCopy(enfr,ento,TC);
527 DeclareAndCast(IGESBasic_OrderedGroup,enfr,entfrom);
528 DeclareAndCast(IGESBasic_OrderedGroup,ento,entto);
529 IGESBasic_ToolOrderedGroup tool;
530 tool.OwnCopy(enfr,ento,TC);
534 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,enfr,entfrom);
535 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,ento,entto);
536 IGESBasic_ToolOrderedGroupWithoutBackP tool;
537 tool.OwnCopy(enfr,ento,TC);
541 DeclareAndCast(IGESBasic_SingleParent,enfr,entfrom);
542 DeclareAndCast(IGESBasic_SingleParent,ento,entto);
543 IGESBasic_ToolSingleParent tool;
544 tool.OwnCopy(enfr,ento,TC);
548 DeclareAndCast(IGESBasic_SingularSubfigure,enfr,entfrom);
549 DeclareAndCast(IGESBasic_SingularSubfigure,ento,entto);
550 IGESBasic_ToolSingularSubfigure tool;
551 tool.OwnCopy(enfr,ento,TC);
555 DeclareAndCast(IGESBasic_SubfigureDef,enfr,entfrom);
556 DeclareAndCast(IGESBasic_SubfigureDef,ento,entto);
557 IGESBasic_ToolSubfigureDef tool;
558 tool.OwnCopy(enfr,ento,TC);
565 Standard_Integer IGESBasic_GeneralModule::CategoryNumber
566 (const Standard_Integer CN, const Handle(Standard_Transient)& ,
567 const Interface_ShareTool& ) const
569 if (CN == 10 || CN == 11) return Interface_Category::Number("Auxiliary");
570 if (CN >= 2 && CN <= 6) return Interface_Category::Number("Description");
571 return Interface_Category::Number("Structure");