1 #include <StepData_ECDescr.ixx>
2 #include <TCollection_AsciiString.hxx>
3 #include <StepData_Plex.hxx>
5 StepData_ECDescr::StepData_ECDescr () { }
7 void StepData_ECDescr::Add (const Handle(StepData_ESDescr)& member)
9 if (member.IsNull()) return;
10 Standard_CString name = member->TypeName();
11 TCollection_AsciiString nam (name);
12 for (Standard_Integer i = NbMembers(); i > 0; i --) {
13 Handle(StepData_ESDescr) mem = Member(i);
14 if (nam.IsLess (mem->TypeName())) { thelist.InsertBefore (i,member); return; }
16 thelist.Append (member);
19 Standard_Integer StepData_ECDescr::NbMembers () const
20 { return thelist.Length(); }
22 Handle(StepData_ESDescr) StepData_ECDescr::Member
23 (const Standard_Integer num) const
24 { return Handle(StepData_ESDescr)::DownCast (thelist.Value(num)); }
26 Handle(TColStd_HSequenceOfAsciiString) StepData_ECDescr::TypeList () const
28 Handle(TColStd_HSequenceOfAsciiString) tl = new TColStd_HSequenceOfAsciiString();
29 Standard_Integer i, nb = NbMembers();
30 for (i = 1; i <= nb; i ++) {
31 TCollection_AsciiString nam (Member(i)->TypeName());
38 Standard_Boolean StepData_ECDescr::Matches (const Standard_CString name) const
40 Standard_Integer i, nb = NbMembers();
41 for (i = 1; i <= nb; i ++) {
42 Handle(StepData_ESDescr) member = Member(i);
43 if (member->Matches(name)) return Standard_True;
45 return Standard_False;
48 Standard_Boolean StepData_ECDescr::IsComplex () const
49 { return Standard_True; }
51 Handle(StepData_Described) StepData_ECDescr::NewEntity () const
53 Handle(StepData_Plex) ent = new StepData_Plex (this);
54 Standard_Integer i, nb = NbMembers();
55 for (i = 1; i <= nb; i ++) {
56 Handle(StepData_ESDescr) member = Member(i);
57 Handle(StepData_Simple) mem = Handle(StepData_Simple)::DownCast(member->NewEntity());
58 if (!mem.IsNull()) ent->Add (mem);