1 // Created on: 1996-11-29
2 // Created by: Christophe LEYNADIER
3 // Copyright (c) 1996-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
17 #ifndef _FSD_File_HeaderFile
18 #define _FSD_File_HeaderFile
20 #include <FSD_FStream.hxx>
21 #include <Storage_BaseDriver.hxx>
23 class Storage_StreamTypeMismatchError;
24 class Storage_StreamFormatError;
25 class Storage_StreamWriteError;
26 class Storage_StreamExtCharParityError;
27 class TCollection_AsciiString;
28 class TCollection_ExtendedString;
29 class Storage_BaseDriver;
31 DEFINE_STANDARD_HANDLE(FSD_File,Storage_BaseDriver)
33 //! A general driver which defines as a file, the
34 //! physical container for data to be stored or retrieved.
35 class FSD_File : public Storage_BaseDriver
38 DEFINE_STANDARD_RTTIEXT(FSD_File,Storage_BaseDriver)
42 //! Constructs a driver defining as a file, the physical
43 //! container for data to be stored or retrieved.
44 //! Use the function Open to give the name of the driven file.
45 Standard_EXPORT FSD_File();
48 //! Assigns as aName the name of the file to be
49 //! driven by this driver. aMode precises if the file is
50 //! opened in read or write mode.
51 //! The function returns Storage_VSOk if the file
52 //! is opened correctly, or any other value of the
53 //! Storage_Error enumeration which specifies the problem encountered.
54 Standard_EXPORT virtual Storage_Error Open (const TCollection_AsciiString& aName, const Storage_OpenMode aMode) Standard_OVERRIDE;
56 Standard_EXPORT virtual Standard_Boolean IsEnd() Standard_OVERRIDE;
58 //! return position in the file. Return -1 upon error.
59 Standard_EXPORT virtual Storage_Position Tell() Standard_OVERRIDE;
61 Standard_EXPORT static Storage_Error IsGoodFileType (const TCollection_AsciiString& aName);
63 Standard_EXPORT virtual Storage_Error BeginWriteInfoSection() Standard_OVERRIDE;
65 Standard_EXPORT virtual void WriteInfo (const Standard_Integer nbObj,
66 const TCollection_AsciiString& dbVersion,
67 const TCollection_AsciiString& date,
68 const TCollection_AsciiString& schemaName,
69 const TCollection_AsciiString& schemaVersion,
70 const TCollection_ExtendedString& appName,
71 const TCollection_AsciiString& appVersion,
72 const TCollection_ExtendedString& objectType,
73 const TColStd_SequenceOfAsciiString& userInfo) Standard_OVERRIDE;
75 Standard_EXPORT virtual Storage_Error EndWriteInfoSection() Standard_OVERRIDE;
77 Standard_EXPORT virtual Storage_Error BeginReadInfoSection() Standard_OVERRIDE;
79 Standard_EXPORT virtual void ReadInfo (Standard_Integer& nbObj,
80 TCollection_AsciiString& dbVersion,
81 TCollection_AsciiString& date,
82 TCollection_AsciiString& schemaName,
83 TCollection_AsciiString& schemaVersion,
84 TCollection_ExtendedString& appName,
85 TCollection_AsciiString& appVersion,
86 TCollection_ExtendedString& objectType,
87 TColStd_SequenceOfAsciiString& userInfo) Standard_OVERRIDE;
89 Standard_EXPORT virtual void ReadCompleteInfo (Standard_IStream& theIStream, Handle(Storage_Data)& theData) Standard_OVERRIDE;
91 Standard_EXPORT virtual Storage_Error EndReadInfoSection() Standard_OVERRIDE;
93 Standard_EXPORT virtual Storage_Error BeginWriteCommentSection() Standard_OVERRIDE;
95 Standard_EXPORT virtual void WriteComment (const TColStd_SequenceOfExtendedString& userComments) Standard_OVERRIDE;
97 Standard_EXPORT virtual Storage_Error EndWriteCommentSection() Standard_OVERRIDE;
99 Standard_EXPORT virtual Storage_Error BeginReadCommentSection() Standard_OVERRIDE;
101 Standard_EXPORT virtual void ReadComment (TColStd_SequenceOfExtendedString& userComments) Standard_OVERRIDE;
103 Standard_EXPORT virtual Storage_Error EndReadCommentSection() Standard_OVERRIDE;
105 Standard_EXPORT virtual Storage_Error BeginWriteTypeSection() Standard_OVERRIDE;
107 Standard_EXPORT virtual void SetTypeSectionSize (const Standard_Integer aSize) Standard_OVERRIDE;
109 Standard_EXPORT virtual void WriteTypeInformations (const Standard_Integer typeNum,
110 const TCollection_AsciiString& typeName) Standard_OVERRIDE;
112 Standard_EXPORT virtual Storage_Error EndWriteTypeSection() Standard_OVERRIDE;
114 Standard_EXPORT virtual Storage_Error BeginReadTypeSection() Standard_OVERRIDE;
116 Standard_EXPORT virtual Standard_Integer TypeSectionSize() Standard_OVERRIDE;
118 Standard_EXPORT virtual void ReadTypeInformations (Standard_Integer& typeNum, TCollection_AsciiString& typeName) Standard_OVERRIDE;
120 Standard_EXPORT virtual Storage_Error EndReadTypeSection() Standard_OVERRIDE;
122 Standard_EXPORT virtual Storage_Error BeginWriteRootSection() Standard_OVERRIDE;
124 Standard_EXPORT virtual void SetRootSectionSize (const Standard_Integer aSize) Standard_OVERRIDE;
126 Standard_EXPORT virtual void WriteRoot (const TCollection_AsciiString& rootName,
127 const Standard_Integer aRef,
128 const TCollection_AsciiString& aType) Standard_OVERRIDE;
130 Standard_EXPORT virtual Storage_Error EndWriteRootSection() Standard_OVERRIDE;
132 Standard_EXPORT virtual Storage_Error BeginReadRootSection() Standard_OVERRIDE;
134 Standard_EXPORT virtual Standard_Integer RootSectionSize() Standard_OVERRIDE;
136 Standard_EXPORT virtual void ReadRoot (TCollection_AsciiString& rootName,
137 Standard_Integer& aRef,
138 TCollection_AsciiString& aType) Standard_OVERRIDE;
140 Standard_EXPORT virtual Storage_Error EndReadRootSection() Standard_OVERRIDE;
142 Standard_EXPORT virtual Storage_Error BeginWriteRefSection() Standard_OVERRIDE;
144 Standard_EXPORT virtual void SetRefSectionSize (const Standard_Integer aSize) Standard_OVERRIDE;
146 Standard_EXPORT virtual void WriteReferenceType (const Standard_Integer reference, const Standard_Integer typeNum) Standard_OVERRIDE;
148 Standard_EXPORT virtual Storage_Error EndWriteRefSection() Standard_OVERRIDE;
150 Standard_EXPORT virtual Storage_Error BeginReadRefSection() Standard_OVERRIDE;
152 Standard_EXPORT virtual Standard_Integer RefSectionSize() Standard_OVERRIDE;
154 Standard_EXPORT virtual void ReadReferenceType (Standard_Integer& reference, Standard_Integer& typeNum) Standard_OVERRIDE;
156 Standard_EXPORT virtual Storage_Error EndReadRefSection() Standard_OVERRIDE;
158 Standard_EXPORT virtual Storage_Error BeginWriteDataSection() Standard_OVERRIDE;
160 Standard_EXPORT virtual void WritePersistentObjectHeader (const Standard_Integer aRef, const Standard_Integer aType) Standard_OVERRIDE;
162 Standard_EXPORT virtual void BeginWritePersistentObjectData() Standard_OVERRIDE;
164 Standard_EXPORT virtual void BeginWriteObjectData() Standard_OVERRIDE;
166 Standard_EXPORT virtual void EndWriteObjectData() Standard_OVERRIDE;
168 Standard_EXPORT virtual void EndWritePersistentObjectData() Standard_OVERRIDE;
170 Standard_EXPORT virtual Storage_Error EndWriteDataSection() Standard_OVERRIDE;
172 Standard_EXPORT virtual Storage_Error BeginReadDataSection() Standard_OVERRIDE;
174 Standard_EXPORT virtual void ReadPersistentObjectHeader (Standard_Integer& aRef, Standard_Integer& aType) Standard_OVERRIDE;
176 Standard_EXPORT virtual void BeginReadPersistentObjectData() Standard_OVERRIDE;
178 Standard_EXPORT virtual void BeginReadObjectData() Standard_OVERRIDE;
180 Standard_EXPORT virtual void EndReadObjectData() Standard_OVERRIDE;
182 Standard_EXPORT virtual void EndReadPersistentObjectData() Standard_OVERRIDE;
184 Standard_EXPORT virtual Storage_Error EndReadDataSection() Standard_OVERRIDE;
186 Standard_EXPORT virtual void SkipObject() Standard_OVERRIDE;
188 Standard_EXPORT virtual Storage_BaseDriver& PutReference (const Standard_Integer aValue) Standard_OVERRIDE;
190 Standard_EXPORT virtual Storage_BaseDriver& PutCharacter (const Standard_Character aValue) Standard_OVERRIDE;
192 Standard_EXPORT virtual Storage_BaseDriver& PutExtCharacter(const Standard_ExtCharacter aValue) Standard_OVERRIDE;
194 Standard_EXPORT virtual Storage_BaseDriver& PutInteger (const Standard_Integer aValue) Standard_OVERRIDE;
196 Standard_EXPORT virtual Storage_BaseDriver& PutBoolean (const Standard_Boolean aValue) Standard_OVERRIDE;
198 Standard_EXPORT virtual Storage_BaseDriver& PutReal (const Standard_Real aValue) Standard_OVERRIDE;
200 Standard_EXPORT virtual Storage_BaseDriver& PutShortReal (const Standard_ShortReal aValue) Standard_OVERRIDE;
202 Standard_EXPORT virtual Storage_BaseDriver& GetReference (Standard_Integer& aValue) Standard_OVERRIDE;
204 Standard_EXPORT virtual Storage_BaseDriver& GetCharacter (Standard_Character& aValue) Standard_OVERRIDE;
206 Standard_EXPORT virtual Storage_BaseDriver& GetExtCharacter (Standard_ExtCharacter& aValue) Standard_OVERRIDE;
208 Standard_EXPORT virtual Storage_BaseDriver& GetInteger (Standard_Integer& aValue) Standard_OVERRIDE;
210 Standard_EXPORT virtual Storage_BaseDriver& GetBoolean (Standard_Boolean& aValue) Standard_OVERRIDE;
212 Standard_EXPORT virtual Storage_BaseDriver& GetReal (Standard_Real& aValue) Standard_OVERRIDE;
214 Standard_EXPORT virtual Storage_BaseDriver& GetShortReal (Standard_ShortReal& aValue) Standard_OVERRIDE;
216 //! Closes the file driven by this driver. This file was
217 //! opened by the last call to the function Open.
218 //! The function returns Storage_VSOk if the
219 //! closure is correctly done, or any other value of
220 //! the Storage_Error enumeration which specifies the problem encountered.
221 Standard_EXPORT virtual Storage_Error Close() Standard_OVERRIDE;
223 Standard_EXPORT void Destroy();
229 Standard_EXPORT static Standard_CString MagicNumber();
233 //! read from the current position to the end of line.
234 Standard_EXPORT virtual void ReadLine (TCollection_AsciiString& buffer);
236 //! read from the current position to the next white space or end of line.
237 Standard_EXPORT virtual void ReadWord (TCollection_AsciiString& buffer);
239 //! read extended chars (unicode) from the current position to the end of line.
240 Standard_EXPORT virtual void ReadExtendedLine (TCollection_ExtendedString& buffer);
242 //! write from the current position to the end of line.
243 Standard_EXPORT virtual void WriteExtendedLine (const TCollection_ExtendedString& buffer);
245 //! read <rsize> character from the current position.
246 Standard_EXPORT virtual void ReadChar (TCollection_AsciiString& buffer, const Standard_Size rsize);
248 //! read from the first none space character position to the end of line.
249 Standard_EXPORT virtual void ReadString (TCollection_AsciiString& buffer);
251 Standard_EXPORT virtual void FlushEndOfLine();
253 Standard_EXPORT virtual Storage_Error FindTag (const Standard_CString aTag);
256 FSD_FStream myStream;
259 #endif // _FSD_File_HeaderFile