0030675: Visualization - remove redundant proxy classes in hierarchy of PrsMgr_Presen...
[occt.git] / src / ShapePersistent / ShapePersistent_HSequence.cxx
1 // Copyright (c) 2015 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14 #include <StdObjMgt_ReadData.hxx>
15 #include <StdObjMgt_WriteData.hxx>
16 #include <ShapePersistent_HSequence.hxx>
17
18
19 template <class SequenceClass>
20 void ShapePersistent_HSequence::node<SequenceClass>::Read
21   (StdObjMgt_ReadData& theReadData)
22 {
23   theReadData >> myPreviuos >> myItem >> myNext;
24 }
25
26 template <class SequenceClass>
27 void ShapePersistent_HSequence::node<SequenceClass>::Write
28   (StdObjMgt_WriteData& theWriteData) const
29 {
30   theWriteData << myPreviuos << myItem << myNext;
31 }
32
33 template <class SequenceClass>
34 void ShapePersistent_HSequence::instance<SequenceClass>::Read
35   (StdObjMgt_ReadData& theReadData)
36 {
37   theReadData >> myFirst >> myLast >> mySize;
38 }
39
40 template <class SequenceClass>
41 void ShapePersistent_HSequence::instance<SequenceClass>::Write
42   (StdObjMgt_WriteData& theWriteData) const
43 {
44   theWriteData << myFirst << myLast << mySize;
45 }
46
47 template <class SequenceClass>
48 Handle(SequenceClass)
49   ShapePersistent_HSequence::instance<SequenceClass>::Import() const
50 {
51   Handle(SequenceClass) aSequence = new SequenceClass;
52   
53   for (Handle(Node) aNode = myFirst; aNode; aNode = aNode->Next())
54     aSequence->Append (aNode->Item());
55
56   return aSequence;
57 }
58
59 template class ShapePersistent_HSequence::node<TColgp_HSequenceOfXYZ>;
60 template class ShapePersistent_HSequence::node<TColgp_HSequenceOfPnt>;
61 template class ShapePersistent_HSequence::node<TColgp_HSequenceOfDir>;
62 template class ShapePersistent_HSequence::node<TColgp_HSequenceOfVec>;
63
64 template class ShapePersistent_HSequence::instance<TColgp_HSequenceOfXYZ>;
65 template class ShapePersistent_HSequence::instance<TColgp_HSequenceOfPnt>;
66 template class ShapePersistent_HSequence::instance<TColgp_HSequenceOfDir>;
67 template class ShapePersistent_HSequence::instance<TColgp_HSequenceOfVec>;
68
69
70 //=======================================================================
71 // XYZ 
72 //=======================================================================
73 template<>
74 Standard_CString ShapePersistent_HSequence::instance<TColgp_HSequenceOfXYZ>
75   ::PName() const { return "PColgp_HSequenceOfXYZ"; }
76
77 template<>
78 Standard_CString ShapePersistent_HSequence::node<TColgp_HSequenceOfXYZ>
79   ::PName() const { return "PColgp_SeqNodeOfHSequenceOfXYZ"; }
80
81 //=======================================================================
82 // Pnt 
83 //=======================================================================
84 template<>
85 Standard_CString ShapePersistent_HSequence::instance<TColgp_HSequenceOfPnt>
86   ::PName() const { return "PColgp_HSequenceOfPnt"; }
87
88 template<>
89 Standard_CString ShapePersistent_HSequence::node<TColgp_HSequenceOfPnt>
90   ::PName() const { return "PColgp_SeqNodeOfHSequenceOfPnt"; }
91
92 //=======================================================================
93 // Dir 
94 //=======================================================================
95 template<>
96 Standard_CString ShapePersistent_HSequence::instance<TColgp_HSequenceOfDir>
97   ::PName() const { return "PColgp_HSequenceOfDir"; }
98
99 template<>
100 Standard_CString ShapePersistent_HSequence::node<TColgp_HSequenceOfDir>
101   ::PName() const { return "PColgp_SeqNodeOfHSequenceOffDir"; }
102
103 //=======================================================================
104 // Vec 
105 //=======================================================================
106 template<>
107 Standard_CString ShapePersistent_HSequence::instance<TColgp_HSequenceOfVec>
108   ::PName() const { return "PColgp_HSequenceOfVec"; }
109
110 template<>
111 Standard_CString ShapePersistent_HSequence::node<TColgp_HSequenceOfVec>
112   ::PName() const { return "PColgp_SeqNodeOfHSequenceOfVec"; }