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.
15 #include <RWStepBasic_RWAddress.hxx>
16 #include <StepBasic_Address.hxx>
17 #include <StepData_StepReaderData.hxx>
18 #include <StepData_StepWriter.hxx>
20 RWStepBasic_RWAddress::RWStepBasic_RWAddress () {}
22 void RWStepBasic_RWAddress::ReadStep
23 (const Handle(StepData_StepReaderData)& data,
24 const Standard_Integer num,
25 Handle(Interface_Check)& ach,
26 const Handle(StepBasic_Address)& ent) const
30 // --- Number of Parameter Control ---
32 if (!data->CheckNbParams(num,12,ach,"address")) return;
33 // --- own field : internalLocation ---
35 Handle(TCollection_HAsciiString) aInternalLocation;
36 Standard_Boolean hasAinternalLocation = Standard_True;
37 if (data->IsParamDefined(num,1)) {
38 //szv#4:S4163:12Mar99 `Standard_Boolean stat1 =` not needed
39 data->ReadString (num,1,"internal_location",ach,aInternalLocation);
42 hasAinternalLocation = Standard_False;
43 aInternalLocation.Nullify();
46 // --- own field : streetNumber ---
48 Handle(TCollection_HAsciiString) aStreetNumber;
49 Standard_Boolean hasAstreetNumber = Standard_True;
50 if (data->IsParamDefined(num,2)) {
51 //szv#4:S4163:12Mar99 `Standard_Boolean stat2 =` not needed
52 data->ReadString (num,2,"street_number",ach,aStreetNumber);
55 hasAstreetNumber = Standard_False;
56 aStreetNumber.Nullify();
59 // --- own field : street ---
61 Handle(TCollection_HAsciiString) aStreet;
62 Standard_Boolean hasAstreet = Standard_True;
63 if (data->IsParamDefined(num,3)) {
64 //szv#4:S4163:12Mar99 `Standard_Boolean stat3 =` not needed
65 data->ReadString (num,3,"street",ach,aStreet);
68 hasAstreet = Standard_False;
72 // --- own field : postalBox ---
74 Handle(TCollection_HAsciiString) aPostalBox;
75 Standard_Boolean hasApostalBox = Standard_True;
76 if (data->IsParamDefined(num,4)) {
77 //szv#4:S4163:12Mar99 `Standard_Boolean stat4 =` not needed
78 data->ReadString (num,4,"postal_box",ach,aPostalBox);
81 hasApostalBox = Standard_False;
85 // --- own field : town ---
87 Handle(TCollection_HAsciiString) aTown;
88 Standard_Boolean hasAtown = Standard_True;
89 if (data->IsParamDefined(num,5)) {
90 //szv#4:S4163:12Mar99 `Standard_Boolean stat5 =` not needed
91 data->ReadString (num,5,"town",ach,aTown);
94 hasAtown = Standard_False;
98 // --- own field : region ---
100 Handle(TCollection_HAsciiString) aRegion;
101 Standard_Boolean hasAregion = Standard_True;
102 if (data->IsParamDefined(num,6)) {
103 //szv#4:S4163:12Mar99 `Standard_Boolean stat6 =` not needed
104 data->ReadString (num,6,"region",ach,aRegion);
107 hasAregion = Standard_False;
111 // --- own field : postalCode ---
113 Handle(TCollection_HAsciiString) aPostalCode;
114 Standard_Boolean hasApostalCode = Standard_True;
115 if (data->IsParamDefined(num,7)) {
116 //szv#4:S4163:12Mar99 `Standard_Boolean stat7 =` not needed
117 data->ReadString (num,7,"postal_code",ach,aPostalCode);
120 hasApostalCode = Standard_False;
121 aPostalCode.Nullify();
124 // --- own field : country ---
126 Handle(TCollection_HAsciiString) aCountry;
127 Standard_Boolean hasAcountry = Standard_True;
128 if (data->IsParamDefined(num,8)) {
129 //szv#4:S4163:12Mar99 `Standard_Boolean stat8 =` not needed
130 data->ReadString (num,8,"country",ach,aCountry);
133 hasAcountry = Standard_False;
137 // --- own field : facsimileNumber ---
139 Handle(TCollection_HAsciiString) aFacsimileNumber;
140 Standard_Boolean hasAfacsimileNumber = Standard_True;
141 if (data->IsParamDefined(num,9)) {
142 //szv#4:S4163:12Mar99 `Standard_Boolean stat9 =` not needed
143 data->ReadString (num,9,"facsimile_number",ach,aFacsimileNumber);
146 hasAfacsimileNumber = Standard_False;
147 aFacsimileNumber.Nullify();
150 // --- own field : telephoneNumber ---
152 Handle(TCollection_HAsciiString) aTelephoneNumber;
153 Standard_Boolean hasAtelephoneNumber = Standard_True;
154 if (data->IsParamDefined(num,10)) {
155 //szv#4:S4163:12Mar99 `Standard_Boolean stat10 =` not needed
156 data->ReadString (num,10,"telephone_number",ach,aTelephoneNumber);
159 hasAtelephoneNumber = Standard_False;
160 aTelephoneNumber.Nullify();
163 // --- own field : electronicMailAddress ---
165 Handle(TCollection_HAsciiString) aElectronicMailAddress;
166 Standard_Boolean hasAelectronicMailAddress = Standard_True;
167 if (data->IsParamDefined(num,11)) {
168 //szv#4:S4163:12Mar99 `Standard_Boolean stat11 =` not needed
169 data->ReadString (num,11,"electronic_mail_address",ach,aElectronicMailAddress);
172 hasAelectronicMailAddress = Standard_False;
173 aElectronicMailAddress.Nullify();
176 // --- own field : telexNumber ---
178 Handle(TCollection_HAsciiString) aTelexNumber;
179 Standard_Boolean hasAtelexNumber = Standard_True;
180 if (data->IsParamDefined(num,12)) {
181 //szv#4:S4163:12Mar99 `Standard_Boolean stat12 =` not needed
182 data->ReadString (num,12,"telex_number",ach,aTelexNumber);
185 hasAtelexNumber = Standard_False;
186 aTelexNumber.Nullify();
189 //--- Initialisation of the read entity ---
192 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);
196 void RWStepBasic_RWAddress::WriteStep
197 (StepData_StepWriter& SW,
198 const Handle(StepBasic_Address)& ent) const
201 // --- own field : internalLocation ---
203 Standard_Boolean hasAinternalLocation = ent->HasInternalLocation();
204 if (hasAinternalLocation) {
205 SW.Send(ent->InternalLocation());
211 // --- own field : streetNumber ---
213 Standard_Boolean hasAstreetNumber = ent->HasStreetNumber();
214 if (hasAstreetNumber) {
215 SW.Send(ent->StreetNumber());
221 // --- own field : street ---
223 Standard_Boolean hasAstreet = ent->HasStreet();
225 SW.Send(ent->Street());
231 // --- own field : postalBox ---
233 Standard_Boolean hasApostalBox = ent->HasPostalBox();
235 SW.Send(ent->PostalBox());
241 // --- own field : town ---
243 Standard_Boolean hasAtown = ent->HasTown();
245 SW.Send(ent->Town());
251 // --- own field : region ---
253 Standard_Boolean hasAregion = ent->HasRegion();
255 SW.Send(ent->Region());
261 // --- own field : postalCode ---
263 Standard_Boolean hasApostalCode = ent->HasPostalCode();
264 if (hasApostalCode) {
265 SW.Send(ent->PostalCode());
271 // --- own field : country ---
273 Standard_Boolean hasAcountry = ent->HasCountry();
275 SW.Send(ent->Country());
281 // --- own field : facsimileNumber ---
283 Standard_Boolean hasAfacsimileNumber = ent->HasFacsimileNumber();
284 if (hasAfacsimileNumber) {
285 SW.Send(ent->FacsimileNumber());
291 // --- own field : telephoneNumber ---
293 Standard_Boolean hasAtelephoneNumber = ent->HasTelephoneNumber();
294 if (hasAtelephoneNumber) {
295 SW.Send(ent->TelephoneNumber());
301 // --- own field : electronicMailAddress ---
303 Standard_Boolean hasAelectronicMailAddress = ent->HasElectronicMailAddress();
304 if (hasAelectronicMailAddress) {
305 SW.Send(ent->ElectronicMailAddress());
311 // --- own field : telexNumber ---
313 Standard_Boolean hasAtelexNumber = ent->HasTelexNumber();
314 if (hasAtelexNumber) {
315 SW.Send(ent->TelexNumber());