Integration of OCCT 6.5.0 from SVN
[occt.git] / src / MDataStd / MDataStd_NamedDataStorageDriver.cxx
CommitLineData
7fd59977 1// File: MDataStd_NamedDataStorageDriver.cxx
2// Created: Wed Jun 27 17:25:05 2007
3// Author: Sergey ZARITCHNY
4// <szy@friendox>
5// Copyright: Open CASCADE SA 2007
6
7#include <MDataStd_NamedDataStorageDriver.ixx>
8#include <CDM_MessageDriver.hxx>
9#include <PCollection_HExtendedString.hxx>
10#include <TColStd_HArray2OfInteger.hxx>
11#include <TColStd_HArray1OfReal.hxx>
12#include <TColStd_HArray1OfInteger.hxx>
13#include <PColStd_HArray1OfReal.hxx>
14#include <PColStd_HArray1OfInteger.hxx>
15#include <PDataStd_NamedData.hxx>
16#include <TDataStd_NamedData.hxx>
17#include <TColStd_DataMapOfStringInteger.hxx>
18#include <TDataStd_DataMapOfStringReal.hxx>
19#include <TDataStd_DataMapOfStringString.hxx>
20#include <TDataStd_DataMapOfStringByte.hxx>
21#include <TDataStd_DataMapOfStringHArray1OfInteger.hxx>
22#include <TDataStd_DataMapOfStringHArray1OfReal.hxx>
23#include <TColStd_DataMapIteratorOfDataMapOfStringInteger.hxx>
24#include <TDataStd_DataMapIteratorOfDataMapOfStringReal.hxx>
25#include <TDataStd_DataMapIteratorOfDataMapOfStringString.hxx>
26#include <TDataStd_DataMapIteratorOfDataMapOfStringByte.hxx>
27#include <TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfInteger.hxx>
28#include <TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfReal.hxx>
29
30#define ROW_NUMBER 6
31
32//=======================================================================
33//function : MDataStd_NamedDataStorageDriver
34//purpose :
35//=======================================================================
36MDataStd_NamedDataStorageDriver::MDataStd_NamedDataStorageDriver(const Handle(CDM_MessageDriver)& theMsgDriver):MDF_ASDriver(theMsgDriver)
37{
38
39}
40
41//=======================================================================
42//function : VersionNumber
43//purpose :
44//=======================================================================
45Standard_Integer MDataStd_NamedDataStorageDriver::VersionNumber() const
46{
47 return 0;
48}
49
50//=======================================================================
51//function : SourceType
52//purpose :
53//=======================================================================
54Handle(Standard_Type) MDataStd_NamedDataStorageDriver::SourceType() const
55{
56 static Handle(Standard_Type) sourceType = STANDARD_TYPE(TDataStd_NamedData);
57 return sourceType;
58}
59
60//=======================================================================
61//function : NewEmpty
62//purpose :
63//=======================================================================
64Handle(PDF_Attribute) MDataStd_NamedDataStorageDriver::NewEmpty() const
65{
66 return new PDataStd_NamedData();
67}
68
69//=======================================================================
70//function : Paste
71//purpose :
72//=======================================================================
73void MDataStd_NamedDataStorageDriver::Paste(const Handle(TDF_Attribute)& Source,
74 const Handle(PDF_Attribute)& Target,
75 const Handle(MDF_SRelocationTable)& RelocTable) const
76{
77 Handle(TDataStd_NamedData) S = Handle(TDataStd_NamedData)::DownCast (Source);
78 Handle(PDataStd_NamedData) T = Handle(PDataStd_NamedData)::DownCast (Target);
79
80 if(S.IsNull() || T.IsNull()) return;
81 Standard_Integer i=1;
82 Handle(TColStd_HArray2OfInteger) aDim = new TColStd_HArray2OfInteger(1,ROW_NUMBER, 1, 2, 0);
83 if(S->HasIntegers() && !S->GetIntegersContainer().IsEmpty()) {
84 aDim->SetValue (i,1,1);
85 aDim->SetValue (i,2,S->GetIntegersContainer().Extent());
86 }
87 i++;
88 if(S->HasReals() && !S->GetRealsContainer().IsEmpty()) {
89 aDim->SetValue (i,1,1);
90 aDim->SetValue (i,2,S->GetRealsContainer().Extent());
91 }
92 i++;
93 if(S->HasStrings() && !S->GetStringsContainer().IsEmpty()) {
94 aDim->SetValue (i,1,1);
95 aDim->SetValue (i,2,S->GetStringsContainer().Extent());
96 }
97 i++;
98 if(S->HasBytes() && !S->GetBytesContainer().IsEmpty()) {
99 aDim->SetValue (i,1,1);
100 aDim->SetValue (i,2,S->GetBytesContainer().Extent());
101 }
102 i++;
103 if(S->HasArraysOfIntegers() && !S->GetArraysOfIntegersContainer().IsEmpty()) {
104 aDim->SetValue (i,1,1);
105 aDim->SetValue (i,2,S->GetArraysOfIntegersContainer().Extent());
106 }
107 i++;
108 if(S->HasArraysOfReals() && !S->GetArraysOfRealsContainer().IsEmpty()) {
109 aDim->SetValue (i,1,1);
110 aDim->SetValue (i,2,S->GetArraysOfRealsContainer().Extent());
111 }
112
113 T->Init(aDim);
114
115 if(S->HasIntegers() && !S->GetIntegersContainer().IsEmpty()) {
116 TColStd_DataMapIteratorOfDataMapOfStringInteger itr(S->GetIntegersContainer());
117 for (i=1; itr.More(); itr.Next(),i++) {
118 Handle(PCollection_HExtendedString) aKey = new PCollection_HExtendedString(itr.Key());
119 T->SetIntDataItem (i, aKey, itr.Value());
120 }
121 }
122 if(S->HasReals() && !S->GetRealsContainer().IsEmpty()) {
123 TDataStd_DataMapIteratorOfDataMapOfStringReal itr(S->GetRealsContainer());
124 for (i=1; itr.More(); itr.Next(),i++) {
125 Handle(PCollection_HExtendedString) aKey = new PCollection_HExtendedString(itr.Key());
126 T->SetRealDataItem (i, aKey, itr.Value());
127 }
128 }
129 if(S->HasStrings() && !S->GetStringsContainer().IsEmpty()) {
130 TDataStd_DataMapIteratorOfDataMapOfStringString itr(S->GetStringsContainer());
131 for (i=1; itr.More(); itr.Next(),i++) {
132 Handle(PCollection_HExtendedString) aKey = new PCollection_HExtendedString(itr.Key());
133 Handle(PCollection_HExtendedString) aValue = new PCollection_HExtendedString(itr.Value());
134 T->SetStrDataItem (i, aKey, aValue);
135 }
136 }
137 if(S->HasBytes() && !S->GetBytesContainer().IsEmpty()) {
138 TDataStd_DataMapIteratorOfDataMapOfStringByte itr(S->GetBytesContainer());
139 for (i=1; itr.More(); itr.Next(),i++) {
140 Handle(PCollection_HExtendedString) aKey = new PCollection_HExtendedString(itr.Key());
141 T->SetByteDataItem (i, aKey, itr.Value());
142 }
143 }
144 if(S->HasArraysOfIntegers() && !S->GetArraysOfIntegersContainer().IsEmpty()) {
145 TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfInteger itr(S->GetArraysOfIntegersContainer());
146 for (i=1; itr.More(); itr.Next(),i++) {
147 Handle(PCollection_HExtendedString) aKey = new PCollection_HExtendedString(itr.Key());
148 const Handle(TColStd_HArray1OfInteger)& anArr1 = itr.Value();
149 Handle(PColStd_HArray1OfInteger) anArr2 =
150 new PColStd_HArray1OfInteger(anArr1->Lower(), anArr1->Upper());
151 for(Standard_Integer j= anArr1->Lower(); j<=anArr1->Upper();j++) {
152 anArr2->SetValue(j, anArr1->Value(j));
153 }
154 T->SetArrIntDataItem (i, aKey, anArr2);
155 }
156 }
157 if(S->HasArraysOfReals() && !S->GetArraysOfRealsContainer().IsEmpty()) {
158 TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfReal itr(S->GetArraysOfRealsContainer());
159 for (i=1; itr.More(); itr.Next(),i++) {
160 Handle(PCollection_HExtendedString) aKey = new PCollection_HExtendedString(itr.Key());
161 const Handle(TColStd_HArray1OfReal)& anArr1 = itr.Value();
162 Handle(PColStd_HArray1OfReal) anArr2 =
163 new PColStd_HArray1OfReal(anArr1->Lower(), anArr1->Upper());
164 for(Standard_Integer j= anArr1->Lower(); j<=anArr1->Upper();j++) {
165 anArr2->SetValue(j, anArr1->Value(j));
166 }
167 T->SetArrRealDataItem (i, aKey, anArr2);
168 }
169 }
170}
171