0026961: Recover possibility to read files in old persistence format
[occt.git] / src / StdLPersistent / StdLPersistent_HArray1.cxx
CommitLineData
7ed7467d 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
ff205346 14#include <StdLPersistent_HArray1.hxx>
7ed7467d 15#include <StdObjMgt_ReadData.hxx>
16
ff205346 17
7ed7467d 18//=======================================================================
19//function : Read
20//purpose : Read persistent data from a file
21//=======================================================================
ff205346 22void StdLPersistent_HArray1::commonBase::Read (StdObjMgt_ReadData& theReadData)
7ed7467d 23{
ff205346 24 Value<Standard_Integer> aLowerBound, anUpperBound;
7ed7467d 25 theReadData >> aLowerBound >> anUpperBound;
ff205346 26 createArray (aLowerBound, anUpperBound);
7ed7467d 27
28 theReadData.Driver().BeginReadObjectData();
29
30 Standard_Integer aSize;
ff205346 31 theReadData.ReadValue (aSize);
7ed7467d 32
33 for (Standard_Integer i = aLowerBound; i <= anUpperBound; i++)
ff205346 34 readValue (theReadData, i);
7ed7467d 35
36 theReadData.Driver().EndReadObjectData();
37}
ff205346 38
39template <class ArrayClass, class ValueClass>
40void StdLPersistent_HArray1::instance<ArrayClass, ValueClass>::readValue (
41 StdObjMgt_ReadData& theReadData,
42 const Standard_Integer theIndex)
43{
44 ValueClass aValue;
45 theReadData >> aValue;
46 this->myArray->SetValue (theIndex, static_cast<typename ArrayClass::value_type> (aValue));
47}
48
49
50template class StdLPersistent_HArray1::instance<TColStd_HArray1OfInteger>;
51template class StdLPersistent_HArray1::instance<TColStd_HArray1OfReal>;
52template class StdLPersistent_HArray1::instance<TColStd_HArray1OfByte,
53 StdObjMgt_ContentTypes::Value<Standard_Character> >;
54template class StdLPersistent_HArray1::instance<StdLPersistent_HArray1OfPersistent,
55 StdObjMgt_ContentTypes::Reference<> >;