Integration of OCCT 6.5.0 from SVN
[occt.git] / src / MDataStd / MDataStd_IntPackedMapStorageDriver.cxx
1 // File:        MDataStd_IntPackedMapStorageDriver.cxx
2 // Created:     Thu Aug 23 10:40:06 2007
3 // Author:      Sergey ZARITCHNY
4 //              <sergey.zaritchny@opencascade.com>
5 // Copyright:   Open CASCADE SA 2007
6
7 #include <MDataStd_IntPackedMapStorageDriver.ixx>
8 #include <PDataStd_IntPackedMap.hxx>
9 #include <PDataStd_IntPackedMap_1.hxx>
10 #include <TDataStd_IntPackedMap.hxx>
11 #include <PColStd_HArray1OfInteger.hxx>
12 #include <CDM_MessageDriver.hxx>
13 #include <TColStd_MapIteratorOfPackedMapOfInteger.hxx>
14 #include <TColStd_PackedMapOfInteger.hxx>
15 #include <TCollection_ExtendedString.hxx>
16 //=======================================================================
17 //function : MDataStd_IntPackedMapStorageDriver
18 //purpose  : Constructor
19 //=======================================================================
20 MDataStd_IntPackedMapStorageDriver::MDataStd_IntPackedMapStorageDriver
21   (const Handle(CDM_MessageDriver)& theMsgDriver):MDF_ASDriver(theMsgDriver)
22 {
23 }
24
25 //=======================================================================
26 //function : VersionNumber
27 //purpose  : 
28 //=======================================================================
29 Standard_Integer MDataStd_IntPackedMapStorageDriver::VersionNumber() const
30 { return 0; }
31
32 //=======================================================================
33 //function : SourceType
34 //purpose  : 
35 //=======================================================================
36 Handle(Standard_Type) MDataStd_IntPackedMapStorageDriver::SourceType() const
37 { return STANDARD_TYPE(TDataStd_IntPackedMap);}
38
39 //=======================================================================
40 //function : NewEmpty
41 //purpose  : 
42 //=======================================================================
43 Handle(PDF_Attribute) MDataStd_IntPackedMapStorageDriver::NewEmpty() const
44 { return new PDataStd_IntPackedMap_1; }
45
46 //=======================================================================
47 //function : Paste
48 //purpose  : 
49 //=======================================================================
50 void MDataStd_IntPackedMapStorageDriver::Paste(const Handle(TDF_Attribute)& Source,
51   const Handle(PDF_Attribute)& Target,const Handle(MDF_SRelocationTable)& ) const
52 {
53   Handle(TDataStd_IntPackedMap)   aS = 
54     Handle(TDataStd_IntPackedMap)::DownCast (Source);
55   Handle(PDataStd_IntPackedMap_1) aT = 
56     Handle(PDataStd_IntPackedMap_1)::DownCast (Target);
57   if(!aS.IsNull() && !aT.IsNull()) {
58     Standard_Integer aSize = (aS->IsEmpty()) ? 0 : aS->Extent();
59     if(aSize) {
60       aT->Init (1, aSize);
61       TColStd_MapIteratorOfPackedMapOfInteger anIt(aS->GetMap());
62       for(Standard_Integer i = 1;anIt.More();anIt.Next(),i++)
63         aT->SetValue(i, anIt.Key());
64     }
65     aT->SetDelta(aS->GetDelta());
66   } else 
67     WriteMessage(TCollection_ExtendedString ("error storing attribute TDataStd_IntPackedMap"));
68 }