mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-13 14:27:08 +03:00
0026961: Recover possibility to read files in old persistence format
Possibility to read shapes and OCAF documents from old persistence format (Std and StdL schema) is restored. Test cases used old persistent files on input are restored with suffix "_std" Removing toolkit from OS package
This commit is contained in:
197
src/StdLPersistent/StdLPersistent_Collection.hxx
Normal file
197
src/StdLPersistent/StdLPersistent_Collection.hxx
Normal file
@@ -0,0 +1,197 @@
|
||||
// Copyright (c) 2015 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#ifndef _StdLPersistent_Collection_HeaderFile
|
||||
#define _StdLPersistent_Collection_HeaderFile
|
||||
|
||||
#include <StdObjMgt_Attribute.hxx>
|
||||
#include <StdLPersistent_HArray1.hxx>
|
||||
|
||||
#include <TDataStd_IntegerArray.hxx>
|
||||
#include <TDataStd_RealArray.hxx>
|
||||
#include <TDataStd_ByteArray.hxx>
|
||||
#include <TDataStd_ExtStringArray.hxx>
|
||||
#include <TDataStd_BooleanArray.hxx>
|
||||
#include <TDataStd_ReferenceArray.hxx>
|
||||
#include <TDataStd_IntegerList.hxx>
|
||||
#include <TDataStd_RealList.hxx>
|
||||
#include <TDataStd_ExtStringList.hxx>
|
||||
#include <TDataStd_BooleanList.hxx>
|
||||
#include <TDataStd_ReferenceList.hxx>
|
||||
#include <TDataStd_IntPackedMap.hxx>
|
||||
|
||||
|
||||
class StdLPersistent_Collection : private StdObjMgt_ContentTypes
|
||||
{
|
||||
// Converters
|
||||
struct noConversion;
|
||||
struct byteConverter;
|
||||
struct stringConverter;
|
||||
struct referenceConverter;
|
||||
|
||||
// Base templates
|
||||
template <class Base>
|
||||
class booleanArrayBase : public Base
|
||||
{
|
||||
public:
|
||||
//! Read persistent data from a file.
|
||||
Standard_EXPORT virtual void Read (StdObjMgt_ReadData& theReadData);
|
||||
|
||||
protected:
|
||||
template <class ArrayHandle, class Converter>
|
||||
inline void import (const ArrayHandle& theArray, Converter theConverter)
|
||||
const;
|
||||
|
||||
protected:
|
||||
Value<Standard_Integer> myLower;
|
||||
Value<Standard_Integer> myUpper;
|
||||
};
|
||||
|
||||
template <class Base>
|
||||
class directArrayBase : public Base
|
||||
{
|
||||
protected:
|
||||
template <class ArrayHandle, class Converter>
|
||||
inline void import (const ArrayHandle& theArray, Converter theConverter)
|
||||
const;
|
||||
};
|
||||
|
||||
template <class Base>
|
||||
class arrayBase : public Base
|
||||
{
|
||||
protected:
|
||||
template <class ArrayHandle, class Converter>
|
||||
inline void import (const ArrayHandle& theArray, Converter theConverter)
|
||||
const;
|
||||
};
|
||||
|
||||
template <class Base>
|
||||
class listBase : public Base
|
||||
{
|
||||
protected:
|
||||
template <class ArrayHandle, class Converter>
|
||||
inline void import (const ArrayHandle& theArray, Converter theConverter)
|
||||
const;
|
||||
};
|
||||
|
||||
template <class Base>
|
||||
class mapBase : public Base
|
||||
{
|
||||
protected:
|
||||
template <class ArrayHandle, class Converter>
|
||||
inline void import (const ArrayHandle& theArray, Converter theConverter)
|
||||
const;
|
||||
};
|
||||
|
||||
// Instance templates
|
||||
template <template<class> class BaseT,
|
||||
class HArrayClass,
|
||||
class AttribClass,
|
||||
class Converter>
|
||||
class instance
|
||||
: public BaseT <typename StdObjMgt_Attribute<AttribClass>::SingleRef>
|
||||
{
|
||||
public:
|
||||
//! Import transient attribuite from the persistent data.
|
||||
Standard_EXPORT virtual void ImportAttribute();
|
||||
};
|
||||
|
||||
template <class Instance>
|
||||
class instance_1 : public Instance
|
||||
{
|
||||
public:
|
||||
//! Read persistent data from a file.
|
||||
Standard_EXPORT virtual void Read (StdObjMgt_ReadData& theReadData);
|
||||
|
||||
//! Import transient attribuite from the persistent data.
|
||||
Standard_EXPORT virtual void ImportAttribute();
|
||||
|
||||
private:
|
||||
Value<Standard_Boolean> myDelta;
|
||||
};
|
||||
|
||||
|
||||
// Collection type specialization
|
||||
template<class HArrayClass, class AttribClass, class Converter = noConversion>
|
||||
struct booleanArrayT
|
||||
: instance<booleanArrayBase, HArrayClass, AttribClass, Converter> {};
|
||||
|
||||
template<class HArrayClass, class AttribClass, class Converter = noConversion>
|
||||
struct directArrayT
|
||||
: instance<directArrayBase, HArrayClass, AttribClass, Converter> {};
|
||||
|
||||
template<class HArrayClass, class AttribClass, class Converter = noConversion>
|
||||
struct arrayT
|
||||
: instance<arrayBase, HArrayClass, AttribClass, Converter> {};
|
||||
|
||||
template<class HArrayClass, class AttribClass, class Converter = noConversion>
|
||||
struct listT
|
||||
: instance<listBase, HArrayClass, AttribClass, Converter> {};
|
||||
|
||||
template<class HArrayClass, class AttribClass, class Converter = noConversion>
|
||||
struct mapT
|
||||
: instance<mapBase, HArrayClass, AttribClass, Converter> {};
|
||||
|
||||
|
||||
// Internal array types
|
||||
typedef StdLPersistent_HArray1::Integer integer;
|
||||
typedef StdLPersistent_HArray1::Real real;
|
||||
typedef StdLPersistent_HArray1::Persistent persistent;
|
||||
|
||||
public:
|
||||
// Final specialization
|
||||
typedef booleanArrayT <integer, TDataStd_BooleanArray, byteConverter>
|
||||
BooleanArray;
|
||||
|
||||
typedef directArrayT <integer, TDataStd_IntegerArray>
|
||||
IntegerArray;
|
||||
|
||||
typedef directArrayT <real, TDataStd_RealArray>
|
||||
RealArray;
|
||||
|
||||
typedef arrayT <integer, TDataStd_ByteArray, byteConverter>
|
||||
ByteArray;
|
||||
|
||||
typedef arrayT <persistent, TDataStd_ExtStringArray, stringConverter>
|
||||
ExtStringArray;
|
||||
|
||||
typedef arrayT <persistent, TDataStd_ReferenceArray, referenceConverter>
|
||||
ReferenceArray;
|
||||
|
||||
typedef listT <integer, TDataStd_IntegerList>
|
||||
IntegerList;
|
||||
|
||||
typedef listT <real, TDataStd_RealList>
|
||||
RealList;
|
||||
|
||||
typedef listT <integer, TDataStd_BooleanList>
|
||||
BooleanList;
|
||||
|
||||
typedef listT <persistent, TDataStd_ExtStringList, stringConverter>
|
||||
ExtStringList;
|
||||
|
||||
typedef listT <persistent, TDataStd_ReferenceList, referenceConverter>
|
||||
ReferenceList;
|
||||
|
||||
typedef mapT <integer, TDataStd_IntPackedMap>
|
||||
IntPackedMap;
|
||||
|
||||
typedef instance_1<IntegerArray> IntegerArray_1;
|
||||
typedef instance_1<RealArray> RealArray_1;
|
||||
typedef instance_1<ByteArray> ByteArray_1;
|
||||
typedef instance_1<ExtStringArray> ExtStringArray_1;
|
||||
typedef instance_1<IntPackedMap> IntPackedMap_1;
|
||||
};
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user