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> Read(StdObjMgt_ReadData & theReadData)20void ShapePersistent_HSequence::node<SequenceClass>::Read 21 (StdObjMgt_ReadData& theReadData) 22 { 23 theReadData >> myPreviuos >> myItem >> myNext; 24 } 25 26 template <class SequenceClass> Write(StdObjMgt_WriteData & theWriteData) const27void ShapePersistent_HSequence::node<SequenceClass>::Write 28 (StdObjMgt_WriteData& theWriteData) const 29 { 30 theWriteData << myPreviuos << myItem << myNext; 31 } 32 33 template <class SequenceClass> Read(StdObjMgt_ReadData & theReadData)34void ShapePersistent_HSequence::instance<SequenceClass>::Read 35 (StdObjMgt_ReadData& theReadData) 36 { 37 theReadData >> myFirst >> myLast >> mySize; 38 } 39 40 template <class SequenceClass> Write(StdObjMgt_WriteData & theWriteData) const41void ShapePersistent_HSequence::instance<SequenceClass>::Write 42 (StdObjMgt_WriteData& theWriteData) const 43 { 44 theWriteData << myFirst << myLast << mySize; 45 } 46 47 template <class SequenceClass> Handle(SequenceClass)48Handle(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> PName() const75 ::PName() const { return "PColgp_HSequenceOfXYZ"; } 76 77 template<> 78 Standard_CString ShapePersistent_HSequence::node<TColgp_HSequenceOfXYZ> PName() const79 ::PName() const { return "PColgp_SeqNodeOfHSequenceOfXYZ"; } 80 81 //======================================================================= 82 // Pnt 83 //======================================================================= 84 template<> 85 Standard_CString ShapePersistent_HSequence::instance<TColgp_HSequenceOfPnt> PName() const86 ::PName() const { return "PColgp_HSequenceOfPnt"; } 87 88 template<> 89 Standard_CString ShapePersistent_HSequence::node<TColgp_HSequenceOfPnt> PName() const90 ::PName() const { return "PColgp_SeqNodeOfHSequenceOfPnt"; } 91 92 //======================================================================= 93 // Dir 94 //======================================================================= 95 template<> 96 Standard_CString ShapePersistent_HSequence::instance<TColgp_HSequenceOfDir> PName() const97 ::PName() const { return "PColgp_HSequenceOfDir"; } 98 99 template<> 100 Standard_CString ShapePersistent_HSequence::node<TColgp_HSequenceOfDir> PName() const101 ::PName() const { return "PColgp_SeqNodeOfHSequenceOffDir"; } 102 103 //======================================================================= 104 // Vec 105 //======================================================================= 106 template<> 107 Standard_CString ShapePersistent_HSequence::instance<TColgp_HSequenceOfVec> PName() const108 ::PName() const { return "PColgp_HSequenceOfVec"; } 109 110 template<> 111 Standard_CString ShapePersistent_HSequence::node<TColgp_HSequenceOfVec> PName() const112 ::PName() const { return "PColgp_SeqNodeOfHSequenceOfVec"; } 113