1 // Copyright (c) 1999-2014 OPEN CASCADE SAS
3 // This file is part of Open CASCADE Technology software library.
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
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.
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
14 //gka 05.03.99 S4134 upgrade from CD to DIS
16 #include <Interface_Check.hxx>
17 #include <Interface_EntityIterator.hxx>
18 #include <RWStepBasic_RWPersonalAddress.hxx>
19 #include <StepBasic_HArray1OfPerson.hxx>
20 #include <StepBasic_Person.hxx>
21 #include <StepBasic_PersonalAddress.hxx>
22 #include <StepData_StepReaderData.hxx>
23 #include <StepData_StepWriter.hxx>
25 RWStepBasic_RWPersonalAddress::RWStepBasic_RWPersonalAddress () {}
27 void RWStepBasic_RWPersonalAddress::ReadStep
28 (const Handle(StepData_StepReaderData)& data,
29 const Standard_Integer num,
30 Handle(Interface_Check)& ach,
31 const Handle(StepBasic_PersonalAddress)& ent) const
35 // --- Number of Parameter Control ---
37 if (!data->CheckNbParams(num,14,ach,"personal_address")) return;
39 // --- inherited field : internalLocation ---
41 Handle(TCollection_HAsciiString) aInternalLocation;
42 Standard_Boolean hasAinternalLocation = Standard_True;
43 if (data->IsParamDefined(num,1)) {
44 //szv#4:S4163:12Mar99 `Standard_Boolean stat1 =` not needed
45 data->ReadString (num,1,"internal_location",ach,aInternalLocation);
48 hasAinternalLocation = Standard_False;
49 aInternalLocation.Nullify();
52 // --- inherited field : streetNumber ---
54 Handle(TCollection_HAsciiString) aStreetNumber;
55 Standard_Boolean hasAstreetNumber = Standard_True;
56 if (data->IsParamDefined(num,2)) {
57 //szv#4:S4163:12Mar99 `Standard_Boolean stat2 =` not needed
58 data->ReadString (num,2,"street_number",ach,aStreetNumber);
61 hasAstreetNumber = Standard_False;
62 aStreetNumber.Nullify();
65 // --- inherited field : street ---
67 Handle(TCollection_HAsciiString) aStreet;
68 Standard_Boolean hasAstreet = Standard_True;
69 if (data->IsParamDefined(num,3)) {
70 //szv#4:S4163:12Mar99 `Standard_Boolean stat3 =` not needed
71 data->ReadString (num,3,"street",ach,aStreet);
74 hasAstreet = Standard_False;
78 // --- inherited field : postalBox ---
80 Handle(TCollection_HAsciiString) aPostalBox;
81 Standard_Boolean hasApostalBox = Standard_True;
82 if (data->IsParamDefined(num,4)) {
83 //szv#4:S4163:12Mar99 `Standard_Boolean stat4 =` not needed
84 data->ReadString (num,4,"postal_box",ach,aPostalBox);
87 hasApostalBox = Standard_False;
91 // --- inherited field : town ---
93 Handle(TCollection_HAsciiString) aTown;
94 Standard_Boolean hasAtown = Standard_True;
95 if (data->IsParamDefined(num,5)) {
96 //szv#4:S4163:12Mar99 `Standard_Boolean stat5 =` not needed
97 data->ReadString (num,5,"town",ach,aTown);
100 hasAtown = Standard_False;
104 // --- inherited field : region ---
106 Handle(TCollection_HAsciiString) aRegion;
107 Standard_Boolean hasAregion = Standard_True;
108 if (data->IsParamDefined(num,6)) {
109 //szv#4:S4163:12Mar99 `Standard_Boolean stat6 =` not needed
110 data->ReadString (num,6,"region",ach,aRegion);
113 hasAregion = Standard_False;
117 // --- inherited field : postalCode ---
119 Handle(TCollection_HAsciiString) aPostalCode;
120 Standard_Boolean hasApostalCode = Standard_True;
121 if (data->IsParamDefined(num,7)) {
122 //szv#4:S4163:12Mar99 `Standard_Boolean stat7 =` not needed
123 data->ReadString (num,7,"postal_code",ach,aPostalCode);
126 hasApostalCode = Standard_False;
127 aPostalCode.Nullify();
130 // --- inherited field : country ---
132 Handle(TCollection_HAsciiString) aCountry;
133 Standard_Boolean hasAcountry = Standard_True;
134 if (data->IsParamDefined(num,8)) {
135 //szv#4:S4163:12Mar99 `Standard_Boolean stat8 =` not needed
136 data->ReadString (num,8,"country",ach,aCountry);
139 hasAcountry = Standard_False;
143 // --- inherited field : facsimileNumber ---
145 Handle(TCollection_HAsciiString) aFacsimileNumber;
146 Standard_Boolean hasAfacsimileNumber = Standard_True;
147 if (data->IsParamDefined(num,9)) {
148 //szv#4:S4163:12Mar99 `Standard_Boolean stat9 =` not needed
149 data->ReadString (num,9,"facsimile_number",ach,aFacsimileNumber);
152 hasAfacsimileNumber = Standard_False;
153 aFacsimileNumber.Nullify();
156 // --- inherited field : telephoneNumber ---
158 Handle(TCollection_HAsciiString) aTelephoneNumber;
159 Standard_Boolean hasAtelephoneNumber = Standard_True;
160 if (data->IsParamDefined(num,10)) {
161 //szv#4:S4163:12Mar99 `Standard_Boolean stat10 =` not needed
162 data->ReadString (num,10,"telephone_number",ach,aTelephoneNumber);
165 hasAtelephoneNumber = Standard_False;
166 aTelephoneNumber.Nullify();
169 // --- inherited field : electronicMailAddress ---
171 Handle(TCollection_HAsciiString) aElectronicMailAddress;
172 Standard_Boolean hasAelectronicMailAddress = Standard_True;
173 if (data->IsParamDefined(num,11)) {
174 //szv#4:S4163:12Mar99 `Standard_Boolean stat11 =` not needed
175 data->ReadString (num,11,"electronic_mail_address",ach,aElectronicMailAddress);
178 hasAelectronicMailAddress = Standard_False;
179 aElectronicMailAddress.Nullify();
182 // --- inherited field : telexNumber ---
184 Handle(TCollection_HAsciiString) aTelexNumber;
185 Standard_Boolean hasAtelexNumber = Standard_True;
186 if (data->IsParamDefined(num,12)) {
187 //szv#4:S4163:12Mar99 `Standard_Boolean stat12 =` not needed
188 data->ReadString (num,12,"telex_number",ach,aTelexNumber);
191 hasAtelexNumber = Standard_False;
192 aTelexNumber.Nullify();
195 // --- own field : people ---
197 Handle(StepBasic_HArray1OfPerson) aPeople;
198 Handle(StepBasic_Person) anent13;
199 Standard_Integer nsub13;
200 if (data->ReadSubList (num,13,"people",ach,nsub13)) {
201 Standard_Integer nb13 = data->NbParams(nsub13);
202 aPeople = new StepBasic_HArray1OfPerson (1, nb13);
203 for (Standard_Integer i13 = 1; i13 <= nb13; i13 ++) {
204 //szv#4:S4163:12Mar99 `Standard_Boolean stat13 =` not needed
205 if (data->ReadEntity (nsub13, i13,"person", ach, STANDARD_TYPE(StepBasic_Person), anent13))
206 aPeople->SetValue(i13, anent13);
210 // --- own field : description ---
212 Handle(TCollection_HAsciiString) aDescription;
213 if (data->IsParamDefined (num,14)) { //gka 05.03.99 S4134 upgrade from CD to DIS
214 //szv#4:S4163:12Mar99 `Standard_Boolean stat14 =` not needed
215 data->ReadString (num,14,"description",ach,aDescription);
217 //--- Initialisation of the read entity ---
220 ent->Init(hasAinternalLocation, aInternalLocation, hasAstreetNumber, aStreetNumber, hasAstreet, aStreet, hasApostalBox, aPostalBox, hasAtown, aTown, hasAregion, aRegion, hasApostalCode, aPostalCode, hasAcountry, aCountry, hasAfacsimileNumber, aFacsimileNumber, hasAtelephoneNumber, aTelephoneNumber, hasAelectronicMailAddress, aElectronicMailAddress, hasAtelexNumber, aTelexNumber, aPeople, aDescription);
224 void RWStepBasic_RWPersonalAddress::WriteStep
225 (StepData_StepWriter& SW,
226 const Handle(StepBasic_PersonalAddress)& ent) const
229 // --- inherited field internalLocation ---
231 Standard_Boolean hasAinternalLocation = ent->HasInternalLocation();
232 if (hasAinternalLocation) {
233 SW.Send(ent->InternalLocation());
239 // --- inherited field streetNumber ---
241 Standard_Boolean hasAstreetNumber = ent->HasStreetNumber();
242 if (hasAstreetNumber) {
243 SW.Send(ent->StreetNumber());
249 // --- inherited field street ---
251 Standard_Boolean hasAstreet = ent->HasStreet();
253 SW.Send(ent->Street());
259 // --- inherited field postalBox ---
261 Standard_Boolean hasApostalBox = ent->HasPostalBox();
263 SW.Send(ent->PostalBox());
269 // --- inherited field town ---
271 Standard_Boolean hasAtown = ent->HasTown();
273 SW.Send(ent->Town());
279 // --- inherited field region ---
281 Standard_Boolean hasAregion = ent->HasRegion();
283 SW.Send(ent->Region());
289 // --- inherited field postalCode ---
291 Standard_Boolean hasApostalCode = ent->HasPostalCode();
292 if (hasApostalCode) {
293 SW.Send(ent->PostalCode());
299 // --- inherited field country ---
301 Standard_Boolean hasAcountry = ent->HasCountry();
303 SW.Send(ent->Country());
309 // --- inherited field facsimileNumber ---
311 Standard_Boolean hasAfacsimileNumber = ent->HasFacsimileNumber();
312 if (hasAfacsimileNumber) {
313 SW.Send(ent->FacsimileNumber());
319 // --- inherited field telephoneNumber ---
321 Standard_Boolean hasAtelephoneNumber = ent->HasTelephoneNumber();
322 if (hasAtelephoneNumber) {
323 SW.Send(ent->TelephoneNumber());
329 // --- inherited field electronicMailAddress ---
331 Standard_Boolean hasAelectronicMailAddress = ent->HasElectronicMailAddress();
332 if (hasAelectronicMailAddress) {
333 SW.Send(ent->ElectronicMailAddress());
339 // --- inherited field telexNumber ---
341 Standard_Boolean hasAtelexNumber = ent->HasTelexNumber();
342 if (hasAtelexNumber) {
343 SW.Send(ent->TelexNumber());
349 // --- own field : people ---
352 for (Standard_Integer i13 = 1; i13 <= ent->NbPeople(); i13 ++) {
353 SW.Send(ent->PeopleValue(i13));
357 // --- own field : description ---
359 SW.Send(ent->Description());
363 void RWStepBasic_RWPersonalAddress::Share(const Handle(StepBasic_PersonalAddress)& ent, Interface_EntityIterator& iter) const
366 Standard_Integer nbElem1 = ent->NbPeople();
367 for (Standard_Integer is1=1; is1<=nbElem1; is1 ++) {
368 iter.GetOneItem(ent->PeopleValue(is1));