Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-26 08:18:13

0001 // Created on: 1996-11-25
0002 // Created by: Christophe LEYNADIER
0003 // Copyright (c) 1996-1999 Matra Datavision
0004 // Copyright (c) 1999-2014 OPEN CASCADE SAS
0005 //
0006 // This file is part of Open CASCADE Technology software library.
0007 //
0008 // This library is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU Lesser General Public License version 2.1 as published
0010 // by the Free Software Foundation, with special exception defined in the file
0011 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0012 // distribution for complete text of the license and disclaimer of any warranty.
0013 //
0014 // Alternatively, this file may be used under the terms of Open CASCADE
0015 // commercial license or contractual agreement.
0016 
0017 #ifndef _Storage_BaseDriver_HeaderFile
0018 #define _Storage_BaseDriver_HeaderFile
0019 
0020 #include <Storage_OpenMode.hxx>
0021 #include <Storage_Data.hxx>
0022 #include <Storage_Position.hxx>
0023 #include <TCollection_AsciiString.hxx>
0024 #include <TColStd_SequenceOfAsciiString.hxx>
0025 #include <TColStd_SequenceOfExtendedString.hxx>
0026 
0027 class TCollection_ExtendedString;
0028 
0029 DEFINE_STANDARD_HANDLE(Storage_BaseDriver, Standard_Transient)
0030 
0031 //! Root class for drivers. A driver assigns a physical container
0032 //! to data to be stored or retrieved, for instance a file.
0033 //! The FSD package provides two derived concrete classes :
0034 //! -   FSD_File is a general driver which defines a
0035 //! file as the container of data.
0036 class Storage_BaseDriver : public Standard_Transient
0037 {
0038 public:
0039   DEFINE_STANDARD_RTTIEXT(Storage_BaseDriver, Standard_Transient)
0040 
0041 public:
0042   Standard_EXPORT virtual ~Storage_BaseDriver();
0043 
0044   TCollection_AsciiString Name() const { return myName; }
0045 
0046   Storage_OpenMode OpenMode() const { return myOpenMode; }
0047 
0048   Standard_EXPORT static TCollection_AsciiString ReadMagicNumber(Standard_IStream& theIStream);
0049 
0050 public:
0051   //!@name Virtual methods, to be provided by descendants
0052 
0053   Standard_EXPORT virtual Storage_Error Open(const TCollection_AsciiString& aName,
0054                                              const Storage_OpenMode         aMode) = 0;
0055 
0056   //! returns True if we are at end of the stream
0057   Standard_EXPORT virtual Standard_Boolean IsEnd() = 0;
0058 
0059   //! return position in the file. Return -1 upon error.
0060   Standard_EXPORT virtual Storage_Position Tell() = 0;
0061 
0062   Standard_EXPORT virtual Storage_Error BeginWriteInfoSection() = 0;
0063 
0064   Standard_EXPORT virtual void WriteInfo(const Standard_Integer               nbObj,
0065                                          const TCollection_AsciiString&       dbVersion,
0066                                          const TCollection_AsciiString&       date,
0067                                          const TCollection_AsciiString&       schemaName,
0068                                          const TCollection_AsciiString&       schemaVersion,
0069                                          const TCollection_ExtendedString&    appName,
0070                                          const TCollection_AsciiString&       appVersion,
0071                                          const TCollection_ExtendedString&    objectType,
0072                                          const TColStd_SequenceOfAsciiString& userInfo) = 0;
0073 
0074   Standard_EXPORT virtual Storage_Error EndWriteInfoSection() = 0;
0075 
0076   Standard_EXPORT virtual Storage_Error BeginReadInfoSection() = 0;
0077 
0078   Standard_EXPORT virtual void ReadInfo(Standard_Integer&              nbObj,
0079                                         TCollection_AsciiString&       dbVersion,
0080                                         TCollection_AsciiString&       date,
0081                                         TCollection_AsciiString&       schemaName,
0082                                         TCollection_AsciiString&       schemaVersion,
0083                                         TCollection_ExtendedString&    appName,
0084                                         TCollection_AsciiString&       appVersion,
0085                                         TCollection_ExtendedString&    objectType,
0086                                         TColStd_SequenceOfAsciiString& userInfo) = 0;
0087 
0088   Standard_EXPORT virtual void ReadCompleteInfo(Standard_IStream&     theIStream,
0089                                                 Handle(Storage_Data)& theData) = 0;
0090 
0091   Standard_EXPORT virtual Storage_Error EndReadInfoSection() = 0;
0092 
0093   Standard_EXPORT virtual Storage_Error BeginWriteCommentSection() = 0;
0094 
0095   Standard_EXPORT virtual void WriteComment(
0096     const TColStd_SequenceOfExtendedString& userComments) = 0;
0097 
0098   Standard_EXPORT virtual Storage_Error EndWriteCommentSection() = 0;
0099 
0100   Standard_EXPORT virtual Storage_Error BeginReadCommentSection() = 0;
0101 
0102   Standard_EXPORT virtual void ReadComment(TColStd_SequenceOfExtendedString& userComments) = 0;
0103 
0104   Standard_EXPORT virtual Storage_Error EndReadCommentSection() = 0;
0105 
0106   Standard_EXPORT virtual Storage_Error BeginWriteTypeSection() = 0;
0107 
0108   Standard_EXPORT virtual void SetTypeSectionSize(const Standard_Integer aSize) = 0;
0109 
0110   Standard_EXPORT virtual void WriteTypeInformations(const Standard_Integer         typeNum,
0111                                                      const TCollection_AsciiString& typeName) = 0;
0112 
0113   Standard_EXPORT virtual Storage_Error EndWriteTypeSection() = 0;
0114 
0115   Standard_EXPORT virtual Storage_Error BeginReadTypeSection() = 0;
0116 
0117   Standard_EXPORT virtual Standard_Integer TypeSectionSize() = 0;
0118 
0119   Standard_EXPORT virtual void ReadTypeInformations(Standard_Integer&        typeNum,
0120                                                     TCollection_AsciiString& typeName) = 0;
0121 
0122   Standard_EXPORT virtual Storage_Error EndReadTypeSection() = 0;
0123 
0124   Standard_EXPORT virtual Storage_Error BeginWriteRootSection() = 0;
0125 
0126   Standard_EXPORT virtual void SetRootSectionSize(const Standard_Integer aSize) = 0;
0127 
0128   Standard_EXPORT virtual void WriteRoot(const TCollection_AsciiString& rootName,
0129                                          const Standard_Integer         aRef,
0130                                          const TCollection_AsciiString& aType) = 0;
0131 
0132   Standard_EXPORT virtual Storage_Error EndWriteRootSection() = 0;
0133 
0134   Standard_EXPORT virtual Storage_Error BeginReadRootSection() = 0;
0135 
0136   Standard_EXPORT virtual Standard_Integer RootSectionSize() = 0;
0137 
0138   Standard_EXPORT virtual void ReadRoot(TCollection_AsciiString& rootName,
0139                                         Standard_Integer&        aRef,
0140                                         TCollection_AsciiString& aType) = 0;
0141 
0142   Standard_EXPORT virtual Storage_Error EndReadRootSection() = 0;
0143 
0144   Standard_EXPORT virtual Storage_Error BeginWriteRefSection() = 0;
0145 
0146   Standard_EXPORT virtual void SetRefSectionSize(const Standard_Integer aSize) = 0;
0147 
0148   Standard_EXPORT virtual void WriteReferenceType(const Standard_Integer reference,
0149                                                   const Standard_Integer typeNum) = 0;
0150 
0151   Standard_EXPORT virtual Storage_Error EndWriteRefSection() = 0;
0152 
0153   Standard_EXPORT virtual Storage_Error BeginReadRefSection() = 0;
0154 
0155   Standard_EXPORT virtual Standard_Integer RefSectionSize() = 0;
0156 
0157   Standard_EXPORT virtual void ReadReferenceType(Standard_Integer& reference,
0158                                                  Standard_Integer& typeNum) = 0;
0159 
0160   Standard_EXPORT virtual Storage_Error EndReadRefSection() = 0;
0161 
0162   Standard_EXPORT virtual Storage_Error BeginWriteDataSection() = 0;
0163 
0164   Standard_EXPORT virtual void WritePersistentObjectHeader(const Standard_Integer aRef,
0165                                                            const Standard_Integer aType) = 0;
0166 
0167   Standard_EXPORT virtual void BeginWritePersistentObjectData() = 0;
0168 
0169   Standard_EXPORT virtual void BeginWriteObjectData() = 0;
0170 
0171   Standard_EXPORT virtual void EndWriteObjectData() = 0;
0172 
0173   Standard_EXPORT virtual void EndWritePersistentObjectData() = 0;
0174 
0175   Standard_EXPORT virtual Storage_Error EndWriteDataSection() = 0;
0176 
0177   Standard_EXPORT virtual Storage_Error BeginReadDataSection() = 0;
0178 
0179   Standard_EXPORT virtual void ReadPersistentObjectHeader(Standard_Integer& aRef,
0180                                                           Standard_Integer& aType) = 0;
0181 
0182   Standard_EXPORT virtual void BeginReadPersistentObjectData() = 0;
0183 
0184   Standard_EXPORT virtual void BeginReadObjectData() = 0;
0185 
0186   Standard_EXPORT virtual void EndReadObjectData() = 0;
0187 
0188   Standard_EXPORT virtual void EndReadPersistentObjectData() = 0;
0189 
0190   Standard_EXPORT virtual Storage_Error EndReadDataSection() = 0;
0191 
0192   Standard_EXPORT virtual void SkipObject() = 0;
0193 
0194   Standard_EXPORT virtual Storage_Error Close() = 0;
0195 
0196 public:
0197   //!@name Output methods
0198 
0199   Standard_EXPORT virtual Storage_BaseDriver& PutReference(const Standard_Integer aValue) = 0;
0200 
0201   Standard_EXPORT virtual Storage_BaseDriver& PutCharacter(const Standard_Character aValue) = 0;
0202 
0203   Storage_BaseDriver& operator<<(const Standard_Character aValue) { return PutCharacter(aValue); }
0204 
0205   Standard_EXPORT virtual Storage_BaseDriver& PutExtCharacter(
0206     const Standard_ExtCharacter aValue) = 0;
0207 
0208   Storage_BaseDriver& operator<<(const Standard_ExtCharacter aValue)
0209   {
0210     return PutExtCharacter(aValue);
0211   }
0212 
0213   Standard_EXPORT virtual Storage_BaseDriver& PutInteger(const Standard_Integer aValue) = 0;
0214 
0215   Storage_BaseDriver& operator<<(const Standard_Integer aValue) { return PutInteger(aValue); }
0216 
0217   Standard_EXPORT virtual Storage_BaseDriver& PutBoolean(const Standard_Boolean aValue) = 0;
0218 
0219   Storage_BaseDriver& operator<<(const Standard_Boolean aValue) { return PutBoolean(aValue); }
0220 
0221   Standard_EXPORT virtual Storage_BaseDriver& PutReal(const Standard_Real aValue) = 0;
0222 
0223   Storage_BaseDriver& operator<<(const Standard_Real aValue) { return PutReal(aValue); }
0224 
0225   Standard_EXPORT virtual Storage_BaseDriver& PutShortReal(const Standard_ShortReal aValue) = 0;
0226 
0227   Storage_BaseDriver& operator<<(const Standard_ShortReal aValue) { return PutShortReal(aValue); }
0228 
0229 public:
0230   //!@name Input methods
0231 
0232   Standard_EXPORT virtual Storage_BaseDriver& GetReference(Standard_Integer& aValue) = 0;
0233 
0234   Standard_EXPORT virtual Storage_BaseDriver& GetCharacter(Standard_Character& aValue) = 0;
0235 
0236   Storage_BaseDriver& operator>>(Standard_Character& aValue) { return GetCharacter(aValue); }
0237 
0238   Standard_EXPORT virtual Storage_BaseDriver& GetExtCharacter(Standard_ExtCharacter& aValue) = 0;
0239 
0240   Storage_BaseDriver& operator>>(Standard_ExtCharacter& aValue) { return GetExtCharacter(aValue); }
0241 
0242   Standard_EXPORT virtual Storage_BaseDriver& GetInteger(Standard_Integer& aValue) = 0;
0243 
0244   Storage_BaseDriver& operator>>(Standard_Integer& aValue) { return GetInteger(aValue); }
0245 
0246   Standard_EXPORT virtual Storage_BaseDriver& GetBoolean(Standard_Boolean& aValue) = 0;
0247 
0248   Storage_BaseDriver& operator>>(Standard_Boolean& aValue) { return GetBoolean(aValue); }
0249 
0250   Standard_EXPORT virtual Storage_BaseDriver& GetReal(Standard_Real& aValue) = 0;
0251 
0252   Storage_BaseDriver& operator>>(Standard_Real& aValue) { return GetReal(aValue); }
0253 
0254   Standard_EXPORT virtual Storage_BaseDriver& GetShortReal(Standard_ShortReal& aValue) = 0;
0255 
0256   Storage_BaseDriver& operator>>(Standard_ShortReal& aValue) { return GetShortReal(aValue); }
0257 
0258 protected:
0259   Standard_EXPORT Storage_BaseDriver();
0260 
0261   void SetName(const TCollection_AsciiString& aName) { myName = aName; }
0262 
0263   void SetOpenMode(const Storage_OpenMode aMode) { myOpenMode = aMode; }
0264 
0265 private:
0266   Storage_OpenMode        myOpenMode;
0267   TCollection_AsciiString myName;
0268 };
0269 
0270 #endif // _Storage_BaseDriver_HeaderFile