0024927: Getting rid of "Persistent" functionality -- Code
[occt.git] / src / PDataStd / PDataStd_NamedData.cxx
1 // Created on: 2007-06-27
2 // Created by: Sergey ZARITCHNY
3 // Copyright (c) 2007-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 #include <PDataStd_NamedData.ixx>
17 #define ROW_NUMBER 6
18 //=======================================================================
19 //function : PDataStd_NamedData
20 //purpose  : 
21 //=======================================================================
22 PDataStd_NamedData::PDataStd_NamedData() { }
23
24 //=======================================================================
25 //function : Init
26 //purpose  : 
27 //=======================================================================
28 void PDataStd_NamedData::Init(const Handle(TColStd_HArray2OfInteger)& theDim)
29 {
30   if(theDim.IsNull()) return;
31   if(theDim->RowLength() > 0 && (theDim->UpperRow() - theDim->LowerRow() + 1) == ROW_NUMBER ) {
32     myDimensions = new PColStd_HArray2OfInteger(theDim->LowerRow(),theDim->UpperRow(),theDim->LowerCol(),theDim->UpperCol(), 0);
33     Standard_Integer i, j = theDim->LowerCol();
34
35     for(i = theDim->LowerRow();i<=theDim->UpperRow(); i++) {
36       myDimensions->SetValue(i,j, theDim->Value(i,j));
37       myDimensions->SetValue(i,j+1, theDim->Value(i,j+1));
38     }
39   
40     i = theDim->LowerRow();
41     //1.Integers
42     Standard_Integer aSize = theDim->Value(i,j+1) - theDim->Value(i,j);
43     if(aSize>=0 && (theDim->Value(i,j) | theDim->Value(i,j+1))) {
44       myIntKeys = new  PColStd_HArray1OfExtendedString (theDim->Value(i,j), theDim->Value(i,j+1));
45       myIntValues = new PColStd_HArray1OfInteger(theDim->Value(i,j), theDim->Value(i,j+1));
46     }
47     //2.Reals
48     i++;
49     aSize = theDim->Value(i,j+1) - theDim->Value(i,j);
50     if(aSize>=0 && (theDim->Value(i,j) | theDim->Value(i,j+1))) {
51       myRealKeys = new  PColStd_HArray1OfExtendedString (theDim->Value(i,j), theDim->Value(i,j+1));
52       myRealValues = new PColStd_HArray1OfReal(theDim->Value(i,j), theDim->Value(i,j+1));
53     }
54     //3.Strings
55     i++;
56     aSize = theDim->Value(i,j+1) - theDim->Value(i,j);
57     if(aSize>=0 && (theDim->Value(i,j) | theDim->Value(i,j+1))) {
58       myStrKeys   = new PColStd_HArray1OfExtendedString (theDim->Value(i,j), theDim->Value(i,j+1));
59       myStrValues = new PColStd_HArray1OfExtendedString (theDim->Value(i,j), theDim->Value(i,j+1));
60     }
61
62     //4.Bytes
63     i++;
64     aSize = theDim->Value(i,j+1) - theDim->Value(i,j);
65     if(aSize>=0 && (theDim->Value(i,j) | theDim->Value(i,j+1))) {
66       myByteKeys   = new PColStd_HArray1OfExtendedString (theDim->Value(i,j), theDim->Value(i,j+1));
67       myByteValues = new PDataStd_HArray1OfByte(theDim->Value(i,j), theDim->Value(i,j+1));
68     }
69
70     //5.ArraysOfIntegers
71     i++;
72     aSize = theDim->Value(i,j+1) - theDim->Value(i,j);
73     if(aSize>=0 && (theDim->Value(i,j) | theDim->Value(i,j+1))) {
74       myArrIntKeys   = new PColStd_HArray1OfExtendedString (theDim->Value(i,j), theDim->Value(i,j+1));
75       myArrIntValues = new PDataStd_HArray1OfHArray1OfInteger(theDim->Value(i,j), theDim->Value(i,j+1));
76     }
77
78     //6.
79     i++;
80     aSize = theDim->Value(i,j+1) - theDim->Value(i,j);
81     if(aSize>=0 && (theDim->Value(i,j) | theDim->Value(i,j+1))) {
82       myArrRealKeys   = new PColStd_HArray1OfExtendedString (theDim->Value(i,j), theDim->Value(i,j+1));
83       myArrRealValues = new PDataStd_HArray1OfHArray1OfReal(theDim->Value(i,j), theDim->Value(i,j+1));
84     }
85
86   }
87 }
88
89 //=======================================================================
90 //function : LowerI
91 //purpose  : 
92 //=======================================================================
93 Standard_Integer PDataStd_NamedData::LowerI() const
94 {
95   return myDimensions->Value(myDimensions->LowerRow(),myDimensions->LowerCol());
96 }
97
98 //=======================================================================
99 //function : UpperI
100 //purpose  : 
101 //=======================================================================
102 Standard_Integer PDataStd_NamedData::UpperI() const
103 {
104   return myDimensions->Value(myDimensions->LowerRow(),myDimensions->UpperCol());
105 }
106
107 //=======================================================================
108 //function : LowerR
109 //purpose  : 
110 //=======================================================================
111 Standard_Integer PDataStd_NamedData::LowerR() const
112 {
113   return myDimensions->Value(myDimensions->LowerRow()+1,myDimensions->LowerCol());
114 }
115
116 //=======================================================================
117 //function : UpperR
118 //purpose  : 
119 //=======================================================================
120 Standard_Integer PDataStd_NamedData::UpperR() const
121 {
122   return myDimensions->Value(myDimensions->LowerRow()+1,myDimensions->UpperCol());
123 }
124
125 //=======================================================================
126 //function : LowerS
127 //purpose  : 
128 //=======================================================================
129 Standard_Integer PDataStd_NamedData::LowerS() const
130 {
131   return myDimensions->Value(myDimensions->LowerRow()+2,myDimensions->LowerCol());
132 }
133
134 //=======================================================================
135 //function : UpperS
136 //purpose  : 
137 //=======================================================================
138 Standard_Integer PDataStd_NamedData::UpperS() const
139 {
140   return myDimensions->Value(myDimensions->LowerRow()+2,myDimensions->UpperCol());
141 }
142
143 //=======================================================================
144 //function : LowerB
145 //purpose  : 
146 //=======================================================================
147 Standard_Integer PDataStd_NamedData::LowerB() const
148 {
149   return myDimensions->Value(myDimensions->LowerRow()+3,myDimensions->LowerCol());
150 }
151
152 //=======================================================================
153 //function : UpperB
154 //purpose  : 
155 //=======================================================================
156 Standard_Integer PDataStd_NamedData::UpperB() const
157 {
158   return myDimensions->Value(myDimensions->LowerRow()+3,myDimensions->UpperCol());
159 }
160
161 //=======================================================================
162 //function : LowerAI
163 //purpose  : 
164 //=======================================================================
165 Standard_Integer PDataStd_NamedData::LowerAI() const
166 {
167   return myDimensions->Value(myDimensions->LowerRow()+4,myDimensions->LowerCol());
168 }
169
170 //=======================================================================
171 //function : UpperAI
172 //purpose  : 
173 //=======================================================================
174 Standard_Integer PDataStd_NamedData::UpperAI() const
175 {
176   return myDimensions->Value(myDimensions->LowerRow()+4,myDimensions->UpperCol());
177 }
178
179 //=======================================================================
180 //function : LowerAR
181 //purpose  : 
182 //=======================================================================
183 Standard_Integer PDataStd_NamedData::LowerAR() const
184 {
185   return myDimensions->Value(myDimensions->LowerRow()+5,myDimensions->LowerCol());
186 }
187
188 //=======================================================================
189 //function : UpperAR
190 //purpose  : 
191 //=======================================================================
192 Standard_Integer PDataStd_NamedData::UpperAR() const
193 {
194   return myDimensions->Value(myDimensions->LowerRow()+5,myDimensions->UpperCol());
195 }
196
197
198 //=======================================================================
199 //function : SetIntDataItem
200 //purpose  : 
201 //=======================================================================
202 void PDataStd_NamedData::SetIntDataItem(const Standard_Integer index, 
203                                         const Handle(PCollection_HExtendedString)& key,
204                                         const Standard_Integer value)
205 {
206   if(myIntKeys.IsNull() || myIntValues.IsNull()) return;
207   myIntKeys->SetValue(index, key);
208   myIntValues->SetValue(index, value);
209 }
210
211 //=======================================================================
212 //function : IntDataItemValue
213 //purpose  : 
214 //=======================================================================
215 Standard_Integer PDataStd_NamedData::IntDataItemValue(const Standard_Integer index, 
216                                                       Handle(PCollection_HExtendedString)& key) const
217 {
218   if(myIntKeys.IsNull() || myIntValues.IsNull()) return 0;
219   key = myIntKeys->Value(index);
220   return myIntValues->Value(index);
221 }
222
223 //=======================================================================
224 //function : SetRealDataItem
225 //purpose  : 
226 //=======================================================================
227 void PDataStd_NamedData::SetRealDataItem(const Standard_Integer index, 
228                                         const Handle(PCollection_HExtendedString)& key,
229                                         const Standard_Real value)
230 {
231   if(myRealKeys.IsNull() || myRealValues.IsNull()) return;
232   myRealKeys->SetValue(index, key);
233   myRealValues->SetValue(index, value);
234 }
235
236 //=======================================================================
237 //function : RealDataItemValue
238 //purpose  : 
239 //=======================================================================
240 Standard_Real PDataStd_NamedData::RealDataItemValue(const Standard_Integer index, 
241                                                       Handle(PCollection_HExtendedString)& key) const
242 {
243   if(myRealKeys.IsNull() || myRealValues.IsNull()) return 0.;
244   key = myRealKeys->Value(index);
245   return myRealValues->Value(index);
246 }
247
248 //=======================================================================
249 //function : SetStrDataItem
250 //purpose  : 
251 //=======================================================================
252 void PDataStd_NamedData::SetStrDataItem(const Standard_Integer index, 
253                                         const Handle(PCollection_HExtendedString)& key,
254                                         const Handle(PCollection_HExtendedString)& value)
255 {
256   if(myStrKeys.IsNull() || myStrValues.IsNull()) return;
257   myStrKeys->SetValue(index, key);
258   myStrValues->SetValue(index, value);
259 }
260
261 //=======================================================================
262 //function : StrDataItemValue
263 //purpose  : 
264 //=======================================================================
265 Handle(PCollection_HExtendedString) PDataStd_NamedData::StrDataItemValue
266                                            (const Standard_Integer index, 
267                           Handle(PCollection_HExtendedString)& key) const
268 {
269   Handle(PCollection_HExtendedString) aVal;
270   if(myStrKeys.IsNull() || myStrValues.IsNull()) return aVal;
271   key = myStrKeys->Value(index);
272   return myStrValues->Value(index);
273 }
274
275 //=======================================================================
276 //function : SetByteDataItem
277 //purpose  : 
278 //=======================================================================
279 void PDataStd_NamedData::SetByteDataItem(const Standard_Integer index, 
280                                         const Handle(PCollection_HExtendedString)& key,
281                                         const Standard_Byte value)
282 {
283   if(myByteKeys.IsNull() || myByteValues.IsNull()) return;
284   myByteKeys->SetValue(index, key);
285   myByteValues->SetValue(index, value);
286 }
287
288 //=======================================================================
289 //function : ByteDataItemValue
290 //purpose  : 
291 //=======================================================================
292 Standard_Byte PDataStd_NamedData::ByteDataItemValue(const Standard_Integer index, 
293                                                     Handle(PCollection_HExtendedString)& key) const
294 {
295   if(myByteKeys.IsNull() || myByteValues.IsNull()) return 0x00;
296   key = myByteKeys->Value(index);
297   return myByteValues->Value(index);
298 }
299
300 //=======================================================================
301 //function : SetArrIntDataItem
302 //purpose  : 
303 //=======================================================================
304 void PDataStd_NamedData::SetArrIntDataItem(const Standard_Integer index, 
305                                            const Handle(PCollection_HExtendedString)& key,
306                                            const Handle(PColStd_HArray1OfInteger)& value)
307 {
308   if(myArrIntKeys.IsNull() || myArrIntValues.IsNull()) return;
309   myArrIntKeys->SetValue(index, key);
310   myArrIntValues->SetValue(index, value);
311 }
312
313 //=======================================================================
314 //function : ArrIntDataItemValue
315 //purpose  : 
316 //=======================================================================
317 Handle(PColStd_HArray1OfInteger) PDataStd_NamedData::ArrIntDataItemValue
318                                            (const Standard_Integer index, 
319                           Handle(PCollection_HExtendedString)& key) const
320 {
321   Handle(PColStd_HArray1OfInteger) aVal;
322   if(myArrIntKeys.IsNull() || myArrIntValues.IsNull()) return aVal;
323   key = myArrIntKeys->Value(index);
324   return myArrIntValues->Value(index);
325 }
326
327 //=======================================================================
328 //function : SetArrRealDataItem
329 //purpose  : 
330 //=======================================================================
331 void PDataStd_NamedData::SetArrRealDataItem(const Standard_Integer index, 
332                                            const Handle(PCollection_HExtendedString)& key,
333                                            const Handle(PColStd_HArray1OfReal)& value)
334 {
335   if(myArrRealKeys.IsNull() || myArrRealValues.IsNull()) return;
336   myArrRealKeys->SetValue(index, key);
337   myArrRealValues->SetValue(index, value);
338 }
339
340 //=======================================================================
341 //function : ArrRealDataItemValue
342 //purpose  : 
343 //=======================================================================
344 Handle(PColStd_HArray1OfReal) PDataStd_NamedData::ArrRealDataItemValue
345                                            (const Standard_Integer index, 
346                           Handle(PCollection_HExtendedString)& key) const
347 {
348   Handle(PColStd_HArray1OfReal) aVal;
349   if(myArrRealKeys.IsNull() || myArrRealValues.IsNull()) return aVal;
350   key = myArrRealKeys->Value(index);
351   return myArrRealValues->Value(index);
352 }
353
354 //=======================================================================
355 //function : HasIntegers
356 //purpose  : 
357 //=======================================================================
358 Standard_Boolean PDataStd_NamedData::HasIntegers() const
359 {
360   return !myIntKeys.IsNull();
361 }
362 //=======================================================================
363 //function : HasReals
364 //purpose  : 
365 //=======================================================================
366 Standard_Boolean PDataStd_NamedData::HasReals() const
367 {
368   return !myRealKeys.IsNull();
369 }
370
371 //=======================================================================
372 //function : HasStrings
373 //purpose  : 
374 //=======================================================================
375 Standard_Boolean PDataStd_NamedData::HasStrings() const
376 {
377   return !myStrKeys.IsNull();
378 }
379
380 //=======================================================================
381 //function : HasBytes
382 //purpose  : 
383 //=======================================================================
384 Standard_Boolean PDataStd_NamedData::HasBytes() const
385 {
386   return !myByteKeys.IsNull();
387 }
388
389 //=======================================================================
390 //function : HasArraysOfIntegers
391 //purpose  : 
392 //=======================================================================
393 Standard_Boolean PDataStd_NamedData::HasArraysOfIntegers() const
394 {
395   return !myArrIntKeys.IsNull();
396 }
397
398 //=======================================================================
399 //function : HasArraysOfReals
400 //purpose  : 
401 //=======================================================================
402 Standard_Boolean PDataStd_NamedData::HasArraysOfReals() const
403 {
404   return !myArrRealKeys.IsNull();
405 }