0024234: occt master is not compiled by VC++ 2005 (vc8 32/64 bit TKBO)
[occt.git] / src / DDF / DDF_IOStream.hxx
1 // Created on: 1997-08-22
2 // Created by: DAUTRY Philippe
3 // Copyright (c) 1997-1999 Matra Datavision
4 // Copyright (c) 1999-2012 OPEN CASCADE SAS
5 //
6 // The content of this file is subject to the Open CASCADE Technology Public
7 // License Version 6.5 (the "License"). You may not use the content of this file
8 // except in compliance with the License. Please obtain a copy of the License
9 // at http://www.opencascade.org and read it completely before using this file.
10 //
11 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 //
14 // The Original Code and all software distributed under the License is
15 // distributed on an "AS IS" basis, without warranty of any kind, and the
16 // Initial Developer hereby disclaims all such warranties, including without
17 // limitation, any warranties of merchantability, fitness for a particular
18 // purpose or non-infringement. Please see the License for the specific terms
19 // and conditions governing the rights and limitations under the License.
20
21 // This file has been written using FSD_File.hxx as template.
22 // This is a specific adaptation for Draw use (save & restore commands).
23 // It is not sure at all this code is portable on any other plateform than
24 // SUN OS. Don't use it anywhere else.
25 // Thanks for comprehension. (22 august 97)
26
27
28 #ifndef DDF_IOStream_HeaderFile
29 #define DDF_IOStream_HeaderFile
30
31 #include <stdio.h>
32
33 #ifndef _Storage_BaseDriver_HeaderFile
34 #include <Storage_BaseDriver.hxx>
35 #endif
36 #ifndef _Storage_Error_HeaderFile
37 #include <Storage_Error.hxx>
38 #endif
39 #ifndef _Storage_OpenMode_HeaderFile
40 #include <Storage_OpenMode.hxx>
41 #endif
42 #ifndef _Standard_Boolean_HeaderFile
43 #include <Standard_Boolean.hxx>
44 #endif
45 #ifndef _Standard_Integer_HeaderFile
46 #include <Standard_Integer.hxx>
47 #endif
48 #ifndef _Standard_Character_HeaderFile
49 #include <Standard_Character.hxx>
50 #endif
51 #ifndef _Standard_ExtCharacter_HeaderFile
52 #include <Standard_ExtCharacter.hxx>
53 #endif
54 #ifndef _Standard_Real_HeaderFile
55 #include <Standard_Real.hxx>
56 #endif
57 #ifndef _Standard_ShortReal_HeaderFile
58 #include <Standard_ShortReal.hxx>
59 #endif
60 #ifndef _Standard_CString_HeaderFile
61 #include <Standard_CString.hxx>
62 #endif
63 #include <Storage_Position.hxx>
64
65 class Storage_StreamTypeMismatchError;
66 class Storage_StreamFormatError;
67 class Storage_StreamWriteError;
68 class Storage_StreamExtCharParityError;
69
70 class TColStd_SequenceOfExtendedString;
71
72 #ifndef Standard_EXPORT
73 #ifdef WNT
74 #define Standard_EXPORT __declspec(dllexport)
75 #else
76 #define Standard_EXPORT
77 #endif
78 #endif
79 #ifdef WNT
80 #pragma warning (disable : 4275)
81 #endif
82
83 class Standard_EXPORT DDF_IOStream  : public Storage_BaseDriver {
84
85 public:
86
87  // Methods PUBLIC
88  // 
89 DDF_IOStream();
90   Storage_Error Open(const TCollection_AsciiString& aName,const Storage_OpenMode aMode) ;
91   Storage_Error Open(istream* anIStream) ;
92   Storage_Error Open(ostream* anOStream) ;
93   Standard_Boolean IsEnd() ;
94   Storage_Position Tell() { return -1; }
95 static  Storage_Error IsGoodFileType(istream* anIStream) ;
96   Storage_Error BeginWriteInfoSection() ;
97   void WriteInfo(const Standard_Integer nbObj,const TCollection_AsciiString& dbVersion,const TCollection_AsciiString& date,const TCollection_AsciiString& schemaName,const TCollection_AsciiString& schemaVersion,const TCollection_ExtendedString& appName,const TCollection_AsciiString& appVersion,const TCollection_ExtendedString& objectType,const TColStd_SequenceOfAsciiString& userInfo) ;
98   Storage_Error EndWriteInfoSection() ;
99   Storage_Error BeginReadInfoSection() ;
100   void ReadInfo(Standard_Integer& nbObj,TCollection_AsciiString& dbVersion,TCollection_AsciiString& date,TCollection_AsciiString& schemaName,TCollection_AsciiString& schemaVersion,TCollection_ExtendedString& appName,TCollection_AsciiString& appVersion,TCollection_ExtendedString& objectType,TColStd_SequenceOfAsciiString& userInfo) ;
101   Storage_Error EndReadInfoSection() ;
102   Storage_Error BeginWriteCommentSection() ;
103   void WriteComment(const TColStd_SequenceOfExtendedString& userComments) ;
104   Storage_Error EndWriteCommentSection() ;
105   Storage_Error BeginReadCommentSection() ;
106   void ReadComment(TColStd_SequenceOfExtendedString& userComments) ;
107   Storage_Error EndReadCommentSection() ;
108   Storage_Error BeginWriteTypeSection() ;
109   void SetTypeSectionSize(const Standard_Integer aSize) ;
110   void WriteTypeInformations(const Standard_Integer typeNum,const TCollection_AsciiString& typeName) ;
111   Storage_Error EndWriteTypeSection() ;
112   Storage_Error BeginReadTypeSection() ;
113   Standard_Integer TypeSectionSize() ;
114   void ReadTypeInformations(Standard_Integer& typeNum,TCollection_AsciiString& typeName) ;
115   Storage_Error EndReadTypeSection() ;
116   Storage_Error BeginWriteRootSection() ;
117   void SetRootSectionSize(const Standard_Integer aSize) ;
118   void WriteRoot(const TCollection_AsciiString& rootName,const Standard_Integer aRef,const TCollection_AsciiString& aType) ;
119   Storage_Error EndWriteRootSection() ;
120   Storage_Error BeginReadRootSection() ;
121   Standard_Integer RootSectionSize() ;
122   void ReadRoot(TCollection_AsciiString& rootName,Standard_Integer& aRef,TCollection_AsciiString& aType) ;
123   Storage_Error EndReadRootSection() ;
124   Storage_Error BeginWriteRefSection() ;
125   void SetRefSectionSize(const Standard_Integer aSize) ;
126   void WriteReferenceType(const Standard_Integer reference,const Standard_Integer typeNum) ;
127   Storage_Error EndWriteRefSection() ;
128   Storage_Error BeginReadRefSection() ;
129   Standard_Integer RefSectionSize() ;
130   void ReadReferenceType(Standard_Integer& reference,Standard_Integer& typeNum) ;
131   Storage_Error EndReadRefSection() ;
132   Storage_Error BeginWriteDataSection() ;
133   void WritePersistentObjectHeader(const Standard_Integer aRef,const Standard_Integer aType) ;
134   void BeginWritePersistentObjectData() ;
135   void BeginWriteObjectData() ;
136   void EndWriteObjectData() ;
137   void EndWritePersistentObjectData() ;
138   Storage_Error EndWriteDataSection() ;
139   Storage_Error BeginReadDataSection() ;
140   void ReadPersistentObjectHeader(Standard_Integer& aRef,Standard_Integer& aType) ;
141   void BeginReadPersistentObjectData() ;
142   void BeginReadObjectData() ;
143   void EndReadObjectData() ;
144   void EndReadPersistentObjectData() ;
145   Storage_Error EndReadDataSection() ;
146   void SkipObject() ;
147   Storage_BaseDriver& PutReference(const Standard_Integer aValue) ;
148   Storage_BaseDriver& PutCharacter(const Standard_Character aValue) ;
149   Storage_BaseDriver& operator <<(const Standard_Character aValue) 
150 {
151   return PutCharacter(aValue);
152 }
153
154   Storage_BaseDriver& PutExtCharacter(const Standard_ExtCharacter aValue) ;
155   Storage_BaseDriver& operator <<(const Standard_ExtCharacter aValue) 
156 {
157   return PutExtCharacter(aValue);
158 }
159
160   Storage_BaseDriver& PutInteger(const Standard_Integer aValue) ;
161   Storage_BaseDriver& operator <<(const Standard_Integer aValue) 
162 {
163   return PutInteger(aValue);
164 }
165
166   Storage_BaseDriver& PutBoolean(const Standard_Boolean aValue) ;
167   Storage_BaseDriver& operator <<(const Standard_Boolean aValue) 
168 {
169   return PutBoolean(aValue);
170 }
171
172   Storage_BaseDriver& PutReal(const Standard_Real aValue) ;
173   Storage_BaseDriver& operator <<(const Standard_Real aValue) 
174 {
175   return PutReal(aValue);
176 }
177
178   Storage_BaseDriver& PutShortReal(const Standard_ShortReal aValue) ;
179   Storage_BaseDriver& operator <<(const Standard_ShortReal aValue) 
180 {
181   return PutShortReal(aValue);
182 }
183
184   Storage_BaseDriver& GetReference(Standard_Integer& aValue) ;
185   Storage_BaseDriver& GetCharacter(Standard_Character& aValue) ;
186   Storage_BaseDriver& operator >>(Standard_Character& aValue) 
187 {
188   return GetCharacter(aValue);
189 }
190
191   Storage_BaseDriver& GetExtCharacter(Standard_ExtCharacter& aValue) ;
192   Storage_BaseDriver& operator >>(Standard_ExtCharacter& aValue) 
193 {
194   return GetExtCharacter(aValue);
195 }
196
197   Storage_BaseDriver& GetInteger(Standard_Integer& aValue) ;
198   Storage_BaseDriver& operator >>(Standard_Integer& aValue) 
199 {
200   return GetInteger(aValue);
201 }
202
203   Storage_BaseDriver& GetBoolean(Standard_Boolean& aValue) ;
204   Storage_BaseDriver& operator >>(Standard_Boolean& aValue) 
205 {
206   return GetBoolean(aValue);
207 }
208
209   Storage_BaseDriver& GetReal(Standard_Real& aValue) ;
210   Storage_BaseDriver& operator >>(Standard_Real& aValue) 
211 {
212   return GetReal(aValue);
213 }
214
215   Storage_BaseDriver& GetShortReal(Standard_ShortReal& aValue) ;
216   Storage_BaseDriver& operator >>(Standard_ShortReal& aValue) 
217 {
218   return GetShortReal(aValue);
219 }
220
221   Storage_Error Close() ;
222   void Destroy() ;
223 ~DDF_IOStream()
224 {
225   Destroy();
226 }
227
228
229
230
231
232
233 protected:
234
235  // Methods PROTECTED
236  // 
237   void ReadLine(TCollection_AsciiString& buffer) ;
238   void ReadWord(TCollection_AsciiString& buffer) ;
239   void ReadExtendedLine(TCollection_ExtendedString& buffer) ;
240   void WriteExtendedLine(const TCollection_ExtendedString& buffer) ;
241   void ReadChar(TCollection_AsciiString& buffer,const Standard_Integer rsize) ;
242   void ReadString(TCollection_AsciiString& buffer) ;
243   void FlushEndOfLine() ;
244   Storage_Error FindTag(const Standard_CString aTag) ;
245
246
247  // Fields PROTECTED
248  //
249
250
251 private: 
252
253  // Methods PRIVATE
254  // 
255 static const Standard_CString MagicNumber() ;
256
257
258  // Fields PRIVATE
259  //
260 //FSD_FStream myStream;
261 istream* myIStream;
262 ostream* myOStream;
263
264
265 };
266
267 #ifdef WNT
268 #pragma warning (default : 4275)
269 #endif
270
271
272 // other inline functions and methods (like "C++: function call" methods)
273 //
274 #endif