7fd59977 |
1 | // File: MDataStd_ReferenceArrayRetrievalDriver.cxx |
2 | // Created: May 29 11:40:00 2007 |
3 | // Author: Vlad Romashko |
4 | // <vladislav.romashko@opencascade.com> |
5 | // Copyright: Open CASCADE |
6 | |
7 | #include <MDataStd_ReferenceArrayRetrievalDriver.ixx> |
8 | #include <PDataStd_ReferenceArray.hxx> |
9 | #include <TDataStd_ReferenceArray.hxx> |
10 | #include <MDataStd.hxx> |
11 | #include <CDM_MessageDriver.hxx> |
12 | #include <PCollection_HExtendedString.hxx> |
13 | #include <TDF_Label.hxx> |
14 | #include <TCollection_AsciiString.hxx> |
15 | #include <TDF_Tool.hxx> |
16 | |
17 | //======================================================================= |
18 | //function : MDataStd_ReferenceArrayRetrievalDriver |
19 | //purpose : |
20 | //======================================================================= |
21 | MDataStd_ReferenceArrayRetrievalDriver::MDataStd_ReferenceArrayRetrievalDriver(const Handle(CDM_MessageDriver)& theMsgDriver):MDF_ARDriver(theMsgDriver) |
22 | { |
23 | |
24 | } |
25 | |
26 | //======================================================================= |
27 | //function : VersionNumber |
28 | //purpose : |
29 | //======================================================================= |
30 | Standard_Integer MDataStd_ReferenceArrayRetrievalDriver::VersionNumber() const |
31 | { |
32 | return 0; |
33 | } |
34 | |
35 | //======================================================================= |
36 | //function : SourceType |
37 | //purpose : |
38 | //======================================================================= |
39 | Handle(Standard_Type) MDataStd_ReferenceArrayRetrievalDriver::SourceType() const |
40 | { |
41 | static Handle(Standard_Type) sourceType = STANDARD_TYPE(PDataStd_ReferenceArray); |
42 | return sourceType; |
43 | } |
44 | |
45 | //======================================================================= |
46 | //function : NewEmpty |
47 | //purpose : |
48 | //======================================================================= |
49 | Handle(TDF_Attribute) MDataStd_ReferenceArrayRetrievalDriver::NewEmpty () const |
50 | { |
51 | return new TDataStd_ReferenceArray(); |
52 | } |
53 | |
54 | //======================================================================= |
55 | //function : Paste |
56 | //purpose : |
57 | //======================================================================= |
58 | void MDataStd_ReferenceArrayRetrievalDriver::Paste(const Handle(PDF_Attribute)& Source, |
59 | const Handle(TDF_Attribute)& Target, |
60 | const Handle(MDF_RRelocationTable)& ) const |
61 | { |
62 | Handle(PDataStd_ReferenceArray) S = Handle(PDataStd_ReferenceArray)::DownCast (Source); |
63 | Handle(TDataStd_ReferenceArray) T = Handle(TDataStd_ReferenceArray)::DownCast (Target); |
64 | |
65 | Standard_Integer i, lower = S->Lower(), upper = S->Upper(); |
66 | T->Init(lower, upper); |
67 | for (i = lower; i <= upper; i++) |
68 | { |
69 | const Handle(PCollection_HExtendedString)& pvalue = S->Value(i); |
70 | if (!pvalue.IsNull()) |
71 | { |
72 | TDF_Label L; |
73 | TCollection_AsciiString tvalue = pvalue->Convert(); |
74 | TDF_Tool::Label(T->Label().Data(), tvalue, L, Standard_True); |
75 | if (!L.IsNull()) |
76 | { |
77 | T->SetValue(i, L); |
78 | } |
79 | } |
80 | } |
81 | } |