0031687: Draw Harness, ViewerTest - extend command vrenderparams with option updating...
[occt.git] / src / IGESBasic / IGESBasic_GeneralModule.cxx
CommitLineData
973c2be1 1// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 2//
973c2be1 3// This file is part of Open CASCADE Technology software library.
b311480e 4//
d5f74e42 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
973c2be1 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.
b311480e 10//
973c2be1 11// Alternatively, this file may be used under the terms of Open CASCADE
12// commercial license or contractual agreement.
b311480e 13
7fd59977 14
15#include <IGESBasic_AssocGroupType.hxx>
42cf5bc1 16#include <IGESBasic_ExternalReferenceFile.hxx>
7fd59977 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>
42cf5bc1 22#include <IGESBasic_GeneralModule.hxx>
7fd59977 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>
7fd59977 32#include <IGESBasic_ToolAssocGroupType.hxx>
42cf5bc1 33#include <IGESBasic_ToolExternalReferenceFile.hxx>
7fd59977 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>
7fd59977 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>
42cf5bc1 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>
7fd59977 58
92efcf78 59IMPLEMENT_STANDARD_RTTIEXT(IGESBasic_GeneralModule,IGESData_GeneralModule)
60
7fd59977 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
b311480e 64IGESBasic_GeneralModule::IGESBasic_GeneralModule () { }
7fd59977 65
66
67 void IGESBasic_GeneralModule::OwnSharedCase
68 (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
69 Interface_EntityIterator& iter) const
70{
71 switch (CN) {
72 case 1 : {
73 DeclareAndCast(IGESBasic_AssocGroupType,anent,ent);
74 if (anent.IsNull()) return;
75 IGESBasic_ToolAssocGroupType tool;
76 tool.OwnShared(anent,iter);
77 }
78 break;
79 case 2 : {
80 DeclareAndCast(IGESBasic_ExternalRefFile,anent,ent);
81 if (anent.IsNull()) return;
82 IGESBasic_ToolExternalRefFile tool;
83 tool.OwnShared(anent,iter);
84 }
85 break;
86 case 3 : {
87 DeclareAndCast(IGESBasic_ExternalRefFileIndex,anent,ent);
88 if (anent.IsNull()) return;
89 IGESBasic_ToolExternalRefFileIndex tool;
90 tool.OwnShared(anent,iter);
91 }
92 break;
93 case 4 : {
94 DeclareAndCast(IGESBasic_ExternalRefFileName,anent,ent);
95 if (anent.IsNull()) return;
96 IGESBasic_ToolExternalRefFileName tool;
97 tool.OwnShared(anent,iter);
98 }
99 break;
100 case 5 : {
101 DeclareAndCast(IGESBasic_ExternalRefLibName,anent,ent);
102 if (anent.IsNull()) return;
103 IGESBasic_ToolExternalRefLibName tool;
104 tool.OwnShared(anent,iter);
105 }
106 break;
107 case 6 : {
108 DeclareAndCast(IGESBasic_ExternalRefName,anent,ent);
109 if (anent.IsNull()) return;
110 IGESBasic_ToolExternalRefName tool;
111 tool.OwnShared(anent,iter);
112 }
113 break;
114 case 7 : {
115 DeclareAndCast(IGESBasic_ExternalReferenceFile,anent,ent);
116 if (anent.IsNull()) return;
117 IGESBasic_ToolExternalReferenceFile tool;
118 tool.OwnShared(anent,iter);
119 }
120 break;
121 case 8 : {
122 DeclareAndCast(IGESBasic_Group,anent,ent);
123 if (anent.IsNull()) return;
124 IGESBasic_ToolGroup tool;
125 tool.OwnShared(anent,iter);
126 }
127 break;
128 case 9 : {
129 DeclareAndCast(IGESBasic_GroupWithoutBackP,anent,ent);
130 if (anent.IsNull()) return;
131 IGESBasic_ToolGroupWithoutBackP tool;
132 tool.OwnShared(anent,iter);
133 }
134 break;
135 case 10 : {
136 DeclareAndCast(IGESBasic_Hierarchy,anent,ent);
137 if (anent.IsNull()) return;
138 IGESBasic_ToolHierarchy tool;
139 tool.OwnShared(anent,iter);
140 }
141 break;
142 case 11 : {
143 DeclareAndCast(IGESBasic_Name,anent,ent);
144 if (anent.IsNull()) return;
145 IGESBasic_ToolName tool;
146 tool.OwnShared(anent,iter);
147 }
148 break;
149 case 12 : {
150 DeclareAndCast(IGESBasic_OrderedGroup,anent,ent);
151 if (anent.IsNull()) return;
152 IGESBasic_ToolOrderedGroup tool;
153 tool.OwnShared(anent,iter);
154 }
155 break;
156 case 13 : {
157 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,anent,ent);
158 if (anent.IsNull()) return;
159 IGESBasic_ToolOrderedGroupWithoutBackP tool;
160 tool.OwnShared(anent,iter);
161 }
162 break;
163 case 14 : {
164 DeclareAndCast(IGESBasic_SingleParent,anent,ent);
165 if (anent.IsNull()) return;
166 IGESBasic_ToolSingleParent tool;
167 tool.OwnShared(anent,iter);
168 }
169 break;
170 case 15 : {
171 DeclareAndCast(IGESBasic_SingularSubfigure,anent,ent);
172 if (anent.IsNull()) return;
173 IGESBasic_ToolSingularSubfigure tool;
174 tool.OwnShared(anent,iter);
175 }
176 break;
177 case 16 : {
178 DeclareAndCast(IGESBasic_SubfigureDef,anent,ent);
179 if (anent.IsNull()) return;
180 IGESBasic_ToolSubfigureDef tool;
181 tool.OwnShared(anent,iter);
182 }
183 break;
184 default : break;
185 }
186}
187
188
189 IGESData_DirChecker IGESBasic_GeneralModule::DirChecker
190 (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent) const
191{
192 switch (CN) {
193 case 1 : {
194 DeclareAndCast(IGESBasic_AssocGroupType,anent,ent);
195 if (anent.IsNull()) break;
196 IGESBasic_ToolAssocGroupType tool;
197 return tool.DirChecker(anent);
198 }
199 case 2 : {
200 DeclareAndCast(IGESBasic_ExternalRefFile,anent,ent);
201 if (anent.IsNull()) break;
202 IGESBasic_ToolExternalRefFile tool;
203 return tool.DirChecker(anent);
204 }
205 case 3 : {
206 DeclareAndCast(IGESBasic_ExternalRefFileIndex,anent,ent);
207 if (anent.IsNull()) break;
208 IGESBasic_ToolExternalRefFileIndex tool;
209 return tool.DirChecker(anent);
210 }
211 case 4 : {
212 DeclareAndCast(IGESBasic_ExternalRefFileName,anent,ent);
213 if (anent.IsNull()) break;
214 IGESBasic_ToolExternalRefFileName tool;
215 return tool.DirChecker(anent);
216 }
217 case 5 : {
218 DeclareAndCast(IGESBasic_ExternalRefLibName,anent,ent);
219 if (anent.IsNull()) break;
220 IGESBasic_ToolExternalRefLibName tool;
221 return tool.DirChecker(anent);
222 }
223 case 6 : {
224 DeclareAndCast(IGESBasic_ExternalRefName,anent,ent);
225 if (anent.IsNull()) break;
226 IGESBasic_ToolExternalRefName tool;
227 return tool.DirChecker(anent);
228 }
229 case 7 : {
230 DeclareAndCast(IGESBasic_ExternalReferenceFile,anent,ent);
231 if (anent.IsNull()) break;
232 IGESBasic_ToolExternalReferenceFile tool;
233 return tool.DirChecker(anent);
234 }
235 case 8 : {
236 DeclareAndCast(IGESBasic_Group,anent,ent);
237 if (anent.IsNull()) break;
238 IGESBasic_ToolGroup tool;
239 return tool.DirChecker(anent);
240 }
241 case 9 : {
242 DeclareAndCast(IGESBasic_GroupWithoutBackP,anent,ent);
243 if (anent.IsNull()) break;
244 IGESBasic_ToolGroupWithoutBackP tool;
245 return tool.DirChecker(anent);
246 }
247 case 10 : {
248 DeclareAndCast(IGESBasic_Hierarchy,anent,ent);
249 if (anent.IsNull()) break;
250 IGESBasic_ToolHierarchy tool;
251 return tool.DirChecker(anent);
252 }
253 case 11 : {
254 DeclareAndCast(IGESBasic_Name,anent,ent);
255 if (anent.IsNull()) break;
256 IGESBasic_ToolName tool;
257 return tool.DirChecker(anent);
258 }
259 case 12 : {
260 DeclareAndCast(IGESBasic_OrderedGroup,anent,ent);
261 if (anent.IsNull()) break;
262 IGESBasic_ToolOrderedGroup tool;
263 return tool.DirChecker(anent);
264 }
265 case 13 : {
266 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,anent,ent);
267 if (anent.IsNull()) break;
268 IGESBasic_ToolOrderedGroupWithoutBackP tool;
269 return tool.DirChecker(anent);
270 }
271 case 14 : {
272 DeclareAndCast(IGESBasic_SingleParent,anent,ent);
273 if (anent.IsNull()) break;
274 IGESBasic_ToolSingleParent tool;
275 return tool.DirChecker(anent);
276 }
277 case 15 : {
278 DeclareAndCast(IGESBasic_SingularSubfigure,anent,ent);
279 if (anent.IsNull()) break;
280 IGESBasic_ToolSingularSubfigure tool;
281 return tool.DirChecker(anent);
282 }
283 case 16 : {
284 DeclareAndCast(IGESBasic_SubfigureDef,anent,ent);
285 if (anent.IsNull()) break;
286 IGESBasic_ToolSubfigureDef tool;
287 return tool.DirChecker(anent);
288 }
289 default : break;
290 }
291 return IGESData_DirChecker(); // by default, no specific criterium
292}
293
294
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
298{
299 switch (CN) {
300 case 1 : {
301 DeclareAndCast(IGESBasic_AssocGroupType,anent,ent);
302 if (anent.IsNull()) return;
303 IGESBasic_ToolAssocGroupType tool;
304 tool.OwnCheck(anent,shares,ach);
305 }
306 break;
307 case 2 : {
308 DeclareAndCast(IGESBasic_ExternalRefFile,anent,ent);
309 if (anent.IsNull()) return;
310 IGESBasic_ToolExternalRefFile tool;
311 tool.OwnCheck(anent,shares,ach);
312 }
313 break;
314 case 3 : {
315 DeclareAndCast(IGESBasic_ExternalRefFileIndex,anent,ent);
316 if (anent.IsNull()) return;
317 IGESBasic_ToolExternalRefFileIndex tool;
318 tool.OwnCheck(anent,shares,ach);
319 }
320 break;
321 case 4 : {
322 DeclareAndCast(IGESBasic_ExternalRefFileName,anent,ent);
323 if (anent.IsNull()) return;
324 IGESBasic_ToolExternalRefFileName tool;
325 tool.OwnCheck(anent,shares,ach);
326 }
327 break;
328 case 5 : {
329 DeclareAndCast(IGESBasic_ExternalRefLibName,anent,ent);
330 if (anent.IsNull()) return;
331 IGESBasic_ToolExternalRefLibName tool;
332 tool.OwnCheck(anent,shares,ach);
333 }
334 break;
335 case 6 : {
336 DeclareAndCast(IGESBasic_ExternalRefName,anent,ent);
337 if (anent.IsNull()) return;
338 IGESBasic_ToolExternalRefName tool;
339 tool.OwnCheck(anent,shares,ach);
340 }
341 break;
342 case 7 : {
343 DeclareAndCast(IGESBasic_ExternalReferenceFile,anent,ent);
344 if (anent.IsNull()) return;
345 IGESBasic_ToolExternalReferenceFile tool;
346 tool.OwnCheck(anent,shares,ach);
347 }
348 break;
349 case 8 : {
350 DeclareAndCast(IGESBasic_Group,anent,ent);
351 if (anent.IsNull()) return;
352 IGESBasic_ToolGroup tool;
353 tool.OwnCheck(anent,shares,ach);
354 }
355 break;
356 case 9 : {
357 DeclareAndCast(IGESBasic_GroupWithoutBackP,anent,ent);
358 if (anent.IsNull()) return;
359 IGESBasic_ToolGroupWithoutBackP tool;
360 tool.OwnCheck(anent,shares,ach);
361 }
362 break;
363 case 10 : {
364 DeclareAndCast(IGESBasic_Hierarchy,anent,ent);
365 if (anent.IsNull()) return;
366 IGESBasic_ToolHierarchy tool;
367 tool.OwnCheck(anent,shares,ach);
368 }
369 break;
370 case 11 : {
371 DeclareAndCast(IGESBasic_Name,anent,ent);
372 if (anent.IsNull()) return;
373 IGESBasic_ToolName tool;
374 tool.OwnCheck(anent,shares,ach);
375 }
376 break;
377 case 12 : {
378 DeclareAndCast(IGESBasic_OrderedGroup,anent,ent);
379 if (anent.IsNull()) return;
380 IGESBasic_ToolOrderedGroup tool;
381 tool.OwnCheck(anent,shares,ach);
382 }
383 break;
384 case 13 : {
385 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,anent,ent);
386 if (anent.IsNull()) return;
387 IGESBasic_ToolOrderedGroupWithoutBackP tool;
388 tool.OwnCheck(anent,shares,ach);
389 }
390 break;
391 case 14 : {
392 DeclareAndCast(IGESBasic_SingleParent,anent,ent);
393 if (anent.IsNull()) return;
394 IGESBasic_ToolSingleParent tool;
395 tool.OwnCheck(anent,shares,ach);
396 }
397 break;
398 case 15 : {
399 DeclareAndCast(IGESBasic_SingularSubfigure,anent,ent);
400 if (anent.IsNull()) return;
401 IGESBasic_ToolSingularSubfigure tool;
402 tool.OwnCheck(anent,shares,ach);
403 }
404 break;
405 case 16 : {
406 DeclareAndCast(IGESBasic_SubfigureDef,anent,ent);
407 if (anent.IsNull()) return;
408 IGESBasic_ToolSubfigureDef tool;
409 tool.OwnCheck(anent,shares,ach);
410 }
411 break;
412 default : break;
413 }
414}
415
416
417 Standard_Boolean IGESBasic_GeneralModule::NewVoid
418 (const Standard_Integer CN, Handle(Standard_Transient)& ent) const
419{
420 switch (CN) {
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
438 }
439 return Standard_True;
440}
441
442
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
448{
449 switch (CN) {
450 case 1 : {
451 DeclareAndCast(IGESBasic_AssocGroupType,enfr,entfrom);
452 DeclareAndCast(IGESBasic_AssocGroupType,ento,entto);
453 IGESBasic_ToolAssocGroupType tool;
454 tool.OwnCopy(enfr,ento,TC);
455 }
456 break;
457 case 2 : {
458 DeclareAndCast(IGESBasic_ExternalRefFile,enfr,entfrom);
459 DeclareAndCast(IGESBasic_ExternalRefFile,ento,entto);
460 IGESBasic_ToolExternalRefFile tool;
461 tool.OwnCopy(enfr,ento,TC);
462 }
463 break;
464 case 3 : {
465 DeclareAndCast(IGESBasic_ExternalRefFileIndex,enfr,entfrom);
466 DeclareAndCast(IGESBasic_ExternalRefFileIndex,ento,entto);
467 IGESBasic_ToolExternalRefFileIndex tool;
468 tool.OwnCopy(enfr,ento,TC);
469 }
470 break;
471 case 4 : {
472 DeclareAndCast(IGESBasic_ExternalRefFileName,enfr,entfrom);
473 DeclareAndCast(IGESBasic_ExternalRefFileName,ento,entto);
474 IGESBasic_ToolExternalRefFileName tool;
475 tool.OwnCopy(enfr,ento,TC);
476 }
477 break;
478 case 5 : {
479 DeclareAndCast(IGESBasic_ExternalRefLibName,enfr,entfrom);
480 DeclareAndCast(IGESBasic_ExternalRefLibName,ento,entto);
481 IGESBasic_ToolExternalRefLibName tool;
482 tool.OwnCopy(enfr,ento,TC);
483 }
484 break;
485 case 6 : {
486 DeclareAndCast(IGESBasic_ExternalRefName,enfr,entfrom);
487 DeclareAndCast(IGESBasic_ExternalRefName,ento,entto);
488 IGESBasic_ToolExternalRefName tool;
489 tool.OwnCopy(enfr,ento,TC);
490 }
491 break;
492 case 7 : {
493 DeclareAndCast(IGESBasic_ExternalReferenceFile,enfr,entfrom);
494 DeclareAndCast(IGESBasic_ExternalReferenceFile,ento,entto);
495 IGESBasic_ToolExternalReferenceFile tool;
496 tool.OwnCopy(enfr,ento,TC);
497 }
498 break;
499 case 8 : {
500 DeclareAndCast(IGESBasic_Group,enfr,entfrom);
501 DeclareAndCast(IGESBasic_Group,ento,entto);
502 IGESBasic_ToolGroup tool;
503 tool.OwnCopy(enfr,ento,TC);
504 }
505 break;
506 case 9 : {
507 DeclareAndCast(IGESBasic_GroupWithoutBackP,enfr,entfrom);
508 DeclareAndCast(IGESBasic_GroupWithoutBackP,ento,entto);
509 IGESBasic_ToolGroupWithoutBackP tool;
510 tool.OwnCopy(enfr,ento,TC);
511 }
512 break;
513 case 10 : {
514 DeclareAndCast(IGESBasic_Hierarchy,enfr,entfrom);
515 DeclareAndCast(IGESBasic_Hierarchy,ento,entto);
516 IGESBasic_ToolHierarchy tool;
517 tool.OwnCopy(enfr,ento,TC);
518 }
519 break;
520 case 11 : {
521 DeclareAndCast(IGESBasic_Name,enfr,entfrom);
522 DeclareAndCast(IGESBasic_Name,ento,entto);
523 IGESBasic_ToolName tool;
524 tool.OwnCopy(enfr,ento,TC);
525 }
526 break;
527 case 12 : {
528 DeclareAndCast(IGESBasic_OrderedGroup,enfr,entfrom);
529 DeclareAndCast(IGESBasic_OrderedGroup,ento,entto);
530 IGESBasic_ToolOrderedGroup tool;
531 tool.OwnCopy(enfr,ento,TC);
532 }
533 break;
534 case 13 : {
535 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,enfr,entfrom);
536 DeclareAndCast(IGESBasic_OrderedGroupWithoutBackP,ento,entto);
537 IGESBasic_ToolOrderedGroupWithoutBackP tool;
538 tool.OwnCopy(enfr,ento,TC);
539 }
540 break;
541 case 14 : {
542 DeclareAndCast(IGESBasic_SingleParent,enfr,entfrom);
543 DeclareAndCast(IGESBasic_SingleParent,ento,entto);
544 IGESBasic_ToolSingleParent tool;
545 tool.OwnCopy(enfr,ento,TC);
546 }
547 break;
548 case 15 : {
549 DeclareAndCast(IGESBasic_SingularSubfigure,enfr,entfrom);
550 DeclareAndCast(IGESBasic_SingularSubfigure,ento,entto);
551 IGESBasic_ToolSingularSubfigure tool;
552 tool.OwnCopy(enfr,ento,TC);
553 }
554 break;
555 case 16 : {
556 DeclareAndCast(IGESBasic_SubfigureDef,enfr,entfrom);
557 DeclareAndCast(IGESBasic_SubfigureDef,ento,entto);
558 IGESBasic_ToolSubfigureDef tool;
559 tool.OwnCopy(enfr,ento,TC);
560 }
561 break;
562 default : break;
563 }
564}
565
566 Standard_Integer IGESBasic_GeneralModule::CategoryNumber
567 (const Standard_Integer CN, const Handle(Standard_Transient)& ,
568 const Interface_ShareTool& ) const
569{
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");
573}