Test for 0022778: Bug in BRepMesh
[occt.git] / src / MDataStd / MDataStd_ReferenceListRetrievalDriver.cxx
1 // Created on: 2007-05-29
2 // Created by: Vlad Romashko
3 // Copyright (c) 2007-2012 OPEN CASCADE SAS
4 //
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
9 //
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 //
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
19
20
21 #include <MDataStd_ReferenceListRetrievalDriver.ixx>
22 #include <PDataStd_ReferenceList.hxx>
23 #include <TDataStd_ReferenceList.hxx>
24 #include <MDataStd.hxx>
25 #include <CDM_MessageDriver.hxx>
26 #include <PCollection_HExtendedString.hxx>
27 #include <TDF_Label.hxx>
28 #include <TCollection_AsciiString.hxx>
29 #include <TDF_Tool.hxx>
30
31 //=======================================================================
32 //function : MDataStd_ReferenceListRetrievalDriver
33 //purpose  : 
34 //=======================================================================
35 MDataStd_ReferenceListRetrievalDriver::MDataStd_ReferenceListRetrievalDriver(const Handle(CDM_MessageDriver)& theMsgDriver):MDF_ARDriver(theMsgDriver)
36 {
37
38 }
39
40 //=======================================================================
41 //function : VersionNumber
42 //purpose  : 
43 //=======================================================================
44 Standard_Integer MDataStd_ReferenceListRetrievalDriver::VersionNumber() const
45
46   return 0; 
47 }
48
49 //=======================================================================
50 //function : SourceType
51 //purpose  : 
52 //=======================================================================
53 Handle(Standard_Type) MDataStd_ReferenceListRetrievalDriver::SourceType() const
54 {
55   static Handle(Standard_Type) sourceType = STANDARD_TYPE(PDataStd_ReferenceList);
56   return sourceType;
57 }
58
59 //=======================================================================
60 //function : NewEmpty
61 //purpose  : 
62 //=======================================================================
63 Handle(TDF_Attribute) MDataStd_ReferenceListRetrievalDriver::NewEmpty () const 
64 {
65   return new TDataStd_ReferenceList();
66 }
67
68 //=======================================================================
69 //function : Paste
70 //purpose  : 
71 //=======================================================================
72 void MDataStd_ReferenceListRetrievalDriver::Paste(const Handle(PDF_Attribute)& Source,
73                                                   const Handle(TDF_Attribute)& Target,
74                                                   const Handle(MDF_RRelocationTable)& ) const
75 {
76   Handle(PDataStd_ReferenceList) S = Handle(PDataStd_ReferenceList)::DownCast (Source);
77   Handle(TDataStd_ReferenceList) T = Handle(TDataStd_ReferenceList)::DownCast (Target);
78
79   Standard_Integer i, lower = S->Lower(), upper = S->Upper();
80   for (i = lower; i <= upper; i++)
81   {
82     const Handle(PCollection_HExtendedString)& pvalue = S->Value(i);
83     if (!pvalue.IsNull()) 
84     {
85       TDF_Label L;
86       TCollection_AsciiString tvalue = pvalue->Convert();
87       TDF_Tool::Label(T->Label().Data(), tvalue, L, Standard_True);
88       if (!L.IsNull())
89       {
90         T->Append(L);
91       }
92     }
93   }
94 }