0024530: TKMesh - remove unused package IntPoly
[occt.git] / src / StepData / StepData_Plex.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
6 // under the terms of the GNU Lesser General Public 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 #include <StepData_Plex.ixx>
15 #include <TCollection_AsciiString.hxx>
16 #include <Interface_InterfaceMismatch.hxx>
17
18
19 static StepData_Field bid;
20
21     StepData_Plex::StepData_Plex  (const Handle(StepData_ECDescr)& descr)
22     : StepData_Described (descr)    {  }
23
24     void  StepData_Plex::Add (const Handle(StepData_Simple)& member)
25       {  themembers.Append (member);  }
26
27     Handle(StepData_ECDescr)  StepData_Plex::ECDescr () const
28       {  return Handle(StepData_ECDescr)::DownCast(Description());  }
29
30
31     Standard_Boolean  StepData_Plex::IsComplex () const
32       {  return Standard_True;  }
33
34     Standard_Boolean  StepData_Plex::Matches (const Standard_CString steptype) const
35 {
36   Standard_Integer i, nb = NbMembers();
37   for (i = 1; i <= nb; i ++) {
38     if (Member(i)->Matches (steptype)) return Standard_True;
39   }
40   return Standard_False;
41 }
42
43     Handle(StepData_Simple)  StepData_Plex::As  (const Standard_CString steptype) const
44 {
45   Handle(StepData_Simple) ent;
46   Standard_Integer i, nb = NbMembers();
47   for (i = 1; i <= nb; i ++) {
48     ent = Member(i);
49     if (ent->Matches(steptype)) return ent;
50   }
51   ent.Nullify();
52   return ent;
53 }
54
55     Standard_Boolean  StepData_Plex::HasField (const Standard_CString name) const
56 {
57   Standard_Integer i, nb = NbMembers();
58   for (i = 1; i <= nb; i ++) {
59     if (Member(i)->HasField (name)) return Standard_True;
60   }
61   return Standard_False;
62 }
63
64     const StepData_Field&  StepData_Plex::Field (const Standard_CString name) const
65 {
66   Handle(StepData_Simple) ent;
67   Standard_Integer i, nb = NbMembers();
68   for (i = 1; i <= nb; i ++) {
69     ent = Member(i);
70     if (ent->HasField (name)) return ent->Field (name);
71   }
72   Interface_InterfaceMismatch::Raise("StepData_Plex : Field");
73   return bid;  // pour faire plaisir au compilo
74 }
75
76
77     StepData_Field&  StepData_Plex::CField (const Standard_CString name)
78 {
79   Handle(StepData_Simple) ent;
80   Standard_Integer i, nb = NbMembers();
81   for (i = 1; i <= nb; i ++) {
82     ent = Member(i);
83     if (ent->HasField (name)) return ent->CField (name);
84   }
85   Interface_InterfaceMismatch::Raise("StepData_Plex : Field");
86   return bid;  // pour faire plaisir au compilo
87 }
88
89
90     Standard_Integer  StepData_Plex::NbMembers () const
91       {  return themembers.Length();  }
92
93     Handle(StepData_Simple)  StepData_Plex::Member (const Standard_Integer num) const
94       {  return Handle(StepData_Simple)::DownCast (themembers.Value(num));  }
95
96     Handle(TColStd_HSequenceOfAsciiString)  StepData_Plex::TypeList () const
97 {
98   Handle(TColStd_HSequenceOfAsciiString) tl = new TColStd_HSequenceOfAsciiString();
99   Standard_Integer i, nb = NbMembers();
100   for (i = 1; i <= nb; i ++) {
101     TCollection_AsciiString nam (Member(i)->StepType());
102     tl->Append (nam);
103   }
104   return tl;
105 }
106
107
108 void StepData_Plex::Check(Handle(Interface_Check)& ach) const
109 {
110   Standard_Integer i, nb = NbMembers();
111   for (i = 1; i <= nb; i ++) {
112     Handle(StepData_Simple) si = Member(i);
113     si->Check(ach);
114   }
115 }
116
117
118     void  StepData_Plex::Shared (Interface_EntityIterator& list) const
119 {
120   Standard_Integer i, nb = NbMembers();
121   for (i = 1; i <= nb; i ++) {
122     Handle(StepData_Simple) si = Member(i);
123     si->Shared (list);
124   }
125 }