0031501: Foundation Classes, Message_Printer - remove theToPutEndl argument -- prepar...
[occt.git] / src / IGESBasic / IGESBasic_ToolOrderedGroup.cxx
1 // Created by: CKY / Contract Toubro-Larsen
2 // Copyright (c) 1993-1999 Matra Datavision
3 // Copyright (c) 1999-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 //--------------------------------------------------------------------
17 //--------------------------------------------------------------------
18
19 #include <IGESBasic_OrderedGroup.hxx>
20 #include <IGESBasic_ToolOrderedGroup.hxx>
21 #include <IGESData_DirChecker.hxx>
22 #include <IGESData_Dump.hxx>
23 #include <IGESData_HArray1OfIGESEntity.hxx>
24 #include <IGESData_IGESDumper.hxx>
25 #include <IGESData_IGESEntity.hxx>
26 #include <IGESData_IGESReaderData.hxx>
27 #include <IGESData_IGESWriter.hxx>
28 #include <IGESData_ParamCursor.hxx>
29 #include <IGESData_ParamReader.hxx>
30 #include <Interface_Check.hxx>
31 #include <Interface_CopyTool.hxx>
32 #include <Interface_EntityIterator.hxx>
33 #include <Interface_Macros.hxx>
34 #include <Interface_ShareTool.hxx>
35 #include <Message_Messenger.hxx>
36 #include <Standard_DomainError.hxx>
37
38 IGESBasic_ToolOrderedGroup::IGESBasic_ToolOrderedGroup ()    {  }
39
40
41 void  IGESBasic_ToolOrderedGroup::ReadOwnParams
42   (const Handle(IGESBasic_OrderedGroup)& ent,
43    const Handle(IGESData_IGESReaderData)& IR, IGESData_ParamReader& PR) const
44 {
45   //Standard_Boolean st; //szv#4:S4163:12Mar99 not needed
46   Standard_Integer nbval = 0;
47   Handle(IGESData_HArray1OfIGESEntity)  EntArray;
48
49   if (PR.ReadInteger( PR.Current(), "Count of Entities", nbval)) { //szv#4:S4163:12Mar99 `st=` not needed
50     PR.ReadEnts (IR,PR.CurrentList(nbval),"Entities",EntArray); //szv#4:S4163:12Mar99 `st=` not needed
51 /*
52     EntArray = new IGESData_HArray1OfIGESEntity(1,nbval);
53     for (Standard_Integer i = 1;i <= nbval;i++)
54       {
55         Handle(IGESData_IGESEntity) anent;
56         st = PR.ReadEntity (IR,PR.Current(),"Element of the Group",anent,Standard_True);
57         if (st) EntArray->SetValue(i,anent);
58       }
59 */
60   }
61   DirChecker(ent).CheckTypeAndForm(PR.CCheck(),ent);
62   ent->Init(EntArray);
63 }
64
65 void  IGESBasic_ToolOrderedGroup::WriteOwnParams
66   (const Handle(IGESBasic_OrderedGroup)& ent, IGESData_IGESWriter& IW) const
67 {
68   Standard_Integer upper = ent->NbEntities();
69   IW.Send(upper);
70   for (Standard_Integer i = 1; i <= upper;i++)
71     IW.Send(ent->Entity(i));
72 }
73
74 void  IGESBasic_ToolOrderedGroup::OwnShared
75   (const Handle(IGESBasic_OrderedGroup)& ent, Interface_EntityIterator& iter) const
76 {
77   Standard_Integer upper = ent->NbEntities();
78   for (Standard_Integer i = 1; i <= upper;i++)
79     iter.GetOneItem(ent->Entity(i));
80 }
81
82 void  IGESBasic_ToolOrderedGroup::OwnCopy
83   (const Handle(IGESBasic_OrderedGroup)& another,
84    const Handle(IGESBasic_OrderedGroup)& ent, Interface_CopyTool& TC) const
85 {
86   Standard_Integer lower,upper;
87   lower = 1;
88   upper = another->NbEntities();
89   Handle(IGESData_HArray1OfIGESEntity)  EntArray = new
90     IGESData_HArray1OfIGESEntity(lower,upper);
91   for (Standard_Integer i = lower;i <= upper;i++)
92     {
93       DeclareAndCast
94         (IGESData_IGESEntity,myentity,TC.Transferred(another->Entity(i)));
95       EntArray->SetValue(i,myentity);
96     }
97   ent->Init(EntArray);
98 }
99
100 Standard_Boolean IGESBasic_ToolOrderedGroup::OwnCorrect
101   (const Handle(IGESBasic_OrderedGroup)& ent )  const
102 {
103   Standard_Integer ianul = 0;
104   Standard_Integer i, nbtrue = 0, nb = ent->NbEntities();
105   for (i = 1; i <= nb; i ++) {
106     Handle(IGESData_IGESEntity) val = ent->Entity(i);
107     if (val.IsNull()) ianul ++;
108     else if (val->TypeNumber() == 0) ianul ++;
109   }
110   if (ianul == 0) return Standard_False;
111   Handle(IGESData_HArray1OfIGESEntity)  EntArray;
112   if (ianul < nb) EntArray = new IGESData_HArray1OfIGESEntity(1,nb-ianul);
113   for (i = 1; i <= nb; i ++) {
114     Handle(IGESData_IGESEntity) val = ent->Entity(i);
115     if (val.IsNull()) continue;
116     else if (val->TypeNumber() == 0) continue;
117     nbtrue ++;
118     EntArray->SetValue (nbtrue,ent->Entity(i));
119   }
120   ent->Init(EntArray);
121   return Standard_True;
122 }
123
124 IGESData_DirChecker  IGESBasic_ToolOrderedGroup::DirChecker
125   (const Handle(IGESBasic_OrderedGroup)& /* ent */ ) const
126 {
127   IGESData_DirChecker DC(402,14);  //TypeNo. 402, Form no. 14
128   DC.Structure(IGESData_DefVoid);
129   DC.GraphicsIgnored();
130   DC.BlankStatusIgnored();
131   DC.HierarchyStatusIgnored();
132   return DC;
133 }
134
135 void  IGESBasic_ToolOrderedGroup::OwnCheck
136   (const Handle(IGESBasic_OrderedGroup)& ent,
137    const Interface_ShareTool& , Handle(Interface_Check)& ach) const
138 {
139   Standard_Boolean ianul = Standard_False;
140   Standard_Integer i, nb = ent->NbEntities();
141   for (i = 1; i <= nb; i ++) {
142     Handle(IGESData_IGESEntity) val = ent->Entity(i);
143     if (val.IsNull()) ianul = Standard_True;
144     else if (val->TypeNumber() == 0) ianul = Standard_True;
145     if (ianul) {
146       ach->AddWarning ("At least one element is Null");
147       break;
148     }
149   }
150 }
151
152 void  IGESBasic_ToolOrderedGroup::OwnDump
153   (const Handle(IGESBasic_OrderedGroup)& ent, const IGESData_IGESDumper& dumper,
154    Standard_OStream& S, const Standard_Integer level) const
155 {
156   S << "IGESBasic_OrderedGroup\n"
157     << "Entries in the Group : ";
158   IGESData_DumpEntities(S,dumper ,level,1, ent->NbEntities(),ent->Entity);
159   S << std::endl;
160 }
161