0031687: Draw Harness, ViewerTest - extend command vrenderparams with option updating...
[occt.git] / src / FSD / FSD_File.hxx
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
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
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.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #ifndef _FSD_File_HeaderFile
18 #define _FSD_File_HeaderFile
19
20 #include <FSD_FStream.hxx>
21 #include <Storage_BaseDriver.hxx>
22
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;
30
31 DEFINE_STANDARD_HANDLE(FSD_File,Storage_BaseDriver)
32
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
36 {
37 public:
38   DEFINE_STANDARD_RTTIEXT(FSD_File,Storage_BaseDriver)
39
40 public:
41
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();
46   
47
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;
55   
56   Standard_EXPORT virtual Standard_Boolean IsEnd() Standard_OVERRIDE;
57   
58   //! return position in the file. Return -1 upon error.
59   Standard_EXPORT virtual Storage_Position Tell() Standard_OVERRIDE;
60   
61   Standard_EXPORT static Storage_Error IsGoodFileType (const TCollection_AsciiString& aName);
62   
63   Standard_EXPORT virtual Storage_Error BeginWriteInfoSection() Standard_OVERRIDE;
64   
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;
74   
75   Standard_EXPORT virtual Storage_Error EndWriteInfoSection() Standard_OVERRIDE;
76   
77   Standard_EXPORT virtual Storage_Error BeginReadInfoSection() Standard_OVERRIDE;
78   
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;
88
89   Standard_EXPORT virtual void ReadCompleteInfo (Standard_IStream& theIStream, Handle(Storage_Data)& theData) Standard_OVERRIDE;
90   
91   Standard_EXPORT virtual Storage_Error EndReadInfoSection() Standard_OVERRIDE;
92   
93   Standard_EXPORT virtual Storage_Error BeginWriteCommentSection() Standard_OVERRIDE;
94   
95   Standard_EXPORT virtual void WriteComment (const TColStd_SequenceOfExtendedString& userComments) Standard_OVERRIDE;
96   
97   Standard_EXPORT virtual Storage_Error EndWriteCommentSection() Standard_OVERRIDE;
98   
99   Standard_EXPORT virtual Storage_Error BeginReadCommentSection() Standard_OVERRIDE;
100   
101   Standard_EXPORT virtual void ReadComment (TColStd_SequenceOfExtendedString& userComments) Standard_OVERRIDE;
102   
103   Standard_EXPORT virtual Storage_Error EndReadCommentSection() Standard_OVERRIDE;
104   
105   Standard_EXPORT virtual Storage_Error BeginWriteTypeSection() Standard_OVERRIDE;
106   
107   Standard_EXPORT virtual void SetTypeSectionSize (const Standard_Integer aSize) Standard_OVERRIDE;
108   
109   Standard_EXPORT virtual void WriteTypeInformations (const Standard_Integer typeNum, 
110                                                       const TCollection_AsciiString& typeName) Standard_OVERRIDE;
111   
112   Standard_EXPORT virtual Storage_Error EndWriteTypeSection() Standard_OVERRIDE;
113   
114   Standard_EXPORT virtual Storage_Error BeginReadTypeSection() Standard_OVERRIDE;
115   
116   Standard_EXPORT virtual Standard_Integer TypeSectionSize() Standard_OVERRIDE;
117   
118   Standard_EXPORT virtual void ReadTypeInformations (Standard_Integer& typeNum, TCollection_AsciiString& typeName) Standard_OVERRIDE;
119   
120   Standard_EXPORT virtual Storage_Error EndReadTypeSection() Standard_OVERRIDE;
121   
122   Standard_EXPORT virtual Storage_Error BeginWriteRootSection() Standard_OVERRIDE;
123   
124   Standard_EXPORT virtual void SetRootSectionSize (const Standard_Integer aSize) Standard_OVERRIDE;
125   
126   Standard_EXPORT virtual void WriteRoot (const TCollection_AsciiString& rootName, 
127                                           const Standard_Integer aRef, 
128                                           const TCollection_AsciiString& aType) Standard_OVERRIDE;
129   
130   Standard_EXPORT virtual Storage_Error EndWriteRootSection() Standard_OVERRIDE;
131   
132   Standard_EXPORT virtual Storage_Error BeginReadRootSection() Standard_OVERRIDE;
133   
134   Standard_EXPORT virtual Standard_Integer RootSectionSize() Standard_OVERRIDE;
135   
136   Standard_EXPORT virtual void ReadRoot (TCollection_AsciiString& rootName, 
137                                          Standard_Integer& aRef, 
138                                          TCollection_AsciiString& aType) Standard_OVERRIDE;
139   
140   Standard_EXPORT virtual Storage_Error EndReadRootSection() Standard_OVERRIDE;
141   
142   Standard_EXPORT virtual Storage_Error BeginWriteRefSection() Standard_OVERRIDE;
143   
144   Standard_EXPORT virtual void SetRefSectionSize (const Standard_Integer aSize) Standard_OVERRIDE;
145   
146   Standard_EXPORT virtual void WriteReferenceType (const Standard_Integer reference, const Standard_Integer typeNum) Standard_OVERRIDE;
147   
148   Standard_EXPORT virtual Storage_Error EndWriteRefSection() Standard_OVERRIDE;
149   
150   Standard_EXPORT virtual Storage_Error BeginReadRefSection() Standard_OVERRIDE;
151   
152   Standard_EXPORT virtual Standard_Integer RefSectionSize() Standard_OVERRIDE;
153   
154   Standard_EXPORT virtual void ReadReferenceType (Standard_Integer& reference, Standard_Integer& typeNum) Standard_OVERRIDE;
155   
156   Standard_EXPORT virtual Storage_Error EndReadRefSection() Standard_OVERRIDE;
157   
158   Standard_EXPORT virtual Storage_Error BeginWriteDataSection() Standard_OVERRIDE;
159   
160   Standard_EXPORT virtual void WritePersistentObjectHeader (const Standard_Integer aRef, const Standard_Integer aType) Standard_OVERRIDE;
161   
162   Standard_EXPORT virtual void BeginWritePersistentObjectData() Standard_OVERRIDE;
163   
164   Standard_EXPORT virtual void BeginWriteObjectData() Standard_OVERRIDE;
165   
166   Standard_EXPORT virtual void EndWriteObjectData() Standard_OVERRIDE;
167   
168   Standard_EXPORT virtual void EndWritePersistentObjectData() Standard_OVERRIDE;
169   
170   Standard_EXPORT virtual Storage_Error EndWriteDataSection() Standard_OVERRIDE;
171   
172   Standard_EXPORT virtual Storage_Error BeginReadDataSection() Standard_OVERRIDE;
173   
174   Standard_EXPORT virtual void ReadPersistentObjectHeader (Standard_Integer& aRef, Standard_Integer& aType) Standard_OVERRIDE;
175   
176   Standard_EXPORT virtual void BeginReadPersistentObjectData() Standard_OVERRIDE;
177   
178   Standard_EXPORT virtual void BeginReadObjectData() Standard_OVERRIDE;
179   
180   Standard_EXPORT virtual void EndReadObjectData() Standard_OVERRIDE;
181   
182   Standard_EXPORT virtual void EndReadPersistentObjectData() Standard_OVERRIDE;
183   
184   Standard_EXPORT virtual Storage_Error EndReadDataSection() Standard_OVERRIDE;
185   
186   Standard_EXPORT virtual void SkipObject() Standard_OVERRIDE;
187   
188   Standard_EXPORT virtual Storage_BaseDriver& PutReference (const Standard_Integer aValue) Standard_OVERRIDE;
189   
190   Standard_EXPORT virtual Storage_BaseDriver& PutCharacter (const Standard_Character aValue) Standard_OVERRIDE;
191
192   Standard_EXPORT virtual Storage_BaseDriver& PutExtCharacter(const Standard_ExtCharacter aValue) Standard_OVERRIDE;
193   
194   Standard_EXPORT virtual Storage_BaseDriver& PutInteger (const Standard_Integer aValue) Standard_OVERRIDE;
195   
196   Standard_EXPORT virtual Storage_BaseDriver& PutBoolean (const Standard_Boolean aValue) Standard_OVERRIDE;
197   
198   Standard_EXPORT virtual Storage_BaseDriver& PutReal (const Standard_Real aValue) Standard_OVERRIDE;
199   
200   Standard_EXPORT virtual Storage_BaseDriver& PutShortReal (const Standard_ShortReal aValue) Standard_OVERRIDE;
201   
202   Standard_EXPORT virtual Storage_BaseDriver& GetReference (Standard_Integer& aValue) Standard_OVERRIDE;
203   
204   Standard_EXPORT virtual Storage_BaseDriver& GetCharacter (Standard_Character& aValue) Standard_OVERRIDE;
205   
206   Standard_EXPORT virtual Storage_BaseDriver& GetExtCharacter (Standard_ExtCharacter& aValue) Standard_OVERRIDE;
207   
208   Standard_EXPORT virtual Storage_BaseDriver& GetInteger (Standard_Integer& aValue) Standard_OVERRIDE;
209   
210   Standard_EXPORT virtual Storage_BaseDriver& GetBoolean (Standard_Boolean& aValue) Standard_OVERRIDE;
211   
212   Standard_EXPORT virtual Storage_BaseDriver& GetReal (Standard_Real& aValue) Standard_OVERRIDE;
213   
214   Standard_EXPORT virtual Storage_BaseDriver& GetShortReal (Standard_ShortReal& aValue) Standard_OVERRIDE;  
215
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;
222   
223   Standard_EXPORT void Destroy();
224 ~FSD_File()
225 {
226   Destroy();
227 }
228
229   Standard_EXPORT static Standard_CString MagicNumber();
230
231 protected:
232   
233   //! read from the current position to the end of line.
234   Standard_EXPORT virtual void ReadLine (TCollection_AsciiString& buffer);
235   
236   //! read from the current position to the next white space or end of line.
237   Standard_EXPORT virtual void ReadWord (TCollection_AsciiString& buffer);
238   
239   //! read extended chars (unicode) from the current position to the end of line.
240   Standard_EXPORT virtual void ReadExtendedLine (TCollection_ExtendedString& buffer);
241   
242   //! write from the current position to the end of line.
243   Standard_EXPORT virtual void WriteExtendedLine (const TCollection_ExtendedString& buffer);
244   
245   //! read <rsize> character from the current position.
246   Standard_EXPORT virtual void ReadChar (TCollection_AsciiString& buffer, const Standard_Size rsize);
247   
248   //! read from the first none space character position to the end of line.
249   Standard_EXPORT virtual void ReadString (TCollection_AsciiString& buffer);
250   
251   Standard_EXPORT virtual void FlushEndOfLine();
252   
253   Standard_EXPORT virtual Storage_Error FindTag (const Standard_CString aTag);
254
255 protected:
256   FSD_FStream myStream;
257 };
258
259 #endif // _FSD_File_HeaderFile