Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: xfa/fgas/crt/fgas_stream.cpp

Issue 2467203003: Remove FX_BOOL from xfa. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fgas/crt/fgas_stream.h ('k') | xfa/fgas/crt/fgas_utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "xfa/fgas/crt/fgas_stream.h" 7 #include "xfa/fgas/crt/fgas_stream.h"
8 8
9 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \ 9 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \
10 _FX_OS_ == _FX_WIN64_ 10 _FX_OS_ == _FX_WIN64_
11 #include <io.h> 11 #include <io.h>
12 #endif 12 #endif
13 13
14 #include <algorithm> 14 #include <algorithm>
15 #include <memory> 15 #include <memory>
16 16
17 #include "xfa/fgas/crt/fgas_codepage.h" 17 #include "xfa/fgas/crt/fgas_codepage.h"
18 18
19 namespace { 19 namespace {
20 20
21 class IFX_StreamImp { 21 class IFX_StreamImp {
22 public: 22 public:
23 virtual ~IFX_StreamImp() {} 23 virtual ~IFX_StreamImp() {}
24 24
25 virtual int32_t GetLength() const = 0; 25 virtual int32_t GetLength() const = 0;
26 virtual int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) = 0; 26 virtual int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) = 0;
27 virtual int32_t GetPosition() = 0; 27 virtual int32_t GetPosition() = 0;
28 virtual FX_BOOL IsEOF() const = 0; 28 virtual bool IsEOF() const = 0;
29 virtual int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) = 0; 29 virtual int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) = 0;
30 virtual int32_t ReadString(FX_WCHAR* pStr, 30 virtual int32_t ReadString(FX_WCHAR* pStr,
31 int32_t iMaxLength, 31 int32_t iMaxLength,
32 FX_BOOL& bEOS) = 0; 32 bool& bEOS) = 0;
33 virtual int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) = 0; 33 virtual int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) = 0;
34 virtual int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) = 0; 34 virtual int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) = 0;
35 virtual void Flush() = 0; 35 virtual void Flush() = 0;
36 virtual FX_BOOL SetLength(int32_t iLength) = 0; 36 virtual bool SetLength(int32_t iLength) = 0;
37 37
38 protected: 38 protected:
39 IFX_StreamImp(); 39 IFX_StreamImp();
40 40
41 uint32_t GetAccessModes() const { return m_dwAccess; } 41 uint32_t GetAccessModes() const { return m_dwAccess; }
42 void SetAccessModes(uint32_t modes) { m_dwAccess = modes; } 42 void SetAccessModes(uint32_t modes) { m_dwAccess = modes; }
43 43
44 private: 44 private:
45 uint32_t m_dwAccess; 45 uint32_t m_dwAccess;
46 }; 46 };
47 47
48 class CFX_FileStreamImp : public IFX_StreamImp { 48 class CFX_FileStreamImp : public IFX_StreamImp {
49 public: 49 public:
50 CFX_FileStreamImp(); 50 CFX_FileStreamImp();
51 ~CFX_FileStreamImp() override; 51 ~CFX_FileStreamImp() override;
52 52
53 FX_BOOL LoadFile(const FX_WCHAR* pszSrcFileName, uint32_t dwAccess); 53 bool LoadFile(const FX_WCHAR* pszSrcFileName, uint32_t dwAccess);
54 54
55 // IFX_StreamImp: 55 // IFX_StreamImp:
56 int32_t GetLength() const override; 56 int32_t GetLength() const override;
57 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override; 57 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override;
58 int32_t GetPosition() override; 58 int32_t GetPosition() override;
59 FX_BOOL IsEOF() const override; 59 bool IsEOF() const override;
60 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override; 60 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override;
61 int32_t ReadString(FX_WCHAR* pStr, 61 int32_t ReadString(FX_WCHAR* pStr, int32_t iMaxLength, bool& bEOS) override;
62 int32_t iMaxLength,
63 FX_BOOL& bEOS) override;
64 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override; 62 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override;
65 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override; 63 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override;
66 void Flush() override; 64 void Flush() override;
67 FX_BOOL SetLength(int32_t iLength) override; 65 bool SetLength(int32_t iLength) override;
68 66
69 protected: 67 protected:
70 FXSYS_FILE* m_hFile; 68 FXSYS_FILE* m_hFile;
71 int32_t m_iLength; 69 int32_t m_iLength;
72 }; 70 };
73 71
74 class CFX_BufferStreamImp : public IFX_StreamImp { 72 class CFX_BufferStreamImp : public IFX_StreamImp {
75 public: 73 public:
76 CFX_BufferStreamImp(); 74 CFX_BufferStreamImp();
77 ~CFX_BufferStreamImp() override {} 75 ~CFX_BufferStreamImp() override {}
78 76
79 FX_BOOL LoadBuffer(uint8_t* pData, int32_t iTotalSize, uint32_t dwAccess); 77 bool LoadBuffer(uint8_t* pData, int32_t iTotalSize, uint32_t dwAccess);
80 78
81 // IFX_StreamImp: 79 // IFX_StreamImp:
82 int32_t GetLength() const override; 80 int32_t GetLength() const override;
83 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override; 81 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override;
84 int32_t GetPosition() override; 82 int32_t GetPosition() override;
85 FX_BOOL IsEOF() const override; 83 bool IsEOF() const override;
86 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override; 84 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override;
87 int32_t ReadString(FX_WCHAR* pStr, 85 int32_t ReadString(FX_WCHAR* pStr, int32_t iMaxLength, bool& bEOS) override;
88 int32_t iMaxLength,
89 FX_BOOL& bEOS) override;
90 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override; 86 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override;
91 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override; 87 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override;
92 void Flush() override {} 88 void Flush() override {}
93 FX_BOOL SetLength(int32_t iLength) override { return FALSE; } 89 bool SetLength(int32_t iLength) override { return false; }
94 90
95 protected: 91 protected:
96 uint8_t* m_pData; 92 uint8_t* m_pData;
97 int32_t m_iTotalSize; 93 int32_t m_iTotalSize;
98 int32_t m_iPosition; 94 int32_t m_iPosition;
99 int32_t m_iLength; 95 int32_t m_iLength;
100 }; 96 };
101 97
102 class CFX_FileReadStreamImp : public IFX_StreamImp { 98 class CFX_FileReadStreamImp : public IFX_StreamImp {
103 public: 99 public:
104 CFX_FileReadStreamImp(); 100 CFX_FileReadStreamImp();
105 ~CFX_FileReadStreamImp() override {} 101 ~CFX_FileReadStreamImp() override {}
106 102
107 FX_BOOL LoadFileRead(IFX_SeekableReadStream* pFileRead, uint32_t dwAccess); 103 bool LoadFileRead(IFX_SeekableReadStream* pFileRead, uint32_t dwAccess);
108 104
109 // IFX_StreamImp: 105 // IFX_StreamImp:
110 int32_t GetLength() const override; 106 int32_t GetLength() const override;
111 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override; 107 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override;
112 int32_t GetPosition() override { return m_iPosition; } 108 int32_t GetPosition() override { return m_iPosition; }
113 FX_BOOL IsEOF() const override; 109 bool IsEOF() const override;
114 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override; 110 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override;
115 int32_t ReadString(FX_WCHAR* pStr, 111 int32_t ReadString(FX_WCHAR* pStr, int32_t iMaxLength, bool& bEOS) override;
116 int32_t iMaxLength,
117 FX_BOOL& bEOS) override;
118 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override { 112 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override {
119 return 0; 113 return 0;
120 } 114 }
121 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override { 115 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override {
122 return 0; 116 return 0;
123 } 117 }
124 void Flush() override {} 118 void Flush() override {}
125 FX_BOOL SetLength(int32_t iLength) override { return FALSE; } 119 bool SetLength(int32_t iLength) override { return false; }
126 120
127 protected: 121 protected:
128 IFX_SeekableReadStream* m_pFileRead; 122 IFX_SeekableReadStream* m_pFileRead;
129 int32_t m_iPosition; 123 int32_t m_iPosition;
130 int32_t m_iLength; 124 int32_t m_iLength;
131 }; 125 };
132 126
133 class CFX_BufferReadStreamImp : public IFX_StreamImp { 127 class CFX_BufferReadStreamImp : public IFX_StreamImp {
134 public: 128 public:
135 CFX_BufferReadStreamImp(); 129 CFX_BufferReadStreamImp();
136 ~CFX_BufferReadStreamImp() override; 130 ~CFX_BufferReadStreamImp() override;
137 131
138 FX_BOOL LoadBufferRead(IFX_BufferRead* pBufferRead, 132 bool LoadBufferRead(IFX_BufferRead* pBufferRead,
139 int32_t iFileSize, 133 int32_t iFileSize,
140 uint32_t dwAccess, 134 uint32_t dwAccess,
141 FX_BOOL bReleaseBufferRead); 135 bool bReleaseBufferRead);
142 136
143 // IFX_StreamImp: 137 // IFX_StreamImp:
144 int32_t GetLength() const override; 138 int32_t GetLength() const override;
145 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override; 139 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override;
146 int32_t GetPosition() override { return m_iPosition; } 140 int32_t GetPosition() override { return m_iPosition; }
147 FX_BOOL IsEOF() const override; 141 bool IsEOF() const override;
148 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override; 142 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override;
149 int32_t ReadString(FX_WCHAR* pStr, 143 int32_t ReadString(FX_WCHAR* pStr, int32_t iMaxLength, bool& bEOS) override;
150 int32_t iMaxLength,
151 FX_BOOL& bEOS) override;
152 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override { 144 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override {
153 return 0; 145 return 0;
154 } 146 }
155 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override { 147 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override {
156 return 0; 148 return 0;
157 } 149 }
158 void Flush() override {} 150 void Flush() override {}
159 FX_BOOL SetLength(int32_t iLength) override { return FALSE; } 151 bool SetLength(int32_t iLength) override { return false; }
160 152
161 private: 153 private:
162 IFX_BufferRead* m_pBufferRead; 154 IFX_BufferRead* m_pBufferRead;
163 FX_BOOL m_bReleaseBufferRead; 155 bool m_bReleaseBufferRead;
164 int32_t m_iPosition; 156 int32_t m_iPosition;
165 int32_t m_iBufferSize; 157 int32_t m_iBufferSize;
166 }; 158 };
167 159
168 class CFX_FileWriteStreamImp : public IFX_StreamImp { 160 class CFX_FileWriteStreamImp : public IFX_StreamImp {
169 public: 161 public:
170 CFX_FileWriteStreamImp(); 162 CFX_FileWriteStreamImp();
171 ~CFX_FileWriteStreamImp() override {} 163 ~CFX_FileWriteStreamImp() override {}
172 164
173 FX_BOOL LoadFileWrite(IFX_SeekableWriteStream* pFileWrite, uint32_t dwAccess); 165 bool LoadFileWrite(IFX_SeekableWriteStream* pFileWrite, uint32_t dwAccess);
174 166
175 // IFX_StreamImp: 167 // IFX_StreamImp:
176 int32_t GetLength() const override; 168 int32_t GetLength() const override;
177 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override; 169 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override;
178 int32_t GetPosition() override { return m_iPosition; } 170 int32_t GetPosition() override { return m_iPosition; }
179 FX_BOOL IsEOF() const override; 171 bool IsEOF() const override;
180 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override { return 0; } 172 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override { return 0; }
181 int32_t ReadString(FX_WCHAR* pStr, 173 int32_t ReadString(FX_WCHAR* pStr, int32_t iMaxLength, bool& bEOS) override {
182 int32_t iMaxLength,
183 FX_BOOL& bEOS) override {
184 return 0; 174 return 0;
185 } 175 }
186 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override; 176 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override;
187 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override; 177 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override;
188 void Flush() override; 178 void Flush() override;
189 FX_BOOL SetLength(int32_t iLength) override { return FALSE; } 179 bool SetLength(int32_t iLength) override { return false; }
190 180
191 protected: 181 protected:
192 IFX_SeekableWriteStream* m_pFileWrite; 182 IFX_SeekableWriteStream* m_pFileWrite;
193 int32_t m_iPosition; 183 int32_t m_iPosition;
194 }; 184 };
195 185
196 enum FX_STREAMTYPE { 186 enum FX_STREAMTYPE {
197 FX_SREAMTYPE_Unknown = 0, 187 FX_SREAMTYPE_Unknown = 0,
198 FX_STREAMTYPE_File, 188 FX_STREAMTYPE_File,
199 FX_STREAMTYPE_Buffer, 189 FX_STREAMTYPE_Buffer,
200 FX_STREAMTYPE_Stream, 190 FX_STREAMTYPE_Stream,
201 FX_STREAMTYPE_BufferRead, 191 FX_STREAMTYPE_BufferRead,
202 }; 192 };
203 193
204 class CFX_Stream : public IFX_Stream { 194 class CFX_Stream : public IFX_Stream {
205 public: 195 public:
206 CFX_Stream(); 196 CFX_Stream();
207 ~CFX_Stream() override; 197 ~CFX_Stream() override;
208 198
209 FX_BOOL LoadFile(const FX_WCHAR* pszSrcFileName, uint32_t dwAccess); 199 bool LoadFile(const FX_WCHAR* pszSrcFileName, uint32_t dwAccess);
210 FX_BOOL LoadBuffer(uint8_t* pData, int32_t iTotalSize, uint32_t dwAccess); 200 bool LoadBuffer(uint8_t* pData, int32_t iTotalSize, uint32_t dwAccess);
211 FX_BOOL LoadFileRead(IFX_SeekableReadStream* pFileRead, uint32_t dwAccess); 201 bool LoadFileRead(IFX_SeekableReadStream* pFileRead, uint32_t dwAccess);
212 FX_BOOL LoadFileWrite(IFX_SeekableWriteStream* pFileWrite, uint32_t dwAccess); 202 bool LoadFileWrite(IFX_SeekableWriteStream* pFileWrite, uint32_t dwAccess);
213 FX_BOOL LoadBufferRead(IFX_BufferRead* pBufferRead, 203 bool LoadBufferRead(IFX_BufferRead* pBufferRead,
214 int32_t iFileSize, 204 int32_t iFileSize,
215 uint32_t dwAccess, 205 uint32_t dwAccess,
216 FX_BOOL bReleaseBufferRead); 206 bool bReleaseBufferRead);
217 207
218 // IFX_Stream 208 // IFX_Stream
219 void Release() override; 209 void Release() override;
220 IFX_Stream* Retain() override; 210 IFX_Stream* Retain() override;
221 uint32_t GetAccessModes() const override; 211 uint32_t GetAccessModes() const override;
222 int32_t GetLength() const override; 212 int32_t GetLength() const override;
223 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override; 213 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override;
224 int32_t GetPosition() override; 214 int32_t GetPosition() override;
225 FX_BOOL IsEOF() const override; 215 bool IsEOF() const override;
226 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override; 216 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override;
227 int32_t ReadString(FX_WCHAR* pStr, 217 int32_t ReadString(FX_WCHAR* pStr, int32_t iMaxLength, bool& bEOS) override;
228 int32_t iMaxLength,
229 FX_BOOL& bEOS) override;
230 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override; 218 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override;
231 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override; 219 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override;
232 void Flush() override; 220 void Flush() override;
233 FX_BOOL SetLength(int32_t iLength) override; 221 bool SetLength(int32_t iLength) override;
234 int32_t GetBOM(uint8_t bom[4]) const override; 222 int32_t GetBOM(uint8_t bom[4]) const override;
235 uint16_t GetCodePage() const override; 223 uint16_t GetCodePage() const override;
236 uint16_t SetCodePage(uint16_t wCodePage) override; 224 uint16_t SetCodePage(uint16_t wCodePage) override;
237 IFX_Stream* CreateSharedStream(uint32_t dwAccess, 225 IFX_Stream* CreateSharedStream(uint32_t dwAccess,
238 int32_t iOffset, 226 int32_t iOffset,
239 int32_t iLength) override; 227 int32_t iLength) override;
240 228
241 protected: 229 protected:
242 FX_STREAMTYPE m_eStreamType; 230 FX_STREAMTYPE m_eStreamType;
243 IFX_StreamImp* m_pStreamImp; 231 IFX_StreamImp* m_pStreamImp;
244 uint32_t m_dwAccess; 232 uint32_t m_dwAccess;
245 int32_t m_iTotalSize; 233 int32_t m_iTotalSize;
246 int32_t m_iPosition; 234 int32_t m_iPosition;
247 int32_t m_iStart; 235 int32_t m_iStart;
248 int32_t m_iLength; 236 int32_t m_iLength;
249 int32_t m_iRefCount; 237 int32_t m_iRefCount;
250 }; 238 };
251 239
252 class CFX_TextStream : public IFX_Stream { 240 class CFX_TextStream : public IFX_Stream {
253 public: 241 public:
254 CFX_TextStream(IFX_Stream* pStream, FX_BOOL bDelStream); 242 CFX_TextStream(IFX_Stream* pStream, bool bDelStream);
255 ~CFX_TextStream() override; 243 ~CFX_TextStream() override;
256 244
257 // IFX_Stream 245 // IFX_Stream
258 void Release() override; 246 void Release() override;
259 IFX_Stream* Retain() override; 247 IFX_Stream* Retain() override;
260 uint32_t GetAccessModes() const override; 248 uint32_t GetAccessModes() const override;
261 int32_t GetLength() const override; 249 int32_t GetLength() const override;
262 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override; 250 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override;
263 int32_t GetPosition() override; 251 int32_t GetPosition() override;
264 FX_BOOL IsEOF() const override; 252 bool IsEOF() const override;
265 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override; 253 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override;
266 int32_t ReadString(FX_WCHAR* pStr, 254 int32_t ReadString(FX_WCHAR* pStr, int32_t iMaxLength, bool& bEOS) override;
267 int32_t iMaxLength,
268 FX_BOOL& bEOS) override;
269 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override; 255 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override;
270 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override; 256 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override;
271 void Flush() override; 257 void Flush() override;
272 FX_BOOL SetLength(int32_t iLength) override; 258 bool SetLength(int32_t iLength) override;
273 int32_t GetBOM(uint8_t bom[4]) const override; 259 int32_t GetBOM(uint8_t bom[4]) const override;
274 uint16_t GetCodePage() const override; 260 uint16_t GetCodePage() const override;
275 uint16_t SetCodePage(uint16_t wCodePage) override; 261 uint16_t SetCodePage(uint16_t wCodePage) override;
276 IFX_Stream* CreateSharedStream(uint32_t dwAccess, 262 IFX_Stream* CreateSharedStream(uint32_t dwAccess,
277 int32_t iOffset, 263 int32_t iOffset,
278 int32_t iLength) override; 264 int32_t iLength) override;
279 265
280 protected: 266 protected:
281 uint16_t m_wCodePage; 267 uint16_t m_wCodePage;
282 int32_t m_wBOMLength; 268 int32_t m_wBOMLength;
283 uint32_t m_dwBOM; 269 uint32_t m_dwBOM;
284 uint8_t* m_pBuf; 270 uint8_t* m_pBuf;
285 int32_t m_iBufSize; 271 int32_t m_iBufSize;
286 FX_BOOL m_bDelStream; 272 bool m_bDelStream;
287 IFX_Stream* m_pStreamImp; 273 IFX_Stream* m_pStreamImp;
288 int32_t m_iRefCount; 274 int32_t m_iRefCount;
289 void InitStream(); 275 void InitStream();
290 }; 276 };
291 277
292 class CFGAS_FileRead : public IFX_SeekableReadStream { 278 class CFGAS_FileRead : public IFX_SeekableReadStream {
293 public: 279 public:
294 CFGAS_FileRead(IFX_Stream* pStream, bool bReleaseStream); 280 CFGAS_FileRead(IFX_Stream* pStream, bool bReleaseStream);
295 ~CFGAS_FileRead() override; 281 ~CFGAS_FileRead() override;
296 282
(...skipping 13 matching lines...) Expand all
310 return _filelength(_fileno(file)); 296 return _filelength(_fileno(file));
311 #else 297 #else
312 int32_t iPos = FXSYS_ftell(file); 298 int32_t iPos = FXSYS_ftell(file);
313 FXSYS_fseek(file, 0, FXSYS_SEEK_END); 299 FXSYS_fseek(file, 0, FXSYS_SEEK_END);
314 int32_t iLen = FXSYS_ftell(file); 300 int32_t iLen = FXSYS_ftell(file);
315 FXSYS_fseek(file, iPos, FXSYS_SEEK_SET); 301 FXSYS_fseek(file, iPos, FXSYS_SEEK_SET);
316 return iLen; 302 return iLen;
317 #endif 303 #endif
318 } 304 }
319 305
320 FX_BOOL FileSetSize(FXSYS_FILE* file, int32_t size) { 306 bool FileSetSize(FXSYS_FILE* file, int32_t size) {
321 ASSERT(file); 307 ASSERT(file);
322 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ 308 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_
323 return _chsize(_fileno(file), size) == 0; 309 return _chsize(_fileno(file), size) == 0;
324 #elif _FX_OS_ == _FX_WIN32_MOBILE_ 310 #elif _FX_OS_ == _FX_WIN32_MOBILE_
325 HANDLE hFile = _fileno(file); 311 HANDLE hFile = _fileno(file);
326 uint32_t dwPos = ::SetFilePointer(hFile, 0, 0, FILE_CURRENT); 312 uint32_t dwPos = ::SetFilePointer(hFile, 0, 0, FILE_CURRENT);
327 ::SetFilePointer(hFile, size, 0, FILE_BEGIN); 313 ::SetFilePointer(hFile, size, 0, FILE_BEGIN);
328 FX_BOOL bRet = ::SetEndOfFile(hFile); 314 bool bRet = ::SetEndOfFile(hFile);
329 ::SetFilePointer(hFile, (int32_t)dwPos, 0, FILE_BEGIN); 315 ::SetFilePointer(hFile, (int32_t)dwPos, 0, FILE_BEGIN);
330 return bRet; 316 return bRet;
331 #else 317 #else
332 return FALSE; 318 return false;
333 #endif 319 #endif
334 } 320 }
335 321
336 } // namespace 322 } // namespace
337 323
338 // static 324 // static
339 IFX_Stream* IFX_Stream::CreateStream(IFX_SeekableReadStream* pFileRead, 325 IFX_Stream* IFX_Stream::CreateStream(IFX_SeekableReadStream* pFileRead,
340 uint32_t dwAccess) { 326 uint32_t dwAccess) {
341 CFX_Stream* pSR = new CFX_Stream; 327 CFX_Stream* pSR = new CFX_Stream;
342 if (!pSR->LoadFileRead(pFileRead, dwAccess)) { 328 if (!pSR->LoadFileRead(pFileRead, dwAccess)) {
343 pSR->Release(); 329 pSR->Release();
344 return nullptr; 330 return nullptr;
345 } 331 }
346 if (dwAccess & FX_STREAMACCESS_Text) { 332 if (dwAccess & FX_STREAMACCESS_Text) {
347 return new CFX_TextStream(pSR, TRUE); 333 return new CFX_TextStream(pSR, true);
348 } 334 }
349 return pSR; 335 return pSR;
350 } 336 }
351 337
352 // static 338 // static
353 IFX_Stream* IFX_Stream::CreateStream(IFX_SeekableWriteStream* pFileWrite, 339 IFX_Stream* IFX_Stream::CreateStream(IFX_SeekableWriteStream* pFileWrite,
354 uint32_t dwAccess) { 340 uint32_t dwAccess) {
355 CFX_Stream* pSR = new CFX_Stream; 341 CFX_Stream* pSR = new CFX_Stream;
356 if (!pSR->LoadFileWrite(pFileWrite, dwAccess)) { 342 if (!pSR->LoadFileWrite(pFileWrite, dwAccess)) {
357 pSR->Release(); 343 pSR->Release();
358 return nullptr; 344 return nullptr;
359 } 345 }
360 if (dwAccess & FX_STREAMACCESS_Text) { 346 if (dwAccess & FX_STREAMACCESS_Text) {
361 return new CFX_TextStream(pSR, TRUE); 347 return new CFX_TextStream(pSR, true);
362 } 348 }
363 return pSR; 349 return pSR;
364 } 350 }
365 351
366 // static 352 // static
367 IFX_Stream* IFX_Stream::CreateStream(uint8_t* pData, 353 IFX_Stream* IFX_Stream::CreateStream(uint8_t* pData,
368 int32_t length, 354 int32_t length,
369 uint32_t dwAccess) { 355 uint32_t dwAccess) {
370 CFX_Stream* pSR = new CFX_Stream; 356 CFX_Stream* pSR = new CFX_Stream;
371 if (!pSR->LoadBuffer(pData, length, dwAccess)) { 357 if (!pSR->LoadBuffer(pData, length, dwAccess)) {
372 pSR->Release(); 358 pSR->Release();
373 return nullptr; 359 return nullptr;
374 } 360 }
375 if (dwAccess & FX_STREAMACCESS_Text) { 361 if (dwAccess & FX_STREAMACCESS_Text) {
376 return new CFX_TextStream(pSR, TRUE); 362 return new CFX_TextStream(pSR, true);
377 } 363 }
378 return pSR; 364 return pSR;
379 } 365 }
380 366
381 IFX_StreamImp::IFX_StreamImp() : m_dwAccess(0) {} 367 IFX_StreamImp::IFX_StreamImp() : m_dwAccess(0) {}
382 368
383 CFX_FileStreamImp::CFX_FileStreamImp() : m_hFile(nullptr), m_iLength(0) {} 369 CFX_FileStreamImp::CFX_FileStreamImp() : m_hFile(nullptr), m_iLength(0) {}
384 370
385 CFX_FileStreamImp::~CFX_FileStreamImp() { 371 CFX_FileStreamImp::~CFX_FileStreamImp() {
386 if (m_hFile) 372 if (m_hFile)
387 FXSYS_fclose(m_hFile); 373 FXSYS_fclose(m_hFile);
388 } 374 }
389 375
390 FX_BOOL CFX_FileStreamImp::LoadFile(const FX_WCHAR* pszSrcFileName, 376 bool CFX_FileStreamImp::LoadFile(const FX_WCHAR* pszSrcFileName,
391 uint32_t dwAccess) { 377 uint32_t dwAccess) {
392 ASSERT(!m_hFile); 378 ASSERT(!m_hFile);
393 ASSERT(pszSrcFileName && FXSYS_wcslen(pszSrcFileName) > 0); 379 ASSERT(pszSrcFileName && FXSYS_wcslen(pszSrcFileName) > 0);
394 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \ 380 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \
395 _FX_OS_ == _FX_WIN64_ 381 _FX_OS_ == _FX_WIN64_
396 const FX_WCHAR* wsMode; 382 const FX_WCHAR* wsMode;
397 if (dwAccess & FX_STREAMACCESS_Write) { 383 if (dwAccess & FX_STREAMACCESS_Write) {
398 if (dwAccess & FX_STREAMACCESS_Append) { 384 if (dwAccess & FX_STREAMACCESS_Append) {
399 wsMode = L"a+b"; 385 wsMode = L"a+b";
400 } else if (dwAccess & FX_STREAMACCESS_Truncate) { 386 } else if (dwAccess & FX_STREAMACCESS_Truncate) {
401 wsMode = L"w+b"; 387 wsMode = L"w+b";
402 } else { 388 } else {
403 wsMode = L"r+b"; 389 wsMode = L"r+b";
404 } 390 }
405 } else { 391 } else {
406 wsMode = L"rb"; 392 wsMode = L"rb";
407 } 393 }
408 m_hFile = FXSYS_wfopen(pszSrcFileName, wsMode); 394 m_hFile = FXSYS_wfopen(pszSrcFileName, wsMode);
409 395
410 if (!m_hFile) { 396 if (!m_hFile) {
411 if (dwAccess & FX_STREAMACCESS_Write) { 397 if (dwAccess & FX_STREAMACCESS_Write) {
412 if (dwAccess & FX_STREAMACCESS_Create) 398 if (dwAccess & FX_STREAMACCESS_Create)
413 m_hFile = FXSYS_wfopen(pszSrcFileName, L"w+b"); 399 m_hFile = FXSYS_wfopen(pszSrcFileName, L"w+b");
414 400
415 if (!m_hFile) { 401 if (!m_hFile) {
416 m_hFile = FXSYS_wfopen(pszSrcFileName, L"r+b"); 402 m_hFile = FXSYS_wfopen(pszSrcFileName, L"r+b");
417 if (!m_hFile) 403 if (!m_hFile)
418 return FALSE; 404 return false;
419 405
420 if (dwAccess & FX_STREAMACCESS_Truncate) 406 if (dwAccess & FX_STREAMACCESS_Truncate)
421 FileSetSize(m_hFile, 0); 407 FileSetSize(m_hFile, 0);
422 } 408 }
423 } else { 409 } else {
424 return FALSE; 410 return false;
425 } 411 }
426 } 412 }
427 #else 413 #else
428 const FX_CHAR* wsMode = "rb"; 414 const FX_CHAR* wsMode = "rb";
429 if (dwAccess & FX_STREAMACCESS_Write) { 415 if (dwAccess & FX_STREAMACCESS_Write) {
430 if (dwAccess & FX_STREAMACCESS_Append) { 416 if (dwAccess & FX_STREAMACCESS_Append) {
431 wsMode = "a+b"; 417 wsMode = "a+b";
432 } else if (dwAccess & FX_STREAMACCESS_Truncate) { 418 } else if (dwAccess & FX_STREAMACCESS_Truncate) {
433 wsMode = "w+b"; 419 wsMode = "w+b";
434 } else { 420 } else {
435 wsMode = "r+b"; 421 wsMode = "r+b";
436 } 422 }
437 } 423 }
438 CFX_ByteString szFileName = CFX_ByteString::FromUnicode(pszSrcFileName); 424 CFX_ByteString szFileName = CFX_ByteString::FromUnicode(pszSrcFileName);
439 m_hFile = FXSYS_fopen(szFileName.c_str(), wsMode); 425 m_hFile = FXSYS_fopen(szFileName.c_str(), wsMode);
440 if (!m_hFile) { 426 if (!m_hFile) {
441 if (dwAccess & FX_STREAMACCESS_Write) { 427 if (dwAccess & FX_STREAMACCESS_Write) {
442 if (dwAccess & FX_STREAMACCESS_Create) { 428 if (dwAccess & FX_STREAMACCESS_Create) {
443 m_hFile = FXSYS_fopen(szFileName.c_str(), "w+b"); 429 m_hFile = FXSYS_fopen(szFileName.c_str(), "w+b");
444 } 430 }
445 if (!m_hFile) { 431 if (!m_hFile) {
446 m_hFile = FXSYS_fopen(szFileName.c_str(), "r+b"); 432 m_hFile = FXSYS_fopen(szFileName.c_str(), "r+b");
447 if (!m_hFile) { 433 if (!m_hFile) {
448 return FALSE; 434 return false;
449 } 435 }
450 if (dwAccess & FX_STREAMACCESS_Truncate) { 436 if (dwAccess & FX_STREAMACCESS_Truncate) {
451 FileSetSize(m_hFile, 0); 437 FileSetSize(m_hFile, 0);
452 } 438 }
453 } 439 }
454 } else { 440 } else {
455 return FALSE; 441 return false;
456 } 442 }
457 } 443 }
458 #endif 444 #endif
459 SetAccessModes(dwAccess); 445 SetAccessModes(dwAccess);
460 if ((dwAccess & (FX_STREAMACCESS_Write | FX_STREAMACCESS_Truncate)) == 446 if ((dwAccess & (FX_STREAMACCESS_Write | FX_STREAMACCESS_Truncate)) ==
461 (FX_STREAMACCESS_Write | FX_STREAMACCESS_Truncate)) { 447 (FX_STREAMACCESS_Write | FX_STREAMACCESS_Truncate)) {
462 m_iLength = 0; 448 m_iLength = 0;
463 } else { 449 } else {
464 m_iLength = FileLength(m_hFile); 450 m_iLength = FileLength(m_hFile);
465 } 451 }
466 return TRUE; 452 return true;
467 } 453 }
468 int32_t CFX_FileStreamImp::GetLength() const { 454 int32_t CFX_FileStreamImp::GetLength() const {
469 ASSERT(m_hFile); 455 ASSERT(m_hFile);
470 return m_iLength; 456 return m_iLength;
471 } 457 }
472 int32_t CFX_FileStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) { 458 int32_t CFX_FileStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) {
473 ASSERT(m_hFile); 459 ASSERT(m_hFile);
474 FXSYS_fseek(m_hFile, iOffset, eSeek); 460 FXSYS_fseek(m_hFile, iOffset, eSeek);
475 return FXSYS_ftell(m_hFile); 461 return FXSYS_ftell(m_hFile);
476 } 462 }
477 int32_t CFX_FileStreamImp::GetPosition() { 463 int32_t CFX_FileStreamImp::GetPosition() {
478 ASSERT(m_hFile); 464 ASSERT(m_hFile);
479 return FXSYS_ftell(m_hFile); 465 return FXSYS_ftell(m_hFile);
480 } 466 }
481 FX_BOOL CFX_FileStreamImp::IsEOF() const { 467 bool CFX_FileStreamImp::IsEOF() const {
482 ASSERT(m_hFile); 468 ASSERT(m_hFile);
483 return FXSYS_ftell(m_hFile) >= m_iLength; 469 return FXSYS_ftell(m_hFile) >= m_iLength;
484 } 470 }
485 int32_t CFX_FileStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) { 471 int32_t CFX_FileStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) {
486 ASSERT(m_hFile); 472 ASSERT(m_hFile);
487 ASSERT(pBuffer && iBufferSize > 0); 473 ASSERT(pBuffer && iBufferSize > 0);
488 return FXSYS_fread(pBuffer, 1, iBufferSize, m_hFile); 474 return FXSYS_fread(pBuffer, 1, iBufferSize, m_hFile);
489 } 475 }
490 int32_t CFX_FileStreamImp::ReadString(FX_WCHAR* pStr, 476 int32_t CFX_FileStreamImp::ReadString(FX_WCHAR* pStr,
491 int32_t iMaxLength, 477 int32_t iMaxLength,
492 FX_BOOL& bEOS) { 478 bool& bEOS) {
493 ASSERT(m_hFile); 479 ASSERT(m_hFile);
494 ASSERT(pStr && iMaxLength > 0); 480 ASSERT(pStr && iMaxLength > 0);
495 if (m_iLength <= 0) { 481 if (m_iLength <= 0) {
496 return 0; 482 return 0;
497 } 483 }
498 int32_t iPosition = FXSYS_ftell(m_hFile); 484 int32_t iPosition = FXSYS_ftell(m_hFile);
499 int32_t iLen = std::min((m_iLength - iPosition) / 2, iMaxLength); 485 int32_t iLen = std::min((m_iLength - iPosition) / 2, iMaxLength);
500 if (iLen <= 0) { 486 if (iLen <= 0) {
501 return 0; 487 return 0;
502 } 488 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 if (iPos > m_iLength) { 520 if (iPos > m_iLength) {
535 m_iLength = iPos; 521 m_iLength = iPos;
536 } 522 }
537 } 523 }
538 return iRet; 524 return iRet;
539 } 525 }
540 void CFX_FileStreamImp::Flush() { 526 void CFX_FileStreamImp::Flush() {
541 ASSERT(m_hFile && (GetAccessModes() & FX_STREAMACCESS_Write) != 0); 527 ASSERT(m_hFile && (GetAccessModes() & FX_STREAMACCESS_Write) != 0);
542 FXSYS_fflush(m_hFile); 528 FXSYS_fflush(m_hFile);
543 } 529 }
544 FX_BOOL CFX_FileStreamImp::SetLength(int32_t iLength) { 530 bool CFX_FileStreamImp::SetLength(int32_t iLength) {
545 ASSERT(m_hFile && (GetAccessModes() & FX_STREAMACCESS_Write) != 0); 531 ASSERT(m_hFile && (GetAccessModes() & FX_STREAMACCESS_Write) != 0);
546 FX_BOOL bRet = FileSetSize(m_hFile, iLength); 532 bool bRet = FileSetSize(m_hFile, iLength);
547 m_iLength = FileLength(m_hFile); 533 m_iLength = FileLength(m_hFile);
548 return bRet; 534 return bRet;
549 } 535 }
550 CFX_FileReadStreamImp::CFX_FileReadStreamImp() 536 CFX_FileReadStreamImp::CFX_FileReadStreamImp()
551 : m_pFileRead(nullptr), m_iPosition(0), m_iLength(0) {} 537 : m_pFileRead(nullptr), m_iPosition(0), m_iLength(0) {}
552 FX_BOOL CFX_FileReadStreamImp::LoadFileRead(IFX_SeekableReadStream* pFileRead, 538 bool CFX_FileReadStreamImp::LoadFileRead(IFX_SeekableReadStream* pFileRead,
553 uint32_t dwAccess) { 539 uint32_t dwAccess) {
554 ASSERT(!m_pFileRead && pFileRead); 540 ASSERT(!m_pFileRead && pFileRead);
555 if (dwAccess & FX_STREAMACCESS_Write) { 541 if (dwAccess & FX_STREAMACCESS_Write) {
556 return FALSE; 542 return false;
557 } 543 }
558 m_pFileRead = pFileRead; 544 m_pFileRead = pFileRead;
559 m_iLength = m_pFileRead->GetSize(); 545 m_iLength = m_pFileRead->GetSize();
560 return TRUE; 546 return true;
561 } 547 }
562 int32_t CFX_FileReadStreamImp::GetLength() const { 548 int32_t CFX_FileReadStreamImp::GetLength() const {
563 return m_iLength; 549 return m_iLength;
564 } 550 }
565 int32_t CFX_FileReadStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) { 551 int32_t CFX_FileReadStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) {
566 switch (eSeek) { 552 switch (eSeek) {
567 case FX_STREAMSEEK_Begin: 553 case FX_STREAMSEEK_Begin:
568 m_iPosition = iOffset; 554 m_iPosition = iOffset;
569 break; 555 break;
570 case FX_STREAMSEEK_Current: 556 case FX_STREAMSEEK_Current:
571 m_iPosition += iOffset; 557 m_iPosition += iOffset;
572 break; 558 break;
573 case FX_STREAMSEEK_End: 559 case FX_STREAMSEEK_End:
574 m_iPosition = m_iLength + iOffset; 560 m_iPosition = m_iLength + iOffset;
575 break; 561 break;
576 } 562 }
577 if (m_iPosition < 0) { 563 if (m_iPosition < 0) {
578 m_iPosition = 0; 564 m_iPosition = 0;
579 } else if (m_iPosition >= m_iLength) { 565 } else if (m_iPosition >= m_iLength) {
580 m_iPosition = m_iLength; 566 m_iPosition = m_iLength;
581 } 567 }
582 return m_iPosition; 568 return m_iPosition;
583 } 569 }
584 FX_BOOL CFX_FileReadStreamImp::IsEOF() const { 570 bool CFX_FileReadStreamImp::IsEOF() const {
585 return m_iPosition >= m_iLength; 571 return m_iPosition >= m_iLength;
586 } 572 }
587 int32_t CFX_FileReadStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) { 573 int32_t CFX_FileReadStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) {
588 ASSERT(m_pFileRead); 574 ASSERT(m_pFileRead);
589 ASSERT(pBuffer && iBufferSize > 0); 575 ASSERT(pBuffer && iBufferSize > 0);
590 if (iBufferSize > m_iLength - m_iPosition) { 576 if (iBufferSize > m_iLength - m_iPosition) {
591 iBufferSize = m_iLength - m_iPosition; 577 iBufferSize = m_iLength - m_iPosition;
592 } 578 }
593 if (m_pFileRead->ReadBlock(pBuffer, m_iPosition, iBufferSize)) { 579 if (m_pFileRead->ReadBlock(pBuffer, m_iPosition, iBufferSize)) {
594 m_iPosition += iBufferSize; 580 m_iPosition += iBufferSize;
595 return iBufferSize; 581 return iBufferSize;
596 } 582 }
597 return 0; 583 return 0;
598 } 584 }
599 int32_t CFX_FileReadStreamImp::ReadString(FX_WCHAR* pStr, 585 int32_t CFX_FileReadStreamImp::ReadString(FX_WCHAR* pStr,
600 int32_t iMaxLength, 586 int32_t iMaxLength,
601 FX_BOOL& bEOS) { 587 bool& bEOS) {
602 ASSERT(m_pFileRead); 588 ASSERT(m_pFileRead);
603 ASSERT(pStr && iMaxLength > 0); 589 ASSERT(pStr && iMaxLength > 0);
604 iMaxLength = ReadData((uint8_t*)pStr, iMaxLength * 2) / 2; 590 iMaxLength = ReadData((uint8_t*)pStr, iMaxLength * 2) / 2;
605 if (iMaxLength <= 0) { 591 if (iMaxLength <= 0) {
606 return 0; 592 return 0;
607 } 593 }
608 int32_t i = 0; 594 int32_t i = 0;
609 while (i < iMaxLength && pStr[i] != L'\0') { 595 while (i < iMaxLength && pStr[i] != L'\0') {
610 ++i; 596 ++i;
611 } 597 }
612 bEOS = (m_iPosition >= m_iLength) || pStr[i] == L'\0'; 598 bEOS = (m_iPosition >= m_iLength) || pStr[i] == L'\0';
613 return i; 599 return i;
614 } 600 }
615 CFX_BufferReadStreamImp::CFX_BufferReadStreamImp() 601 CFX_BufferReadStreamImp::CFX_BufferReadStreamImp()
616 : m_pBufferRead(nullptr), 602 : m_pBufferRead(nullptr),
617 m_bReleaseBufferRead(FALSE), 603 m_bReleaseBufferRead(false),
618 m_iPosition(0), 604 m_iPosition(0),
619 m_iBufferSize(0) {} 605 m_iBufferSize(0) {}
620 CFX_BufferReadStreamImp::~CFX_BufferReadStreamImp() { 606 CFX_BufferReadStreamImp::~CFX_BufferReadStreamImp() {
621 if (m_bReleaseBufferRead && m_pBufferRead) { 607 if (m_bReleaseBufferRead && m_pBufferRead) {
622 m_pBufferRead->Release(); 608 m_pBufferRead->Release();
623 } 609 }
624 } 610 }
625 FX_BOOL CFX_BufferReadStreamImp::LoadBufferRead(IFX_BufferRead* pBufferRead, 611 bool CFX_BufferReadStreamImp::LoadBufferRead(IFX_BufferRead* pBufferRead,
626 int32_t iFileSize, 612 int32_t iFileSize,
627 uint32_t dwAccess, 613 uint32_t dwAccess,
628 FX_BOOL bReleaseBufferRead) { 614 bool bReleaseBufferRead) {
629 ASSERT(!m_pBufferRead && pBufferRead); 615 ASSERT(!m_pBufferRead && pBufferRead);
630 if (dwAccess & FX_STREAMACCESS_Write) { 616 if (dwAccess & FX_STREAMACCESS_Write) {
631 return FALSE; 617 return false;
632 } 618 }
633 m_bReleaseBufferRead = bReleaseBufferRead; 619 m_bReleaseBufferRead = bReleaseBufferRead;
634 m_pBufferRead = pBufferRead; 620 m_pBufferRead = pBufferRead;
635 m_iBufferSize = iFileSize; 621 m_iBufferSize = iFileSize;
636 if (m_iBufferSize >= 0) { 622 if (m_iBufferSize >= 0) {
637 return TRUE; 623 return true;
638 } 624 }
639 if (!m_pBufferRead->ReadNextBlock(TRUE)) { 625 if (!m_pBufferRead->ReadNextBlock(true)) {
640 return FALSE; 626 return false;
641 } 627 }
642 m_iBufferSize = m_pBufferRead->GetBlockSize(); 628 m_iBufferSize = m_pBufferRead->GetBlockSize();
643 while (!m_pBufferRead->IsEOF()) { 629 while (!m_pBufferRead->IsEOF()) {
644 m_pBufferRead->ReadNextBlock(FALSE); 630 m_pBufferRead->ReadNextBlock(false);
645 m_iBufferSize += m_pBufferRead->GetBlockSize(); 631 m_iBufferSize += m_pBufferRead->GetBlockSize();
646 } 632 }
647 return TRUE; 633 return true;
648 } 634 }
649 int32_t CFX_BufferReadStreamImp::GetLength() const { 635 int32_t CFX_BufferReadStreamImp::GetLength() const {
650 return m_iBufferSize; 636 return m_iBufferSize;
651 } 637 }
652 int32_t CFX_BufferReadStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) { 638 int32_t CFX_BufferReadStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) {
653 int32_t iLength = GetLength(); 639 int32_t iLength = GetLength();
654 switch (eSeek) { 640 switch (eSeek) {
655 case FX_STREAMSEEK_Begin: 641 case FX_STREAMSEEK_Begin:
656 m_iPosition = iOffset; 642 m_iPosition = iOffset;
657 break; 643 break;
658 case FX_STREAMSEEK_Current: 644 case FX_STREAMSEEK_Current:
659 m_iPosition += iOffset; 645 m_iPosition += iOffset;
660 break; 646 break;
661 case FX_STREAMSEEK_End: 647 case FX_STREAMSEEK_End:
662 m_iPosition = iLength + iOffset; 648 m_iPosition = iLength + iOffset;
663 break; 649 break;
664 } 650 }
665 if (m_iPosition < 0) { 651 if (m_iPosition < 0) {
666 m_iPosition = 0; 652 m_iPosition = 0;
667 } else if (m_iPosition >= iLength) { 653 } else if (m_iPosition >= iLength) {
668 m_iPosition = iLength; 654 m_iPosition = iLength;
669 } 655 }
670 return m_iPosition; 656 return m_iPosition;
671 } 657 }
672 FX_BOOL CFX_BufferReadStreamImp::IsEOF() const { 658 bool CFX_BufferReadStreamImp::IsEOF() const {
673 return m_pBufferRead ? m_pBufferRead->IsEOF() : TRUE; 659 return m_pBufferRead ? m_pBufferRead->IsEOF() : true;
674 } 660 }
675 int32_t CFX_BufferReadStreamImp::ReadData(uint8_t* pBuffer, 661 int32_t CFX_BufferReadStreamImp::ReadData(uint8_t* pBuffer,
676 int32_t iBufferSize) { 662 int32_t iBufferSize) {
677 ASSERT(m_pBufferRead); 663 ASSERT(m_pBufferRead);
678 ASSERT(pBuffer && iBufferSize > 0); 664 ASSERT(pBuffer && iBufferSize > 0);
679 int32_t iLength = GetLength(); 665 int32_t iLength = GetLength();
680 if (m_iPosition >= iLength) { 666 if (m_iPosition >= iLength) {
681 return 0; 667 return 0;
682 } 668 }
683 if (iBufferSize > iLength - m_iPosition) { 669 if (iBufferSize > iLength - m_iPosition) {
684 iBufferSize = iLength - m_iPosition; 670 iBufferSize = iLength - m_iPosition;
685 } 671 }
686 uint32_t dwBlockOffset = m_pBufferRead->GetBlockOffset(); 672 uint32_t dwBlockOffset = m_pBufferRead->GetBlockOffset();
687 uint32_t dwBlockSize = m_pBufferRead->GetBlockSize(); 673 uint32_t dwBlockSize = m_pBufferRead->GetBlockSize();
688 if (m_iPosition < (int32_t)dwBlockOffset) { 674 if (m_iPosition < (int32_t)dwBlockOffset) {
689 if (!m_pBufferRead->ReadNextBlock(TRUE)) { 675 if (!m_pBufferRead->ReadNextBlock(true)) {
690 return 0; 676 return 0;
691 } 677 }
692 dwBlockOffset = m_pBufferRead->GetBlockOffset(); 678 dwBlockOffset = m_pBufferRead->GetBlockOffset();
693 dwBlockSize = m_pBufferRead->GetBlockSize(); 679 dwBlockSize = m_pBufferRead->GetBlockSize();
694 } 680 }
695 while (m_iPosition < (int32_t)dwBlockOffset || 681 while (m_iPosition < (int32_t)dwBlockOffset ||
696 m_iPosition >= (int32_t)(dwBlockOffset + dwBlockSize)) { 682 m_iPosition >= (int32_t)(dwBlockOffset + dwBlockSize)) {
697 if (m_pBufferRead->IsEOF() || !m_pBufferRead->ReadNextBlock(FALSE)) { 683 if (m_pBufferRead->IsEOF() || !m_pBufferRead->ReadNextBlock(false)) {
698 break; 684 break;
699 } 685 }
700 dwBlockOffset = m_pBufferRead->GetBlockOffset(); 686 dwBlockOffset = m_pBufferRead->GetBlockOffset();
701 dwBlockSize = m_pBufferRead->GetBlockSize(); 687 dwBlockSize = m_pBufferRead->GetBlockSize();
702 } 688 }
703 if (m_iPosition < (int32_t)dwBlockOffset || 689 if (m_iPosition < (int32_t)dwBlockOffset ||
704 m_iPosition >= (int32_t)(dwBlockOffset + dwBlockSize)) { 690 m_iPosition >= (int32_t)(dwBlockOffset + dwBlockSize)) {
705 return 0; 691 return 0;
706 } 692 }
707 const uint8_t* pBufferTmp = m_pBufferRead->GetBlockBuffer(); 693 const uint8_t* pBufferTmp = m_pBufferRead->GetBlockBuffer();
708 uint32_t dwOffsetTmp = m_iPosition - dwBlockOffset; 694 uint32_t dwOffsetTmp = m_iPosition - dwBlockOffset;
709 uint32_t dwCopySize = 695 uint32_t dwCopySize =
710 std::min(iBufferSize, (int32_t)(dwBlockSize - dwOffsetTmp)); 696 std::min(iBufferSize, (int32_t)(dwBlockSize - dwOffsetTmp));
711 FXSYS_memcpy(pBuffer, pBufferTmp + dwOffsetTmp, dwCopySize); 697 FXSYS_memcpy(pBuffer, pBufferTmp + dwOffsetTmp, dwCopySize);
712 dwOffsetTmp = dwCopySize; 698 dwOffsetTmp = dwCopySize;
713 iBufferSize -= dwCopySize; 699 iBufferSize -= dwCopySize;
714 while (iBufferSize > 0) { 700 while (iBufferSize > 0) {
715 if (!m_pBufferRead->ReadNextBlock(FALSE)) { 701 if (!m_pBufferRead->ReadNextBlock(false)) {
716 break; 702 break;
717 } 703 }
718 dwBlockOffset = m_pBufferRead->GetBlockOffset(); 704 dwBlockOffset = m_pBufferRead->GetBlockOffset();
719 dwBlockSize = m_pBufferRead->GetBlockSize(); 705 dwBlockSize = m_pBufferRead->GetBlockSize();
720 pBufferTmp = m_pBufferRead->GetBlockBuffer(); 706 pBufferTmp = m_pBufferRead->GetBlockBuffer();
721 dwCopySize = std::min((uint32_t)iBufferSize, dwBlockSize); 707 dwCopySize = std::min((uint32_t)iBufferSize, dwBlockSize);
722 FXSYS_memcpy(pBuffer + dwOffsetTmp, pBufferTmp, dwCopySize); 708 FXSYS_memcpy(pBuffer + dwOffsetTmp, pBufferTmp, dwCopySize);
723 dwOffsetTmp += dwCopySize; 709 dwOffsetTmp += dwCopySize;
724 iBufferSize -= dwCopySize; 710 iBufferSize -= dwCopySize;
725 } 711 }
726 m_iPosition += dwOffsetTmp; 712 m_iPosition += dwOffsetTmp;
727 return dwOffsetTmp; 713 return dwOffsetTmp;
728 } 714 }
729 int32_t CFX_BufferReadStreamImp::ReadString(FX_WCHAR* pStr, 715 int32_t CFX_BufferReadStreamImp::ReadString(FX_WCHAR* pStr,
730 int32_t iMaxLength, 716 int32_t iMaxLength,
731 FX_BOOL& bEOS) { 717 bool& bEOS) {
732 ASSERT(m_pBufferRead); 718 ASSERT(m_pBufferRead);
733 ASSERT(pStr && iMaxLength > 0); 719 ASSERT(pStr && iMaxLength > 0);
734 iMaxLength = ReadData((uint8_t*)pStr, iMaxLength * 2) / 2; 720 iMaxLength = ReadData((uint8_t*)pStr, iMaxLength * 2) / 2;
735 if (iMaxLength <= 0) { 721 if (iMaxLength <= 0) {
736 return 0; 722 return 0;
737 } 723 }
738 int32_t i = 0; 724 int32_t i = 0;
739 while (i < iMaxLength && pStr[i] != L'\0') { 725 while (i < iMaxLength && pStr[i] != L'\0') {
740 ++i; 726 ++i;
741 } 727 }
742 bEOS = (m_iPosition >= GetLength()) || pStr[i] == L'\0'; 728 bEOS = (m_iPosition >= GetLength()) || pStr[i] == L'\0';
743 return i; 729 return i;
744 } 730 }
745 CFX_FileWriteStreamImp::CFX_FileWriteStreamImp() 731 CFX_FileWriteStreamImp::CFX_FileWriteStreamImp()
746 : m_pFileWrite(nullptr), m_iPosition(0) {} 732 : m_pFileWrite(nullptr), m_iPosition(0) {}
747 FX_BOOL CFX_FileWriteStreamImp::LoadFileWrite( 733 bool CFX_FileWriteStreamImp::LoadFileWrite(IFX_SeekableWriteStream* pFileWrite,
748 IFX_SeekableWriteStream* pFileWrite, 734 uint32_t dwAccess) {
749 uint32_t dwAccess) {
750 ASSERT(!m_pFileWrite && pFileWrite); 735 ASSERT(!m_pFileWrite && pFileWrite);
751 if (dwAccess & FX_STREAMACCESS_Read) { 736 if (dwAccess & FX_STREAMACCESS_Read) {
752 return FALSE; 737 return false;
753 } 738 }
754 if (dwAccess & FX_STREAMACCESS_Append) { 739 if (dwAccess & FX_STREAMACCESS_Append) {
755 m_iPosition = pFileWrite->GetSize(); 740 m_iPosition = pFileWrite->GetSize();
756 } 741 }
757 m_pFileWrite = pFileWrite; 742 m_pFileWrite = pFileWrite;
758 return TRUE; 743 return true;
759 } 744 }
760 int32_t CFX_FileWriteStreamImp::GetLength() const { 745 int32_t CFX_FileWriteStreamImp::GetLength() const {
761 if (!m_pFileWrite) { 746 if (!m_pFileWrite) {
762 return 0; 747 return 0;
763 } 748 }
764 return (int32_t)m_pFileWrite->GetSize(); 749 return (int32_t)m_pFileWrite->GetSize();
765 } 750 }
766 int32_t CFX_FileWriteStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) { 751 int32_t CFX_FileWriteStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) {
767 int32_t iLength = GetLength(); 752 int32_t iLength = GetLength();
768 switch (eSeek) { 753 switch (eSeek) {
769 case FX_STREAMSEEK_Begin: 754 case FX_STREAMSEEK_Begin:
770 m_iPosition = iOffset; 755 m_iPosition = iOffset;
771 break; 756 break;
772 case FX_STREAMSEEK_Current: 757 case FX_STREAMSEEK_Current:
773 m_iPosition += iOffset; 758 m_iPosition += iOffset;
774 break; 759 break;
775 case FX_STREAMSEEK_End: 760 case FX_STREAMSEEK_End:
776 m_iPosition = iLength + iOffset; 761 m_iPosition = iLength + iOffset;
777 break; 762 break;
778 } 763 }
779 if (m_iPosition < 0) { 764 if (m_iPosition < 0) {
780 m_iPosition = 0; 765 m_iPosition = 0;
781 } else if (m_iPosition >= iLength) { 766 } else if (m_iPosition >= iLength) {
782 m_iPosition = iLength; 767 m_iPosition = iLength;
783 } 768 }
784 return m_iPosition; 769 return m_iPosition;
785 } 770 }
786 FX_BOOL CFX_FileWriteStreamImp::IsEOF() const { 771 bool CFX_FileWriteStreamImp::IsEOF() const {
787 return m_iPosition >= GetLength(); 772 return m_iPosition >= GetLength();
788 } 773 }
789 int32_t CFX_FileWriteStreamImp::WriteData(const uint8_t* pBuffer, 774 int32_t CFX_FileWriteStreamImp::WriteData(const uint8_t* pBuffer,
790 int32_t iBufferSize) { 775 int32_t iBufferSize) {
791 if (!m_pFileWrite) { 776 if (!m_pFileWrite) {
792 return 0; 777 return 0;
793 } 778 }
794 if (m_pFileWrite->WriteBlock(pBuffer, m_iPosition, iBufferSize)) { 779 if (m_pFileWrite->WriteBlock(pBuffer, m_iPosition, iBufferSize)) {
795 m_iPosition += iBufferSize; 780 m_iPosition += iBufferSize;
796 } 781 }
797 return iBufferSize; 782 return iBufferSize;
798 } 783 }
799 int32_t CFX_FileWriteStreamImp::WriteString(const FX_WCHAR* pStr, 784 int32_t CFX_FileWriteStreamImp::WriteString(const FX_WCHAR* pStr,
800 int32_t iLength) { 785 int32_t iLength) {
801 return WriteData((const uint8_t*)pStr, iLength * sizeof(FX_WCHAR)); 786 return WriteData((const uint8_t*)pStr, iLength * sizeof(FX_WCHAR));
802 } 787 }
803 void CFX_FileWriteStreamImp::Flush() { 788 void CFX_FileWriteStreamImp::Flush() {
804 if (m_pFileWrite) { 789 if (m_pFileWrite) {
805 m_pFileWrite->Flush(); 790 m_pFileWrite->Flush();
806 } 791 }
807 } 792 }
808 CFX_BufferStreamImp::CFX_BufferStreamImp() 793 CFX_BufferStreamImp::CFX_BufferStreamImp()
809 : m_pData(nullptr), m_iTotalSize(0), m_iPosition(0), m_iLength(0) {} 794 : m_pData(nullptr), m_iTotalSize(0), m_iPosition(0), m_iLength(0) {}
810 795
811 FX_BOOL CFX_BufferStreamImp::LoadBuffer(uint8_t* pData, 796 bool CFX_BufferStreamImp::LoadBuffer(uint8_t* pData,
812 int32_t iTotalSize, 797 int32_t iTotalSize,
813 uint32_t dwAccess) { 798 uint32_t dwAccess) {
814 ASSERT(!m_pData && pData && iTotalSize > 0); 799 ASSERT(!m_pData && pData && iTotalSize > 0);
815 SetAccessModes(dwAccess); 800 SetAccessModes(dwAccess);
816 m_pData = pData; 801 m_pData = pData;
817 m_iTotalSize = iTotalSize; 802 m_iTotalSize = iTotalSize;
818 m_iPosition = 0; 803 m_iPosition = 0;
819 m_iLength = (dwAccess & FX_STREAMACCESS_Write) != 0 ? 0 : iTotalSize; 804 m_iLength = (dwAccess & FX_STREAMACCESS_Write) != 0 ? 0 : iTotalSize;
820 return TRUE; 805 return true;
821 } 806 }
822 int32_t CFX_BufferStreamImp::GetLength() const { 807 int32_t CFX_BufferStreamImp::GetLength() const {
823 ASSERT(m_pData); 808 ASSERT(m_pData);
824 return m_iLength; 809 return m_iLength;
825 } 810 }
826 int32_t CFX_BufferStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) { 811 int32_t CFX_BufferStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) {
827 ASSERT(m_pData); 812 ASSERT(m_pData);
828 if (eSeek == FX_STREAMSEEK_Begin) { 813 if (eSeek == FX_STREAMSEEK_Begin) {
829 m_iPosition = iOffset; 814 m_iPosition = iOffset;
830 } else if (eSeek == FX_STREAMSEEK_Current) { 815 } else if (eSeek == FX_STREAMSEEK_Current) {
831 m_iPosition += iOffset; 816 m_iPosition += iOffset;
832 } else if (eSeek == FX_STREAMSEEK_End) { 817 } else if (eSeek == FX_STREAMSEEK_End) {
833 m_iPosition = m_iLength + iOffset; 818 m_iPosition = m_iLength + iOffset;
834 } 819 }
835 if (m_iPosition > m_iLength) { 820 if (m_iPosition > m_iLength) {
836 m_iPosition = m_iLength; 821 m_iPosition = m_iLength;
837 } 822 }
838 if (m_iPosition < 0) { 823 if (m_iPosition < 0) {
839 m_iPosition = 0; 824 m_iPosition = 0;
840 } 825 }
841 return m_iPosition; 826 return m_iPosition;
842 } 827 }
843 int32_t CFX_BufferStreamImp::GetPosition() { 828 int32_t CFX_BufferStreamImp::GetPosition() {
844 ASSERT(m_pData); 829 ASSERT(m_pData);
845 return m_iPosition; 830 return m_iPosition;
846 } 831 }
847 FX_BOOL CFX_BufferStreamImp::IsEOF() const { 832 bool CFX_BufferStreamImp::IsEOF() const {
848 ASSERT(m_pData); 833 ASSERT(m_pData);
849 return m_iPosition >= m_iLength; 834 return m_iPosition >= m_iLength;
850 } 835 }
851 int32_t CFX_BufferStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) { 836 int32_t CFX_BufferStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) {
852 ASSERT(m_pData); 837 ASSERT(m_pData);
853 ASSERT(pBuffer && iBufferSize > 0); 838 ASSERT(pBuffer && iBufferSize > 0);
854 int32_t iLen = std::min(m_iLength - m_iPosition, iBufferSize); 839 int32_t iLen = std::min(m_iLength - m_iPosition, iBufferSize);
855 if (iLen <= 0) { 840 if (iLen <= 0) {
856 return 0; 841 return 0;
857 } 842 }
858 FXSYS_memcpy(pBuffer, m_pData + m_iPosition, iLen); 843 FXSYS_memcpy(pBuffer, m_pData + m_iPosition, iLen);
859 m_iPosition += iLen; 844 m_iPosition += iLen;
860 return iLen; 845 return iLen;
861 } 846 }
862 int32_t CFX_BufferStreamImp::ReadString(FX_WCHAR* pStr, 847 int32_t CFX_BufferStreamImp::ReadString(FX_WCHAR* pStr,
863 int32_t iMaxLength, 848 int32_t iMaxLength,
864 FX_BOOL& bEOS) { 849 bool& bEOS) {
865 ASSERT(m_pData); 850 ASSERT(m_pData);
866 ASSERT(pStr && iMaxLength > 0); 851 ASSERT(pStr && iMaxLength > 0);
867 int32_t iLen = std::min((m_iLength - m_iPosition) / 2, iMaxLength); 852 int32_t iLen = std::min((m_iLength - m_iPosition) / 2, iMaxLength);
868 if (iLen <= 0) { 853 if (iLen <= 0) {
869 return 0; 854 return 0;
870 } 855 }
871 const FX_WCHAR* pSrc = (const FX_WCHAR*)(FX_CHAR*)(m_pData + m_iPosition); 856 const FX_WCHAR* pSrc = (const FX_WCHAR*)(FX_CHAR*)(m_pData + m_iPosition);
872 int32_t iCount = 0; 857 int32_t iCount = 0;
873 while (*pSrc && iCount < iLen) { 858 while (*pSrc && iCount < iLen) {
874 *pStr++ = *pSrc++; 859 *pStr++ = *pSrc++;
(...skipping 29 matching lines...) Expand all
904 FXSYS_memcpy(m_pData + m_iPosition, pStr, iLen * 2); 889 FXSYS_memcpy(m_pData + m_iPosition, pStr, iLen * 2);
905 m_iPosition += iLen * 2; 890 m_iPosition += iLen * 2;
906 if (m_iPosition > m_iLength) { 891 if (m_iPosition > m_iLength) {
907 m_iLength = m_iPosition; 892 m_iLength = m_iPosition;
908 } 893 }
909 return iLen; 894 return iLen;
910 } 895 }
911 896
912 // static 897 // static
913 IFX_Stream* IFX_Stream::CreateTextStream(IFX_Stream* pBaseStream, 898 IFX_Stream* IFX_Stream::CreateTextStream(IFX_Stream* pBaseStream,
914 FX_BOOL bDeleteOnRelease) { 899 bool bDeleteOnRelease) {
915 ASSERT(pBaseStream); 900 ASSERT(pBaseStream);
916 return new CFX_TextStream(pBaseStream, bDeleteOnRelease); 901 return new CFX_TextStream(pBaseStream, bDeleteOnRelease);
917 } 902 }
918 903
919 CFX_TextStream::CFX_TextStream(IFX_Stream* pStream, FX_BOOL bDelStream) 904 CFX_TextStream::CFX_TextStream(IFX_Stream* pStream, bool bDelStream)
920 : m_wCodePage(FX_CODEPAGE_DefANSI), 905 : m_wCodePage(FX_CODEPAGE_DefANSI),
921 m_wBOMLength(0), 906 m_wBOMLength(0),
922 m_dwBOM(0), 907 m_dwBOM(0),
923 m_pBuf(nullptr), 908 m_pBuf(nullptr),
924 m_iBufSize(0), 909 m_iBufSize(0),
925 m_bDelStream(bDelStream), 910 m_bDelStream(bDelStream),
926 m_pStreamImp(pStream), 911 m_pStreamImp(pStream),
927 m_iRefCount(1) { 912 m_iRefCount(1) {
928 ASSERT(m_pStreamImp); 913 ASSERT(m_pStreamImp);
929 m_pStreamImp->Retain(); 914 m_pStreamImp->Retain();
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 } 982 }
998 int32_t CFX_TextStream::GetLength() const { 983 int32_t CFX_TextStream::GetLength() const {
999 return m_pStreamImp->GetLength(); 984 return m_pStreamImp->GetLength();
1000 } 985 }
1001 int32_t CFX_TextStream::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) { 986 int32_t CFX_TextStream::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) {
1002 return m_pStreamImp->Seek(eSeek, iOffset); 987 return m_pStreamImp->Seek(eSeek, iOffset);
1003 } 988 }
1004 int32_t CFX_TextStream::GetPosition() { 989 int32_t CFX_TextStream::GetPosition() {
1005 return m_pStreamImp->GetPosition(); 990 return m_pStreamImp->GetPosition();
1006 } 991 }
1007 FX_BOOL CFX_TextStream::IsEOF() const { 992 bool CFX_TextStream::IsEOF() const {
1008 return m_pStreamImp->IsEOF(); 993 return m_pStreamImp->IsEOF();
1009 } 994 }
1010 int32_t CFX_TextStream::ReadData(uint8_t* pBuffer, int32_t iBufferSize) { 995 int32_t CFX_TextStream::ReadData(uint8_t* pBuffer, int32_t iBufferSize) {
1011 return m_pStreamImp->ReadData(pBuffer, iBufferSize); 996 return m_pStreamImp->ReadData(pBuffer, iBufferSize);
1012 } 997 }
1013 int32_t CFX_TextStream::WriteData(const uint8_t* pBuffer, int32_t iBufferSize) { 998 int32_t CFX_TextStream::WriteData(const uint8_t* pBuffer, int32_t iBufferSize) {
1014 return m_pStreamImp->WriteData(pBuffer, iBufferSize); 999 return m_pStreamImp->WriteData(pBuffer, iBufferSize);
1015 } 1000 }
1016 void CFX_TextStream::Flush() { 1001 void CFX_TextStream::Flush() {
1017 m_pStreamImp->Flush(); 1002 m_pStreamImp->Flush();
1018 } 1003 }
1019 FX_BOOL CFX_TextStream::SetLength(int32_t iLength) { 1004 bool CFX_TextStream::SetLength(int32_t iLength) {
1020 return m_pStreamImp->SetLength(iLength); 1005 return m_pStreamImp->SetLength(iLength);
1021 } 1006 }
1022 uint16_t CFX_TextStream::GetCodePage() const { 1007 uint16_t CFX_TextStream::GetCodePage() const {
1023 return m_wCodePage; 1008 return m_wCodePage;
1024 } 1009 }
1025 IFX_Stream* CFX_TextStream::CreateSharedStream(uint32_t dwAccess, 1010 IFX_Stream* CFX_TextStream::CreateSharedStream(uint32_t dwAccess,
1026 int32_t iOffset, 1011 int32_t iOffset,
1027 int32_t iLength) { 1012 int32_t iLength) {
1028 IFX_Stream* pSR = 1013 IFX_Stream* pSR =
1029 m_pStreamImp->CreateSharedStream(dwAccess, iOffset, iLength); 1014 m_pStreamImp->CreateSharedStream(dwAccess, iOffset, iLength);
1030 if (!pSR) { 1015 if (!pSR) {
1031 return nullptr; 1016 return nullptr;
1032 } 1017 }
1033 if (dwAccess & FX_STREAMACCESS_Text) { 1018 if (dwAccess & FX_STREAMACCESS_Text) {
1034 return new CFX_TextStream(pSR, TRUE); 1019 return new CFX_TextStream(pSR, true);
1035 } 1020 }
1036 return pSR; 1021 return pSR;
1037 } 1022 }
1038 int32_t CFX_TextStream::GetBOM(uint8_t bom[4]) const { 1023 int32_t CFX_TextStream::GetBOM(uint8_t bom[4]) const {
1039 if (m_wBOMLength < 1) { 1024 if (m_wBOMLength < 1) {
1040 return 0; 1025 return 0;
1041 } 1026 }
1042 *(uint32_t*)bom = m_dwBOM; 1027 *(uint32_t*)bom = m_dwBOM;
1043 return m_wBOMLength; 1028 return m_wBOMLength;
1044 } 1029 }
1045 uint16_t CFX_TextStream::SetCodePage(uint16_t wCodePage) { 1030 uint16_t CFX_TextStream::SetCodePage(uint16_t wCodePage) {
1046 if (m_wBOMLength > 0) { 1031 if (m_wBOMLength > 0) {
1047 return m_wCodePage; 1032 return m_wCodePage;
1048 } 1033 }
1049 uint16_t v = m_wCodePage; 1034 uint16_t v = m_wCodePage;
1050 m_wCodePage = wCodePage; 1035 m_wCodePage = wCodePage;
1051 return v; 1036 return v;
1052 } 1037 }
1053 int32_t CFX_TextStream::ReadString(FX_WCHAR* pStr, 1038 int32_t CFX_TextStream::ReadString(FX_WCHAR* pStr,
1054 int32_t iMaxLength, 1039 int32_t iMaxLength,
1055 FX_BOOL& bEOS) { 1040 bool& bEOS) {
1056 ASSERT(pStr && iMaxLength > 0); 1041 ASSERT(pStr && iMaxLength > 0);
1057 if (!m_pStreamImp) { 1042 if (!m_pStreamImp) {
1058 return -1; 1043 return -1;
1059 } 1044 }
1060 int32_t iLen; 1045 int32_t iLen;
1061 if (m_wCodePage == FX_CODEPAGE_UTF16LE || 1046 if (m_wCodePage == FX_CODEPAGE_UTF16LE ||
1062 m_wCodePage == FX_CODEPAGE_UTF16BE) { 1047 m_wCodePage == FX_CODEPAGE_UTF16BE) {
1063 int32_t iBytes = iMaxLength * 2; 1048 int32_t iBytes = iMaxLength * 2;
1064 iLen = m_pStreamImp->ReadData((uint8_t*)pStr, iBytes); 1049 iLen = m_pStreamImp->ReadData((uint8_t*)pStr, iBytes);
1065 iMaxLength = iLen / 2; 1050 iMaxLength = iLen / 2;
(...skipping 17 matching lines...) Expand all
1083 if (!m_pBuf) { 1068 if (!m_pBuf) {
1084 m_pBuf = FX_Alloc(uint8_t, iBytes); 1069 m_pBuf = FX_Alloc(uint8_t, iBytes);
1085 m_iBufSize = iBytes; 1070 m_iBufSize = iBytes;
1086 } else if (iBytes > m_iBufSize) { 1071 } else if (iBytes > m_iBufSize) {
1087 m_pBuf = FX_Realloc(uint8_t, m_pBuf, iBytes); 1072 m_pBuf = FX_Realloc(uint8_t, m_pBuf, iBytes);
1088 m_iBufSize = iBytes; 1073 m_iBufSize = iBytes;
1089 } 1074 }
1090 iLen = m_pStreamImp->ReadData(m_pBuf, iBytes); 1075 iLen = m_pStreamImp->ReadData(m_pBuf, iBytes);
1091 int32_t iSrc = iLen; 1076 int32_t iSrc = iLen;
1092 int32_t iDecode = FX_DecodeString(m_wCodePage, (const FX_CHAR*)m_pBuf, 1077 int32_t iDecode = FX_DecodeString(m_wCodePage, (const FX_CHAR*)m_pBuf,
1093 &iSrc, pStr, &iMaxLength, TRUE); 1078 &iSrc, pStr, &iMaxLength, true);
1094 m_pStreamImp->Seek(FX_STREAMSEEK_Current, iSrc - iLen); 1079 m_pStreamImp->Seek(FX_STREAMSEEK_Current, iSrc - iLen);
1095 if (iDecode < 1) { 1080 if (iDecode < 1) {
1096 return -1; 1081 return -1;
1097 } 1082 }
1098 } else { 1083 } else {
1099 iMaxLength = 0; 1084 iMaxLength = 0;
1100 } 1085 }
1101 } 1086 }
1102 bEOS = m_pStreamImp->IsEOF(); 1087 bEOS = m_pStreamImp->IsEOF();
1103 return iMaxLength; 1088 return iMaxLength;
(...skipping 23 matching lines...) Expand all
1127 m_iPosition(0), 1112 m_iPosition(0),
1128 m_iStart(0), 1113 m_iStart(0),
1129 m_iLength(0), 1114 m_iLength(0),
1130 m_iRefCount(1) {} 1115 m_iRefCount(1) {}
1131 1116
1132 CFX_Stream::~CFX_Stream() { 1117 CFX_Stream::~CFX_Stream() {
1133 if (m_eStreamType != FX_STREAMTYPE_Stream) 1118 if (m_eStreamType != FX_STREAMTYPE_Stream)
1134 delete m_pStreamImp; 1119 delete m_pStreamImp;
1135 } 1120 }
1136 1121
1137 FX_BOOL CFX_Stream::LoadFile(const FX_WCHAR* pszSrcFileName, 1122 bool CFX_Stream::LoadFile(const FX_WCHAR* pszSrcFileName, uint32_t dwAccess) {
1138 uint32_t dwAccess) {
1139 if (m_eStreamType != FX_SREAMTYPE_Unknown || m_pStreamImp) 1123 if (m_eStreamType != FX_SREAMTYPE_Unknown || m_pStreamImp)
1140 return FALSE; 1124 return false;
1141 1125
1142 if (!pszSrcFileName || FXSYS_wcslen(pszSrcFileName) < 1) 1126 if (!pszSrcFileName || FXSYS_wcslen(pszSrcFileName) < 1)
1143 return FALSE; 1127 return false;
1144 1128
1145 std::unique_ptr<CFX_FileStreamImp> pImp(new CFX_FileStreamImp()); 1129 std::unique_ptr<CFX_FileStreamImp> pImp(new CFX_FileStreamImp());
1146 if (!pImp->LoadFile(pszSrcFileName, dwAccess)) 1130 if (!pImp->LoadFile(pszSrcFileName, dwAccess))
1147 return FALSE; 1131 return false;
1148 1132
1149 m_pStreamImp = pImp.release(); 1133 m_pStreamImp = pImp.release();
1150 m_eStreamType = FX_STREAMTYPE_File; 1134 m_eStreamType = FX_STREAMTYPE_File;
1151 m_dwAccess = dwAccess; 1135 m_dwAccess = dwAccess;
1152 m_iLength = m_pStreamImp->GetLength(); 1136 m_iLength = m_pStreamImp->GetLength();
1153 return TRUE; 1137 return true;
1154 } 1138 }
1155 1139
1156 FX_BOOL CFX_Stream::LoadFileRead(IFX_SeekableReadStream* pFileRead, 1140 bool CFX_Stream::LoadFileRead(IFX_SeekableReadStream* pFileRead,
1157 uint32_t dwAccess) { 1141 uint32_t dwAccess) {
1158 if (m_eStreamType != FX_SREAMTYPE_Unknown || m_pStreamImp) 1142 if (m_eStreamType != FX_SREAMTYPE_Unknown || m_pStreamImp)
1159 return FALSE; 1143 return false;
1160 1144
1161 if (!pFileRead) 1145 if (!pFileRead)
1162 return FALSE; 1146 return false;
1163 1147
1164 std::unique_ptr<CFX_FileReadStreamImp> pImp(new CFX_FileReadStreamImp()); 1148 std::unique_ptr<CFX_FileReadStreamImp> pImp(new CFX_FileReadStreamImp());
1165 if (!pImp->LoadFileRead(pFileRead, dwAccess)) 1149 if (!pImp->LoadFileRead(pFileRead, dwAccess))
1166 return FALSE; 1150 return false;
1167 1151
1168 m_pStreamImp = pImp.release(); 1152 m_pStreamImp = pImp.release();
1169 m_eStreamType = FX_STREAMTYPE_File; 1153 m_eStreamType = FX_STREAMTYPE_File;
1170 m_dwAccess = dwAccess; 1154 m_dwAccess = dwAccess;
1171 m_iLength = m_pStreamImp->GetLength(); 1155 m_iLength = m_pStreamImp->GetLength();
1172 return TRUE; 1156 return true;
1173 } 1157 }
1174 1158
1175 FX_BOOL CFX_Stream::LoadFileWrite(IFX_SeekableWriteStream* pFileWrite, 1159 bool CFX_Stream::LoadFileWrite(IFX_SeekableWriteStream* pFileWrite,
1176 uint32_t dwAccess) { 1160 uint32_t dwAccess) {
1177 if (m_eStreamType != FX_SREAMTYPE_Unknown || m_pStreamImp) 1161 if (m_eStreamType != FX_SREAMTYPE_Unknown || m_pStreamImp)
1178 return FALSE; 1162 return false;
1179 1163
1180 if (!pFileWrite) 1164 if (!pFileWrite)
1181 return FALSE; 1165 return false;
1182 1166
1183 std::unique_ptr<CFX_FileWriteStreamImp> pImp(new CFX_FileWriteStreamImp()); 1167 std::unique_ptr<CFX_FileWriteStreamImp> pImp(new CFX_FileWriteStreamImp());
1184 if (!pImp->LoadFileWrite(pFileWrite, dwAccess)) 1168 if (!pImp->LoadFileWrite(pFileWrite, dwAccess))
1185 return FALSE; 1169 return false;
1186 1170
1187 m_pStreamImp = pImp.release(); 1171 m_pStreamImp = pImp.release();
1188 m_eStreamType = FX_STREAMTYPE_File; 1172 m_eStreamType = FX_STREAMTYPE_File;
1189 m_dwAccess = dwAccess; 1173 m_dwAccess = dwAccess;
1190 m_iLength = m_pStreamImp->GetLength(); 1174 m_iLength = m_pStreamImp->GetLength();
1191 return TRUE; 1175 return true;
1192 } 1176 }
1193 1177
1194 FX_BOOL CFX_Stream::LoadBuffer(uint8_t* pData, 1178 bool CFX_Stream::LoadBuffer(uint8_t* pData,
1195 int32_t iTotalSize, 1179 int32_t iTotalSize,
1196 uint32_t dwAccess) { 1180 uint32_t dwAccess) {
1197 if (m_eStreamType != FX_SREAMTYPE_Unknown || m_pStreamImp) 1181 if (m_eStreamType != FX_SREAMTYPE_Unknown || m_pStreamImp)
1198 return FALSE; 1182 return false;
1199 1183
1200 if (!pData || iTotalSize < 1) 1184 if (!pData || iTotalSize < 1)
1201 return FALSE; 1185 return false;
1202 1186
1203 std::unique_ptr<CFX_BufferStreamImp> pImp(new CFX_BufferStreamImp()); 1187 std::unique_ptr<CFX_BufferStreamImp> pImp(new CFX_BufferStreamImp());
1204 if (!pImp->LoadBuffer(pData, iTotalSize, dwAccess)) 1188 if (!pImp->LoadBuffer(pData, iTotalSize, dwAccess))
1205 return FALSE; 1189 return false;
1206 1190
1207 m_pStreamImp = pImp.release(); 1191 m_pStreamImp = pImp.release();
1208 m_eStreamType = FX_STREAMTYPE_Buffer; 1192 m_eStreamType = FX_STREAMTYPE_Buffer;
1209 m_dwAccess = dwAccess; 1193 m_dwAccess = dwAccess;
1210 m_iLength = m_pStreamImp->GetLength(); 1194 m_iLength = m_pStreamImp->GetLength();
1211 return TRUE; 1195 return true;
1212 } 1196 }
1213 1197
1214 FX_BOOL CFX_Stream::LoadBufferRead(IFX_BufferRead* pBufferRead, 1198 bool CFX_Stream::LoadBufferRead(IFX_BufferRead* pBufferRead,
1215 int32_t iFileSize, 1199 int32_t iFileSize,
1216 uint32_t dwAccess, 1200 uint32_t dwAccess,
1217 FX_BOOL bReleaseBufferRead) { 1201 bool bReleaseBufferRead) {
1218 if (m_eStreamType != FX_SREAMTYPE_Unknown || m_pStreamImp) 1202 if (m_eStreamType != FX_SREAMTYPE_Unknown || m_pStreamImp)
1219 return FALSE; 1203 return false;
1220 1204
1221 if (!pBufferRead) 1205 if (!pBufferRead)
1222 return FALSE; 1206 return false;
1223 1207
1224 std::unique_ptr<CFX_BufferReadStreamImp> pImp(new CFX_BufferReadStreamImp); 1208 std::unique_ptr<CFX_BufferReadStreamImp> pImp(new CFX_BufferReadStreamImp);
1225 if (!pImp->LoadBufferRead(pBufferRead, iFileSize, dwAccess, 1209 if (!pImp->LoadBufferRead(pBufferRead, iFileSize, dwAccess,
1226 bReleaseBufferRead)) 1210 bReleaseBufferRead))
1227 return FALSE; 1211 return false;
1228 1212
1229 m_pStreamImp = pImp.release(); 1213 m_pStreamImp = pImp.release();
1230 m_eStreamType = FX_STREAMTYPE_BufferRead; 1214 m_eStreamType = FX_STREAMTYPE_BufferRead;
1231 m_dwAccess = dwAccess; 1215 m_dwAccess = dwAccess;
1232 m_iLength = m_pStreamImp->GetLength(); 1216 m_iLength = m_pStreamImp->GetLength();
1233 return TRUE; 1217 return true;
1234 } 1218 }
1235 1219
1236 void CFX_Stream::Release() { 1220 void CFX_Stream::Release() {
1237 if (--m_iRefCount < 1) { 1221 if (--m_iRefCount < 1) {
1238 delete this; 1222 delete this;
1239 } 1223 }
1240 } 1224 }
1241 IFX_Stream* CFX_Stream::Retain() { 1225 IFX_Stream* CFX_Stream::Retain() {
1242 m_iRefCount++; 1226 m_iRefCount++;
1243 return this; 1227 return this;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1285 int32_t CFX_Stream::GetPosition() { 1269 int32_t CFX_Stream::GetPosition() {
1286 if (!m_pStreamImp) { 1270 if (!m_pStreamImp) {
1287 return -1; 1271 return -1;
1288 } 1272 }
1289 if (m_eStreamType == FX_STREAMTYPE_File || 1273 if (m_eStreamType == FX_STREAMTYPE_File ||
1290 m_eStreamType == FX_STREAMTYPE_Buffer) { 1274 m_eStreamType == FX_STREAMTYPE_Buffer) {
1291 return m_iPosition = m_pStreamImp->GetPosition(); 1275 return m_iPosition = m_pStreamImp->GetPosition();
1292 } 1276 }
1293 return m_iPosition - m_iStart; 1277 return m_iPosition - m_iStart;
1294 } 1278 }
1295 FX_BOOL CFX_Stream::IsEOF() const { 1279 bool CFX_Stream::IsEOF() const {
1296 if (!m_pStreamImp) { 1280 if (!m_pStreamImp) {
1297 return TRUE; 1281 return true;
1298 } 1282 }
1299 if (m_eStreamType == FX_STREAMTYPE_File || 1283 if (m_eStreamType == FX_STREAMTYPE_File ||
1300 m_eStreamType == FX_STREAMTYPE_Buffer) { 1284 m_eStreamType == FX_STREAMTYPE_Buffer) {
1301 return m_pStreamImp->IsEOF(); 1285 return m_pStreamImp->IsEOF();
1302 } 1286 }
1303 return m_iPosition >= m_iStart + m_iLength; 1287 return m_iPosition >= m_iStart + m_iLength;
1304 } 1288 }
1305 int32_t CFX_Stream::ReadData(uint8_t* pBuffer, int32_t iBufferSize) { 1289 int32_t CFX_Stream::ReadData(uint8_t* pBuffer, int32_t iBufferSize) {
1306 ASSERT(pBuffer && iBufferSize > 0); 1290 ASSERT(pBuffer && iBufferSize > 0);
1307 if (!m_pStreamImp) { 1291 if (!m_pStreamImp) {
1308 return -1; 1292 return -1;
1309 } 1293 }
1310 int32_t iLen = std::min(m_iStart + m_iLength - m_iPosition, iBufferSize); 1294 int32_t iLen = std::min(m_iStart + m_iLength - m_iPosition, iBufferSize);
1311 if (iLen <= 0) { 1295 if (iLen <= 0) {
1312 return 0; 1296 return 0;
1313 } 1297 }
1314 if (m_pStreamImp->GetPosition() != m_iPosition) { 1298 if (m_pStreamImp->GetPosition() != m_iPosition) {
1315 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition); 1299 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition);
1316 } 1300 }
1317 iLen = m_pStreamImp->ReadData(pBuffer, iLen); 1301 iLen = m_pStreamImp->ReadData(pBuffer, iLen);
1318 m_iPosition = m_pStreamImp->GetPosition(); 1302 m_iPosition = m_pStreamImp->GetPosition();
1319 return iLen; 1303 return iLen;
1320 } 1304 }
1321 int32_t CFX_Stream::ReadString(FX_WCHAR* pStr, 1305 int32_t CFX_Stream::ReadString(FX_WCHAR* pStr, int32_t iMaxLength, bool& bEOS) {
1322 int32_t iMaxLength,
1323 FX_BOOL& bEOS) {
1324 ASSERT(pStr && iMaxLength > 0); 1306 ASSERT(pStr && iMaxLength > 0);
1325 if (!m_pStreamImp) { 1307 if (!m_pStreamImp) {
1326 return -1; 1308 return -1;
1327 } 1309 }
1328 int32_t iEnd = m_iStart + m_iLength; 1310 int32_t iEnd = m_iStart + m_iLength;
1329 int32_t iLen = iEnd - m_iPosition; 1311 int32_t iLen = iEnd - m_iPosition;
1330 iLen = std::min(iEnd / 2, iMaxLength); 1312 iLen = std::min(iEnd / 2, iMaxLength);
1331 if (iLen <= 0) { 1313 if (iLen <= 0) {
1332 return 0; 1314 return 0;
1333 } 1315 }
1334 if (m_pStreamImp->GetPosition() != m_iPosition) { 1316 if (m_pStreamImp->GetPosition() != m_iPosition) {
1335 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition); 1317 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition);
1336 } 1318 }
1337 iLen = m_pStreamImp->ReadString(pStr, iLen, bEOS); 1319 iLen = m_pStreamImp->ReadString(pStr, iLen, bEOS);
1338 m_iPosition = m_pStreamImp->GetPosition(); 1320 m_iPosition = m_pStreamImp->GetPosition();
1339 if (iLen > 0 && m_iPosition >= iEnd) { 1321 if (iLen > 0 && m_iPosition >= iEnd) {
1340 bEOS = TRUE; 1322 bEOS = true;
1341 } 1323 }
1342 return iLen; 1324 return iLen;
1343 } 1325 }
1344 1326
1345 int32_t CFX_Stream::WriteData(const uint8_t* pBuffer, int32_t iBufferSize) { 1327 int32_t CFX_Stream::WriteData(const uint8_t* pBuffer, int32_t iBufferSize) {
1346 ASSERT(pBuffer && iBufferSize > 0); 1328 ASSERT(pBuffer && iBufferSize > 0);
1347 if (!m_pStreamImp) { 1329 if (!m_pStreamImp) {
1348 return -1; 1330 return -1;
1349 } 1331 }
1350 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) { 1332 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 } 1378 }
1397 void CFX_Stream::Flush() { 1379 void CFX_Stream::Flush() {
1398 if (!m_pStreamImp) { 1380 if (!m_pStreamImp) {
1399 return; 1381 return;
1400 } 1382 }
1401 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) { 1383 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) {
1402 return; 1384 return;
1403 } 1385 }
1404 m_pStreamImp->Flush(); 1386 m_pStreamImp->Flush();
1405 } 1387 }
1406 FX_BOOL CFX_Stream::SetLength(int32_t iLength) { 1388 bool CFX_Stream::SetLength(int32_t iLength) {
1407 if (!m_pStreamImp) { 1389 if (!m_pStreamImp) {
1408 return FALSE; 1390 return false;
1409 } 1391 }
1410 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) { 1392 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) {
1411 return FALSE; 1393 return false;
1412 } 1394 }
1413 return m_pStreamImp->SetLength(iLength); 1395 return m_pStreamImp->SetLength(iLength);
1414 } 1396 }
1415 int32_t CFX_Stream::GetBOM(uint8_t bom[4]) const { 1397 int32_t CFX_Stream::GetBOM(uint8_t bom[4]) const {
1416 if (!m_pStreamImp) { 1398 if (!m_pStreamImp) {
1417 return -1; 1399 return -1;
1418 } 1400 }
1419 return 0; 1401 return 0;
1420 } 1402 }
1421 uint16_t CFX_Stream::GetCodePage() const { 1403 uint16_t CFX_Stream::GetCodePage() const {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1458 } 1440 }
1459 CFX_Stream* pShared = new CFX_Stream; 1441 CFX_Stream* pShared = new CFX_Stream;
1460 pShared->m_eStreamType = FX_STREAMTYPE_Stream; 1442 pShared->m_eStreamType = FX_STREAMTYPE_Stream;
1461 pShared->m_pStreamImp = m_pStreamImp; 1443 pShared->m_pStreamImp = m_pStreamImp;
1462 pShared->m_dwAccess = dwAccess; 1444 pShared->m_dwAccess = dwAccess;
1463 pShared->m_iTotalSize = iLength; 1445 pShared->m_iTotalSize = iLength;
1464 pShared->m_iPosition = iStart; 1446 pShared->m_iPosition = iStart;
1465 pShared->m_iStart = iStart; 1447 pShared->m_iStart = iStart;
1466 pShared->m_iLength = (dwAccess & FX_STREAMACCESS_Write) != 0 ? 0 : iLength; 1448 pShared->m_iLength = (dwAccess & FX_STREAMACCESS_Write) != 0 ? 0 : iLength;
1467 if (dwAccess & FX_STREAMACCESS_Text) { 1449 if (dwAccess & FX_STREAMACCESS_Text) {
1468 return IFX_Stream::CreateTextStream(pShared, TRUE); 1450 return IFX_Stream::CreateTextStream(pShared, true);
1469 } 1451 }
1470 return pShared; 1452 return pShared;
1471 } 1453 }
1472 1454
1473 IFX_SeekableReadStream* FX_CreateFileRead(IFX_Stream* pBaseStream, 1455 IFX_SeekableReadStream* FX_CreateFileRead(IFX_Stream* pBaseStream,
1474 bool bReleaseStream) { 1456 bool bReleaseStream) {
1475 ASSERT(pBaseStream); 1457 ASSERT(pBaseStream);
1476 return new CFGAS_FileRead(pBaseStream, bReleaseStream); 1458 return new CFGAS_FileRead(pBaseStream, bReleaseStream);
1477 } 1459 }
1478 1460
(...skipping 12 matching lines...) Expand all
1491 1473
1492 bool CFGAS_FileRead::ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) { 1474 bool CFGAS_FileRead::ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) {
1493 m_pStream->Seek(FX_STREAMSEEK_Begin, (int32_t)offset); 1475 m_pStream->Seek(FX_STREAMSEEK_Begin, (int32_t)offset);
1494 int32_t iLen = m_pStream->ReadData((uint8_t*)buffer, (int32_t)size); 1476 int32_t iLen = m_pStream->ReadData((uint8_t*)buffer, (int32_t)size);
1495 return iLen == (int32_t)size; 1477 return iLen == (int32_t)size;
1496 } 1478 }
1497 1479
1498 void CFGAS_FileRead::Release() { 1480 void CFGAS_FileRead::Release() {
1499 delete this; 1481 delete this;
1500 } 1482 }
OLDNEW
« no previous file with comments | « xfa/fgas/crt/fgas_stream.h ('k') | xfa/fgas/crt/fgas_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698