0024057: Eliminate compiler warning C4100 in MSVC++ with warning level 4
[occt.git] / src / IGESAppli / IGESAppli_ToolNodalResults.cxx
1 // Created by: CKY / Contract Toubro-Larsen
2 // Copyright (c) 1993-1999 Matra Datavision
3 // Copyright (c) 1999-2012 OPEN CASCADE SAS
4 //
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
9 //
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 //
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
19
20 //--------------------------------------------------------------------
21 //--------------------------------------------------------------------
22
23 #include <IGESAppli_ToolNodalResults.ixx>
24 #include <IGESData_ParamCursor.hxx>
25 #include <IGESDimen_GeneralNote.hxx>
26 #include <IGESAppli_Node.hxx>
27 #include <IGESAppli_HArray1OfNode.hxx>
28 #include <TColStd_HArray1OfInteger.hxx>
29 #include <TColStd_HArray1OfReal.hxx>
30 #include <TColStd_HArray2OfReal.hxx>
31 #include <IGESData_Dump.hxx>
32 #include <Interface_Macros.hxx>
33
34
35 IGESAppli_ToolNodalResults::IGESAppli_ToolNodalResults ()    {  }
36
37
38 void  IGESAppli_ToolNodalResults::ReadOwnParams
39   (const Handle(IGESAppli_NodalResults)& ent,
40    const Handle(IGESData_IGESReaderData)& IR, IGESData_ParamReader& PR) const
41 {
42   Standard_Integer tempSubCaseNum = 0;
43   Standard_Real tempTime;
44   Standard_Integer nbval = 0;
45   Standard_Integer nbnodes = 0;
46   //Standard_Boolean st; //szv#4:S4163:12Mar99 not needed
47   Handle(IGESDimen_GeneralNote) tempNote;
48   Handle(TColStd_HArray2OfReal) tempData ;
49   Handle(IGESAppli_HArray1OfNode) tempNodes ;
50   Handle(TColStd_HArray1OfInteger) tempNodeIdentifiers ;
51
52   //szv#4:S4163:12Mar99 `st=` not needed
53   PR.ReadEntity(IR,PR.Current(),"General Note describing the analysis case",
54                 STANDARD_TYPE(IGESDimen_GeneralNote), tempNote);
55   PR.ReadInteger (PR.Current(),"Subcase number",tempSubCaseNum);
56   PR.ReadReal(PR.Current(),"Analysis time used",tempTime);
57   Standard_Boolean tempFlag = PR.ReadInteger(PR.Current(),"No. of values",nbval);
58   //szv#4:S4163:12Mar99 moved in if
59   if (PR.ReadInteger(PR.Current(),"No. of nodes",nbnodes)) {
60     tempData  = new TColStd_HArray2OfReal(1,nbnodes,1,nbval);
61     tempNodes = new IGESAppli_HArray1OfNode(1,nbnodes);
62     tempNodeIdentifiers = new TColStd_HArray1OfInteger(1,nbnodes);
63     for (Standard_Integer i = 1; i <= nbnodes; i ++) {
64       Standard_Integer aitem;
65       //Check  whether nbval properly read or not.
66       Handle(IGESAppli_Node) aNode ;
67
68       if (PR.ReadInteger(PR.Current(),"Node no. identifier",aitem))
69         tempNodeIdentifiers->SetValue(i,aitem);
70       if (PR.ReadEntity(IR,PR.Current(),"FEM Node", STANDARD_TYPE(IGESAppli_Node), aNode))
71         tempNodes->SetValue(i,aNode);
72       if (tempFlag)
73         //Check  whether nbval properly read or not.
74         for (Standard_Integer j = 1; j <= nbval; j ++) {
75           Standard_Real aval;
76           if (PR.ReadReal(PR.Current(),"Value",aval))
77             tempData->SetValue(i,j,aval);
78         }
79     }
80   }
81   DirChecker(ent).CheckTypeAndForm(PR.CCheck(),ent);
82   ent->Init(tempNote,tempSubCaseNum,tempTime,tempNodeIdentifiers,tempNodes,tempData);
83 }
84
85 void  IGESAppli_ToolNodalResults::WriteOwnParams
86   (const Handle(IGESAppli_NodalResults)& ent, IGESData_IGESWriter& IW) const
87 {
88   Standard_Integer nbnodes = ent->NbNodes();
89   Standard_Integer nbdata  = ent->NbData ();
90   IW.Send(ent->Note());
91   IW.Send(ent->SubCaseNumber());
92   IW.Send(ent->Time());
93   IW.Send(nbdata);
94   IW.Send(nbnodes);
95   for (Standard_Integer i = 1; i <= nbnodes; i++)
96     {
97       IW.Send(ent->NodeIdentifier(i));
98       IW.Send(ent->Node(i));
99       for (Standard_Integer j = 1; j <= nbdata; j++)
100         IW.Send(ent->Data(i,j));
101     }
102 }
103
104 void  IGESAppli_ToolNodalResults::OwnShared
105   (const Handle(IGESAppli_NodalResults)& ent, Interface_EntityIterator& iter) const
106 {
107   Standard_Integer nbnodes = ent->NbNodes();
108   iter.GetOneItem(ent->Note());
109   for (Standard_Integer i = 1; i <= nbnodes; i++)
110     iter.GetOneItem(ent->Node(i));
111 }
112
113 void  IGESAppli_ToolNodalResults::OwnCopy
114   (const Handle(IGESAppli_NodalResults)& another,
115    const Handle(IGESAppli_NodalResults)& ent, Interface_CopyTool& TC) const
116 {
117   DeclareAndCast(IGESDimen_GeneralNote,aNote,TC.Transferred(another->Note()));
118   Standard_Integer aSubCaseNum = another->SubCaseNumber();
119   Standard_Real aTime = another->Time();
120   Standard_Integer nbnodes = another->NbNodes();
121   Standard_Integer nbval = another->NbData();
122   Handle(TColStd_HArray1OfInteger) aNodeIdentifiers =
123     new TColStd_HArray1OfInteger(1,nbnodes);
124   Handle(IGESAppli_HArray1OfNode) aNodes =
125     new IGESAppli_HArray1OfNode(1,nbnodes);
126   Handle(TColStd_HArray2OfReal) aData =
127     new TColStd_HArray2OfReal(1,nbnodes,1,nbval);
128
129   for (Standard_Integer i=1; i <= nbnodes; i++)
130     {
131       Standard_Integer aItem = another->NodeIdentifier(i);
132       aNodeIdentifiers->SetValue(i,aItem);
133       DeclareAndCast(IGESAppli_Node,anentity,TC.Transferred(another->Node(i)));
134       aNodes->SetValue(i,anentity);
135       for (Standard_Integer j=1; j <= nbval; j++)
136         aData->SetValue(i,j, another->Data(i,j));
137     }
138
139   ent->Init(aNote,aSubCaseNum,aTime,aNodeIdentifiers,aNodes,aData);
140   ent->SetFormNumber(another->FormNumber());
141 }
142
143 IGESData_DirChecker  IGESAppli_ToolNodalResults::DirChecker
144   (const Handle(IGESAppli_NodalResults)& /* ent */ ) const
145 {
146   IGESData_DirChecker DC(146,0,34);  // Type = 146 Form No. = 0 to 34
147   DC.Structure(IGESData_DefVoid);
148   DC.LineFont(IGESData_DefVoid);
149   DC.LineWeight(IGESData_DefVoid);
150   DC.Color(IGESData_DefAny);
151   DC.BlankStatusIgnored();
152   DC.UseFlagRequired(03);
153   DC.HierarchyStatusIgnored();
154   return DC;
155 }
156
157 void  IGESAppli_ToolNodalResults::OwnCheck
158   (const Handle(IGESAppli_NodalResults)& ent,
159    const Interface_ShareTool& , Handle(Interface_Check)& ach) const
160 {
161   Standard_Integer FormNum = ent->FormNumber();
162   Standard_Integer nv = ent->NbData();
163   Standard_Boolean OK = Standard_True;
164   switch (FormNum) {
165     case  0 : if (nv <  0) OK = Standard_False;  break;
166     case  1 : if (nv != 1) OK = Standard_False;  break;
167     case  2 : if (nv != 1) OK = Standard_False;  break;
168     case  3 : if (nv != 3) OK = Standard_False;  break;
169     case  4 : if (nv != 6) OK = Standard_False;  break;
170     case  5 : if (nv != 3) OK = Standard_False;  break;
171     case  6 : if (nv != 3) OK = Standard_False;  break;
172     case  7 : if (nv != 3) OK = Standard_False;  break;
173     case  8 : if (nv != 3) OK = Standard_False;  break;
174     case  9 : if (nv != 3) OK = Standard_False;  break;
175     case 10 : if (nv != 1) OK = Standard_False;  break;
176     case 11 : if (nv != 1) OK = Standard_False;  break;
177     case 12 : if (nv != 3) OK = Standard_False;  break;
178     case 13 : if (nv != 1) OK = Standard_False;  break;
179     case 14 : if (nv != 1) OK = Standard_False;  break;
180     case 15 : if (nv != 3) OK = Standard_False;  break;
181     case 16 : if (nv != 1) OK = Standard_False;  break;
182     case 17 : if (nv != 3) OK = Standard_False;  break;
183     case 18 : if (nv != 3) OK = Standard_False;  break;
184     case 19 : if (nv != 3) OK = Standard_False;  break;
185     case 20 : if (nv != 3) OK = Standard_False;  break;
186     case 21 : if (nv != 3) OK = Standard_False;  break;
187     case 22 : if (nv != 3) OK = Standard_False;  break;
188     case 23 : if (nv != 6) OK = Standard_False;  break;
189     case 24 : if (nv != 6) OK = Standard_False;  break;
190     case 25 : if (nv != 6) OK = Standard_False;  break;
191     case 26 : if (nv != 6) OK = Standard_False;  break;
192     case 27 : if (nv != 6) OK = Standard_False;  break;
193     case 28 : if (nv != 6) OK = Standard_False;  break;
194     case 29 : if (nv != 9) OK = Standard_False;  break;
195     case 30 : if (nv != 9) OK = Standard_False;  break;
196     case 31 : if (nv != 9) OK = Standard_False;  break;
197     case 32 : if (nv != 9) OK = Standard_False;  break;
198     case 33 : if (nv != 9) OK = Standard_False;  break;
199     case 34 : if (nv != 9) OK = Standard_False;  break;
200     default : ach->AddFail("Incorrect Form Number");    break;
201   }
202   if (!OK) ach->AddFail
203     ("Incorrect count of real values in array V for FEM node");
204 }
205
206 void  IGESAppli_ToolNodalResults::OwnDump
207   (const Handle(IGESAppli_NodalResults)& ent, const IGESData_IGESDumper& dumper,
208    const Handle(Message_Messenger)& S, const Standard_Integer level) const
209 {
210 //  Standard_Integer nbnodes = ent->NbNodes();
211 //  Standard_Integer nbdata  = ent->NbData ();
212   S << "IGESAppli_NodalResults" << endl;
213
214   S << "General Note : ";
215   dumper.Dump(ent->Note(),S, (level <= 4) ? 0 : 1);
216   S << endl;
217   S << "Analysis subcase number : " << ent->SubCaseNumber() << "  ";
218   S << "Time used : " << ent->Time() << endl;
219   S << "No. of nodes : " << ent->NbNodes() << "  ";
220   S << "No. of values for a node : " << ent->NbData() << endl;
221   S << "Node Identifiers : " << endl;
222   S << "Nodes : " << endl;
223   S << "Data : ";  if (level < 6) S << " [ask level > 5]";
224 //  IGESData_DumpRectVals(S ,-level,1, ent->NbData(),ent->Data);
225   S << endl;
226   if (level > 4)
227     {
228       for (Standard_Integer i=1; i <= ent->NbNodes(); i++)
229         {
230           S << "[" << i << "]: ";
231           S << "NodeIdentifier : " << ent->NodeIdentifier(i) << "  ";
232           S << "Node : ";
233           dumper.Dump (ent->Node(i),S, 1);
234           S << endl;
235           if (level < 6) continue;
236           S << "Data : [ ";
237           for (Standard_Integer j = 1; j <= ent->NbData(); j ++)
238               S << "  " << ent->Data(i,j);
239           S << " ]" << endl;
240         }
241     }
242 }