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

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

Issue 2095653002: Remove NULL in xfa/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Rebase to master Created 4 years, 5 months 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_system.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_
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 IFX_Stream* Retain() override; 221 IFX_Stream* Retain() override;
222 uint32_t GetAccessModes() const override; 222 uint32_t GetAccessModes() const override;
223 int32_t GetLength() const override; 223 int32_t GetLength() const override;
224 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override; 224 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override;
225 int32_t GetPosition() override; 225 int32_t GetPosition() override;
226 FX_BOOL IsEOF() const override; 226 FX_BOOL IsEOF() const override;
227 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override; 227 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override;
228 int32_t ReadString(FX_WCHAR* pStr, 228 int32_t ReadString(FX_WCHAR* pStr,
229 int32_t iMaxLength, 229 int32_t iMaxLength,
230 FX_BOOL& bEOS, 230 FX_BOOL& bEOS,
231 int32_t const* pByteSize = NULL) override; 231 int32_t const* pByteSize = nullptr) override;
232 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override; 232 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override;
233 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override; 233 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override;
234 void Flush() override; 234 void Flush() override;
235 FX_BOOL SetLength(int32_t iLength) override; 235 FX_BOOL SetLength(int32_t iLength) override;
236 int32_t GetBOM(uint8_t bom[4]) const override; 236 int32_t GetBOM(uint8_t bom[4]) const override;
237 uint16_t GetCodePage() const override; 237 uint16_t GetCodePage() const override;
238 uint16_t SetCodePage(uint16_t wCodePage) override; 238 uint16_t SetCodePage(uint16_t wCodePage) override;
239 IFX_Stream* CreateSharedStream(uint32_t dwAccess, 239 IFX_Stream* CreateSharedStream(uint32_t dwAccess,
240 int32_t iOffset, 240 int32_t iOffset,
241 int32_t iLength) override; 241 int32_t iLength) override;
(...skipping 19 matching lines...) Expand all
261 IFX_Stream* Retain() override; 261 IFX_Stream* Retain() override;
262 uint32_t GetAccessModes() const override; 262 uint32_t GetAccessModes() const override;
263 int32_t GetLength() const override; 263 int32_t GetLength() const override;
264 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override; 264 int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override;
265 int32_t GetPosition() override; 265 int32_t GetPosition() override;
266 FX_BOOL IsEOF() const override; 266 FX_BOOL IsEOF() const override;
267 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override; 267 int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override;
268 int32_t ReadString(FX_WCHAR* pStr, 268 int32_t ReadString(FX_WCHAR* pStr,
269 int32_t iMaxLength, 269 int32_t iMaxLength,
270 FX_BOOL& bEOS, 270 FX_BOOL& bEOS,
271 int32_t const* pByteSize = NULL) override; 271 int32_t const* pByteSize = nullptr) override;
272 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override; 272 int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override;
273 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override; 273 int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override;
274 void Flush() override; 274 void Flush() override;
275 FX_BOOL SetLength(int32_t iLength) override; 275 FX_BOOL SetLength(int32_t iLength) override;
276 int32_t GetBOM(uint8_t bom[4]) const override; 276 int32_t GetBOM(uint8_t bom[4]) const override;
277 uint16_t GetCodePage() const override; 277 uint16_t GetCodePage() const override;
278 uint16_t SetCodePage(uint16_t wCodePage) override; 278 uint16_t SetCodePage(uint16_t wCodePage) override;
279 IFX_Stream* CreateSharedStream(uint32_t dwAccess, 279 IFX_Stream* CreateSharedStream(uint32_t dwAccess,
280 int32_t iOffset, 280 int32_t iOffset,
281 int32_t iLength) override; 281 int32_t iLength) override;
(...skipping 19 matching lines...) Expand all
301 void Release() override; 301 void Release() override;
302 FX_FILESIZE GetSize() override; 302 FX_FILESIZE GetSize() override;
303 FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override; 303 FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override;
304 304
305 protected: 305 protected:
306 FX_BOOL m_bReleaseStream; 306 FX_BOOL m_bReleaseStream;
307 IFX_Stream* m_pStream; 307 IFX_Stream* m_pStream;
308 }; 308 };
309 309
310 int32_t FileLength(FXSYS_FILE* file) { 310 int32_t FileLength(FXSYS_FILE* file) {
311 ASSERT(file != NULL); 311 ASSERT(file);
312 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ 312 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_
313 return _filelength(_fileno(file)); 313 return _filelength(_fileno(file));
314 #else 314 #else
315 int32_t iPos = FXSYS_ftell(file); 315 int32_t iPos = FXSYS_ftell(file);
316 FXSYS_fseek(file, 0, FXSYS_SEEK_END); 316 FXSYS_fseek(file, 0, FXSYS_SEEK_END);
317 int32_t iLen = FXSYS_ftell(file); 317 int32_t iLen = FXSYS_ftell(file);
318 FXSYS_fseek(file, iPos, FXSYS_SEEK_SET); 318 FXSYS_fseek(file, iPos, FXSYS_SEEK_SET);
319 return iLen; 319 return iLen;
320 #endif 320 #endif
321 } 321 }
322 322
323 FX_BOOL FileSetSize(FXSYS_FILE* file, int32_t size) { 323 FX_BOOL FileSetSize(FXSYS_FILE* file, int32_t size) {
324 ASSERT(file != NULL); 324 ASSERT(file);
325 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ 325 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_
326 return _chsize(_fileno(file), size) == 0; 326 return _chsize(_fileno(file), size) == 0;
327 #elif _FX_OS_ == _FX_WIN32_MOBILE_ 327 #elif _FX_OS_ == _FX_WIN32_MOBILE_
328 HANDLE hFile = _fileno(file); 328 HANDLE hFile = _fileno(file);
329 uint32_t dwPos = ::SetFilePointer(hFile, 0, 0, FILE_CURRENT); 329 uint32_t dwPos = ::SetFilePointer(hFile, 0, 0, FILE_CURRENT);
330 ::SetFilePointer(hFile, size, 0, FILE_BEGIN); 330 ::SetFilePointer(hFile, size, 0, FILE_BEGIN);
331 FX_BOOL bRet = ::SetEndOfFile(hFile); 331 FX_BOOL bRet = ::SetEndOfFile(hFile);
332 ::SetFilePointer(hFile, (int32_t)dwPos, 0, FILE_BEGIN); 332 ::SetFilePointer(hFile, (int32_t)dwPos, 0, FILE_BEGIN);
333 return bRet; 333 return bRet;
334 #else 334 #else
335 return FALSE; 335 return FALSE;
336 #endif 336 #endif
337 } 337 }
338 338
339 } // namespace 339 } // namespace
340 340
341 IFX_Stream* IFX_Stream::CreateStream(IFX_BufferRead* pBufferRead, 341 IFX_Stream* IFX_Stream::CreateStream(IFX_BufferRead* pBufferRead,
342 uint32_t dwAccess, 342 uint32_t dwAccess,
343 int32_t iFileSize, 343 int32_t iFileSize,
344 FX_BOOL bReleaseBufferRead) { 344 FX_BOOL bReleaseBufferRead) {
345 CFX_Stream* pSR = new CFX_Stream; 345 CFX_Stream* pSR = new CFX_Stream;
346 if (!pSR->LoadBufferRead(pBufferRead, iFileSize, dwAccess, 346 if (!pSR->LoadBufferRead(pBufferRead, iFileSize, dwAccess,
347 bReleaseBufferRead)) { 347 bReleaseBufferRead)) {
348 pSR->Release(); 348 pSR->Release();
349 return NULL; 349 return nullptr;
350 } 350 }
351 if (dwAccess & FX_STREAMACCESS_Text) { 351 if (dwAccess & FX_STREAMACCESS_Text) {
352 return new CFX_TextStream(pSR, TRUE); 352 return new CFX_TextStream(pSR, TRUE);
353 } 353 }
354 return pSR; 354 return pSR;
355 } 355 }
356 IFX_Stream* IFX_Stream::CreateStream(IFX_FileRead* pFileRead, 356 IFX_Stream* IFX_Stream::CreateStream(IFX_FileRead* pFileRead,
357 uint32_t dwAccess) { 357 uint32_t dwAccess) {
358 CFX_Stream* pSR = new CFX_Stream; 358 CFX_Stream* pSR = new CFX_Stream;
359 if (!pSR->LoadFileRead(pFileRead, dwAccess)) { 359 if (!pSR->LoadFileRead(pFileRead, dwAccess)) {
360 pSR->Release(); 360 pSR->Release();
361 return NULL; 361 return nullptr;
362 } 362 }
363 if (dwAccess & FX_STREAMACCESS_Text) { 363 if (dwAccess & FX_STREAMACCESS_Text) {
364 return new CFX_TextStream(pSR, TRUE); 364 return new CFX_TextStream(pSR, TRUE);
365 } 365 }
366 return pSR; 366 return pSR;
367 } 367 }
368 IFX_Stream* IFX_Stream::CreateStream(IFX_FileWrite* pFileWrite, 368 IFX_Stream* IFX_Stream::CreateStream(IFX_FileWrite* pFileWrite,
369 uint32_t dwAccess) { 369 uint32_t dwAccess) {
370 CFX_Stream* pSR = new CFX_Stream; 370 CFX_Stream* pSR = new CFX_Stream;
371 if (!pSR->LoadFileWrite(pFileWrite, dwAccess)) { 371 if (!pSR->LoadFileWrite(pFileWrite, dwAccess)) {
372 pSR->Release(); 372 pSR->Release();
373 return NULL; 373 return nullptr;
374 } 374 }
375 if (dwAccess & FX_STREAMACCESS_Text) { 375 if (dwAccess & FX_STREAMACCESS_Text) {
376 return new CFX_TextStream(pSR, TRUE); 376 return new CFX_TextStream(pSR, TRUE);
377 } 377 }
378 return pSR; 378 return pSR;
379 } 379 }
380 IFX_Stream* IFX_Stream::CreateStream(const FX_WCHAR* pszFileName, 380 IFX_Stream* IFX_Stream::CreateStream(const FX_WCHAR* pszFileName,
381 uint32_t dwAccess) { 381 uint32_t dwAccess) {
382 CFX_Stream* pSR = new CFX_Stream; 382 CFX_Stream* pSR = new CFX_Stream;
383 if (!pSR->LoadFile(pszFileName, dwAccess)) { 383 if (!pSR->LoadFile(pszFileName, dwAccess)) {
384 pSR->Release(); 384 pSR->Release();
385 return NULL; 385 return nullptr;
386 } 386 }
387 if (dwAccess & FX_STREAMACCESS_Text) { 387 if (dwAccess & FX_STREAMACCESS_Text) {
388 return new CFX_TextStream(pSR, TRUE); 388 return new CFX_TextStream(pSR, TRUE);
389 } 389 }
390 return pSR; 390 return pSR;
391 } 391 }
392 IFX_Stream* IFX_Stream::CreateStream(uint8_t* pData, 392 IFX_Stream* IFX_Stream::CreateStream(uint8_t* pData,
393 int32_t length, 393 int32_t length,
394 uint32_t dwAccess) { 394 uint32_t dwAccess) {
395 CFX_Stream* pSR = new CFX_Stream; 395 CFX_Stream* pSR = new CFX_Stream;
396 if (!pSR->LoadBuffer(pData, length, dwAccess)) { 396 if (!pSR->LoadBuffer(pData, length, dwAccess)) {
397 pSR->Release(); 397 pSR->Release();
398 return NULL; 398 return nullptr;
399 } 399 }
400 if (dwAccess & FX_STREAMACCESS_Text) { 400 if (dwAccess & FX_STREAMACCESS_Text) {
401 return new CFX_TextStream(pSR, TRUE); 401 return new CFX_TextStream(pSR, TRUE);
402 } 402 }
403 return pSR; 403 return pSR;
404 } 404 }
405 405
406 IFX_StreamImp::IFX_StreamImp() : m_dwAccess(0) {} 406 IFX_StreamImp::IFX_StreamImp() : m_dwAccess(0) {}
407 407
408 CFX_FileStreamImp::CFX_FileStreamImp() : m_hFile(nullptr), m_iLength(0) {} 408 CFX_FileStreamImp::CFX_FileStreamImp() : m_hFile(nullptr), m_iLength(0) {}
409 409
410 CFX_FileStreamImp::~CFX_FileStreamImp() { 410 CFX_FileStreamImp::~CFX_FileStreamImp() {
411 if (m_hFile) 411 if (m_hFile)
412 FXSYS_fclose(m_hFile); 412 FXSYS_fclose(m_hFile);
413 } 413 }
414 414
415 FX_BOOL CFX_FileStreamImp::LoadFile(const FX_WCHAR* pszSrcFileName, 415 FX_BOOL CFX_FileStreamImp::LoadFile(const FX_WCHAR* pszSrcFileName,
416 uint32_t dwAccess) { 416 uint32_t dwAccess) {
417 ASSERT(m_hFile == NULL); 417 ASSERT(!m_hFile);
418 ASSERT(pszSrcFileName != NULL && FXSYS_wcslen(pszSrcFileName) > 0); 418 ASSERT(pszSrcFileName && FXSYS_wcslen(pszSrcFileName) > 0);
419 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \ 419 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \
420 _FX_OS_ == _FX_WIN64_ 420 _FX_OS_ == _FX_WIN64_
421 const FX_WCHAR* wsMode; 421 const FX_WCHAR* wsMode;
422 if (dwAccess & FX_STREAMACCESS_Write) { 422 if (dwAccess & FX_STREAMACCESS_Write) {
423 if (dwAccess & FX_STREAMACCESS_Append) { 423 if (dwAccess & FX_STREAMACCESS_Append) {
424 wsMode = L"a+b"; 424 wsMode = L"a+b";
425 } else if (dwAccess & FX_STREAMACCESS_Truncate) { 425 } else if (dwAccess & FX_STREAMACCESS_Truncate) {
426 wsMode = L"w+b"; 426 wsMode = L"w+b";
427 } else { 427 } else {
428 wsMode = L"r+b"; 428 wsMode = L"r+b";
(...skipping 26 matching lines...) Expand all
455 if (dwAccess & FX_STREAMACCESS_Append) { 455 if (dwAccess & FX_STREAMACCESS_Append) {
456 wsMode = "a+b"; 456 wsMode = "a+b";
457 } else if (dwAccess & FX_STREAMACCESS_Truncate) { 457 } else if (dwAccess & FX_STREAMACCESS_Truncate) {
458 wsMode = "w+b"; 458 wsMode = "w+b";
459 } else { 459 } else {
460 wsMode = "r+b"; 460 wsMode = "r+b";
461 } 461 }
462 } 462 }
463 CFX_ByteString szFileName = CFX_ByteString::FromUnicode(pszSrcFileName); 463 CFX_ByteString szFileName = CFX_ByteString::FromUnicode(pszSrcFileName);
464 m_hFile = FXSYS_fopen(szFileName.c_str(), wsMode); 464 m_hFile = FXSYS_fopen(szFileName.c_str(), wsMode);
465 if (m_hFile == NULL) { 465 if (!m_hFile) {
466 if (dwAccess & FX_STREAMACCESS_Write) { 466 if (dwAccess & FX_STREAMACCESS_Write) {
467 if (dwAccess & FX_STREAMACCESS_Create) { 467 if (dwAccess & FX_STREAMACCESS_Create) {
468 m_hFile = FXSYS_fopen(szFileName.c_str(), "w+b"); 468 m_hFile = FXSYS_fopen(szFileName.c_str(), "w+b");
469 } 469 }
470 if (m_hFile == NULL) { 470 if (!m_hFile) {
471 m_hFile = FXSYS_fopen(szFileName.c_str(), "r+b"); 471 m_hFile = FXSYS_fopen(szFileName.c_str(), "r+b");
472 if (m_hFile == NULL) { 472 if (!m_hFile) {
473 return FALSE; 473 return FALSE;
474 } 474 }
475 if (dwAccess & FX_STREAMACCESS_Truncate) { 475 if (dwAccess & FX_STREAMACCESS_Truncate) {
476 FileSetSize(m_hFile, 0); 476 FileSetSize(m_hFile, 0);
477 } 477 }
478 } 478 }
479 } else { 479 } else {
480 return FALSE; 480 return FALSE;
481 } 481 }
482 } 482 }
483 #endif 483 #endif
484 SetAccessModes(dwAccess); 484 SetAccessModes(dwAccess);
485 if ((dwAccess & (FX_STREAMACCESS_Write | FX_STREAMACCESS_Truncate)) == 485 if ((dwAccess & (FX_STREAMACCESS_Write | FX_STREAMACCESS_Truncate)) ==
486 (FX_STREAMACCESS_Write | FX_STREAMACCESS_Truncate)) { 486 (FX_STREAMACCESS_Write | FX_STREAMACCESS_Truncate)) {
487 m_iLength = 0; 487 m_iLength = 0;
488 } else { 488 } else {
489 m_iLength = FileLength(m_hFile); 489 m_iLength = FileLength(m_hFile);
490 } 490 }
491 return TRUE; 491 return TRUE;
492 } 492 }
493 int32_t CFX_FileStreamImp::GetLength() const { 493 int32_t CFX_FileStreamImp::GetLength() const {
494 ASSERT(m_hFile != NULL); 494 ASSERT(m_hFile);
495 return m_iLength; 495 return m_iLength;
496 } 496 }
497 int32_t CFX_FileStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) { 497 int32_t CFX_FileStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) {
498 ASSERT(m_hFile != NULL); 498 ASSERT(m_hFile);
499 FXSYS_fseek(m_hFile, iOffset, eSeek); 499 FXSYS_fseek(m_hFile, iOffset, eSeek);
500 return FXSYS_ftell(m_hFile); 500 return FXSYS_ftell(m_hFile);
501 } 501 }
502 int32_t CFX_FileStreamImp::GetPosition() { 502 int32_t CFX_FileStreamImp::GetPosition() {
503 ASSERT(m_hFile != NULL); 503 ASSERT(m_hFile);
504 return FXSYS_ftell(m_hFile); 504 return FXSYS_ftell(m_hFile);
505 } 505 }
506 FX_BOOL CFX_FileStreamImp::IsEOF() const { 506 FX_BOOL CFX_FileStreamImp::IsEOF() const {
507 ASSERT(m_hFile != NULL); 507 ASSERT(m_hFile);
508 return FXSYS_ftell(m_hFile) >= m_iLength; 508 return FXSYS_ftell(m_hFile) >= m_iLength;
509 } 509 }
510 int32_t CFX_FileStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) { 510 int32_t CFX_FileStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) {
511 ASSERT(m_hFile != NULL); 511 ASSERT(m_hFile);
512 ASSERT(pBuffer != NULL && iBufferSize > 0); 512 ASSERT(pBuffer && iBufferSize > 0);
513 return FXSYS_fread(pBuffer, 1, iBufferSize, m_hFile); 513 return FXSYS_fread(pBuffer, 1, iBufferSize, m_hFile);
514 } 514 }
515 int32_t CFX_FileStreamImp::ReadString(FX_WCHAR* pStr, 515 int32_t CFX_FileStreamImp::ReadString(FX_WCHAR* pStr,
516 int32_t iMaxLength, 516 int32_t iMaxLength,
517 FX_BOOL& bEOS) { 517 FX_BOOL& bEOS) {
518 ASSERT(m_hFile != NULL); 518 ASSERT(m_hFile);
519 ASSERT(pStr != NULL && iMaxLength > 0); 519 ASSERT(pStr && iMaxLength > 0);
520 if (m_iLength <= 0) { 520 if (m_iLength <= 0) {
521 return 0; 521 return 0;
522 } 522 }
523 int32_t iPosition = FXSYS_ftell(m_hFile); 523 int32_t iPosition = FXSYS_ftell(m_hFile);
524 int32_t iLen = std::min((m_iLength - iPosition) / 2, iMaxLength); 524 int32_t iLen = std::min((m_iLength - iPosition) / 2, iMaxLength);
525 if (iLen <= 0) { 525 if (iLen <= 0) {
526 return 0; 526 return 0;
527 } 527 }
528 iLen = FXSYS_fread(pStr, 2, iLen, m_hFile); 528 iLen = FXSYS_fread(pStr, 2, iLen, m_hFile);
529 int32_t iCount = 0; 529 int32_t iCount = 0;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 ASSERT(m_hFile && (GetAccessModes() & FX_STREAMACCESS_Write) != 0); 566 ASSERT(m_hFile && (GetAccessModes() & FX_STREAMACCESS_Write) != 0);
567 FXSYS_fflush(m_hFile); 567 FXSYS_fflush(m_hFile);
568 } 568 }
569 FX_BOOL CFX_FileStreamImp::SetLength(int32_t iLength) { 569 FX_BOOL CFX_FileStreamImp::SetLength(int32_t iLength) {
570 ASSERT(m_hFile && (GetAccessModes() & FX_STREAMACCESS_Write) != 0); 570 ASSERT(m_hFile && (GetAccessModes() & FX_STREAMACCESS_Write) != 0);
571 FX_BOOL bRet = FileSetSize(m_hFile, iLength); 571 FX_BOOL bRet = FileSetSize(m_hFile, iLength);
572 m_iLength = FileLength(m_hFile); 572 m_iLength = FileLength(m_hFile);
573 return bRet; 573 return bRet;
574 } 574 }
575 CFX_FileReadStreamImp::CFX_FileReadStreamImp() 575 CFX_FileReadStreamImp::CFX_FileReadStreamImp()
576 : m_pFileRead(NULL), m_iPosition(0), m_iLength(0) {} 576 : m_pFileRead(nullptr), m_iPosition(0), m_iLength(0) {}
577 FX_BOOL CFX_FileReadStreamImp::LoadFileRead(IFX_FileRead* pFileRead, 577 FX_BOOL CFX_FileReadStreamImp::LoadFileRead(IFX_FileRead* pFileRead,
578 uint32_t dwAccess) { 578 uint32_t dwAccess) {
579 ASSERT(m_pFileRead == NULL && pFileRead != NULL); 579 ASSERT(!m_pFileRead && pFileRead);
580 if (dwAccess & FX_STREAMACCESS_Write) { 580 if (dwAccess & FX_STREAMACCESS_Write) {
581 return FALSE; 581 return FALSE;
582 } 582 }
583 m_pFileRead = pFileRead; 583 m_pFileRead = pFileRead;
584 m_iLength = m_pFileRead->GetSize(); 584 m_iLength = m_pFileRead->GetSize();
585 return TRUE; 585 return TRUE;
586 } 586 }
587 int32_t CFX_FileReadStreamImp::GetLength() const { 587 int32_t CFX_FileReadStreamImp::GetLength() const {
588 return m_iLength; 588 return m_iLength;
589 } 589 }
(...skipping 13 matching lines...) Expand all
603 m_iPosition = 0; 603 m_iPosition = 0;
604 } else if (m_iPosition >= m_iLength) { 604 } else if (m_iPosition >= m_iLength) {
605 m_iPosition = m_iLength; 605 m_iPosition = m_iLength;
606 } 606 }
607 return m_iPosition; 607 return m_iPosition;
608 } 608 }
609 FX_BOOL CFX_FileReadStreamImp::IsEOF() const { 609 FX_BOOL CFX_FileReadStreamImp::IsEOF() const {
610 return m_iPosition >= m_iLength; 610 return m_iPosition >= m_iLength;
611 } 611 }
612 int32_t CFX_FileReadStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) { 612 int32_t CFX_FileReadStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) {
613 ASSERT(m_pFileRead != NULL); 613 ASSERT(m_pFileRead);
614 ASSERT(pBuffer != NULL && iBufferSize > 0); 614 ASSERT(pBuffer && iBufferSize > 0);
615 if (iBufferSize > m_iLength - m_iPosition) { 615 if (iBufferSize > m_iLength - m_iPosition) {
616 iBufferSize = m_iLength - m_iPosition; 616 iBufferSize = m_iLength - m_iPosition;
617 } 617 }
618 if (m_pFileRead->ReadBlock(pBuffer, m_iPosition, iBufferSize)) { 618 if (m_pFileRead->ReadBlock(pBuffer, m_iPosition, iBufferSize)) {
619 m_iPosition += iBufferSize; 619 m_iPosition += iBufferSize;
620 return iBufferSize; 620 return iBufferSize;
621 } 621 }
622 return 0; 622 return 0;
623 } 623 }
624 int32_t CFX_FileReadStreamImp::ReadString(FX_WCHAR* pStr, 624 int32_t CFX_FileReadStreamImp::ReadString(FX_WCHAR* pStr,
625 int32_t iMaxLength, 625 int32_t iMaxLength,
626 FX_BOOL& bEOS) { 626 FX_BOOL& bEOS) {
627 ASSERT(m_pFileRead != NULL); 627 ASSERT(m_pFileRead);
628 ASSERT(pStr != NULL && iMaxLength > 0); 628 ASSERT(pStr && iMaxLength > 0);
629 iMaxLength = ReadData((uint8_t*)pStr, iMaxLength * 2) / 2; 629 iMaxLength = ReadData((uint8_t*)pStr, iMaxLength * 2) / 2;
630 if (iMaxLength <= 0) { 630 if (iMaxLength <= 0) {
631 return 0; 631 return 0;
632 } 632 }
633 int32_t i = 0; 633 int32_t i = 0;
634 while (i < iMaxLength && pStr[i] != L'\0') { 634 while (i < iMaxLength && pStr[i] != L'\0') {
635 ++i; 635 ++i;
636 } 636 }
637 bEOS = (m_iPosition >= m_iLength) || pStr[i] == L'\0'; 637 bEOS = (m_iPosition >= m_iLength) || pStr[i] == L'\0';
638 return i; 638 return i;
639 } 639 }
640 CFX_BufferReadStreamImp::CFX_BufferReadStreamImp() 640 CFX_BufferReadStreamImp::CFX_BufferReadStreamImp()
641 : m_pBufferRead(NULL), 641 : m_pBufferRead(nullptr),
642 m_bReleaseBufferRead(FALSE), 642 m_bReleaseBufferRead(FALSE),
643 m_iPosition(0), 643 m_iPosition(0),
644 m_iBufferSize(0) {} 644 m_iBufferSize(0) {}
645 CFX_BufferReadStreamImp::~CFX_BufferReadStreamImp() { 645 CFX_BufferReadStreamImp::~CFX_BufferReadStreamImp() {
646 if (m_bReleaseBufferRead && m_pBufferRead != NULL) { 646 if (m_bReleaseBufferRead && m_pBufferRead) {
647 m_pBufferRead->Release(); 647 m_pBufferRead->Release();
648 } 648 }
649 } 649 }
650 FX_BOOL CFX_BufferReadStreamImp::LoadBufferRead(IFX_BufferRead* pBufferRead, 650 FX_BOOL CFX_BufferReadStreamImp::LoadBufferRead(IFX_BufferRead* pBufferRead,
651 int32_t iFileSize, 651 int32_t iFileSize,
652 uint32_t dwAccess, 652 uint32_t dwAccess,
653 FX_BOOL bReleaseBufferRead) { 653 FX_BOOL bReleaseBufferRead) {
654 ASSERT(m_pBufferRead == NULL && pBufferRead != NULL); 654 ASSERT(!m_pBufferRead && pBufferRead);
655 if (dwAccess & FX_STREAMACCESS_Write) { 655 if (dwAccess & FX_STREAMACCESS_Write) {
656 return FALSE; 656 return FALSE;
657 } 657 }
658 m_bReleaseBufferRead = bReleaseBufferRead; 658 m_bReleaseBufferRead = bReleaseBufferRead;
659 m_pBufferRead = pBufferRead; 659 m_pBufferRead = pBufferRead;
660 m_iBufferSize = iFileSize; 660 m_iBufferSize = iFileSize;
661 if (m_iBufferSize >= 0) { 661 if (m_iBufferSize >= 0) {
662 return TRUE; 662 return TRUE;
663 } 663 }
664 if (!m_pBufferRead->ReadNextBlock(TRUE)) { 664 if (!m_pBufferRead->ReadNextBlock(TRUE)) {
(...skipping 27 matching lines...) Expand all
692 } else if (m_iPosition >= iLength) { 692 } else if (m_iPosition >= iLength) {
693 m_iPosition = iLength; 693 m_iPosition = iLength;
694 } 694 }
695 return m_iPosition; 695 return m_iPosition;
696 } 696 }
697 FX_BOOL CFX_BufferReadStreamImp::IsEOF() const { 697 FX_BOOL CFX_BufferReadStreamImp::IsEOF() const {
698 return m_pBufferRead ? m_pBufferRead->IsEOF() : TRUE; 698 return m_pBufferRead ? m_pBufferRead->IsEOF() : TRUE;
699 } 699 }
700 int32_t CFX_BufferReadStreamImp::ReadData(uint8_t* pBuffer, 700 int32_t CFX_BufferReadStreamImp::ReadData(uint8_t* pBuffer,
701 int32_t iBufferSize) { 701 int32_t iBufferSize) {
702 ASSERT(m_pBufferRead != NULL); 702 ASSERT(m_pBufferRead);
703 ASSERT(pBuffer != NULL && iBufferSize > 0); 703 ASSERT(pBuffer && iBufferSize > 0);
704 int32_t iLength = GetLength(); 704 int32_t iLength = GetLength();
705 if (m_iPosition >= iLength) { 705 if (m_iPosition >= iLength) {
706 return 0; 706 return 0;
707 } 707 }
708 if (iBufferSize > iLength - m_iPosition) { 708 if (iBufferSize > iLength - m_iPosition) {
709 iBufferSize = iLength - m_iPosition; 709 iBufferSize = iLength - m_iPosition;
710 } 710 }
711 uint32_t dwBlockOffset = m_pBufferRead->GetBlockOffset(); 711 uint32_t dwBlockOffset = m_pBufferRead->GetBlockOffset();
712 uint32_t dwBlockSize = m_pBufferRead->GetBlockSize(); 712 uint32_t dwBlockSize = m_pBufferRead->GetBlockSize();
713 if (m_iPosition < (int32_t)dwBlockOffset) { 713 if (m_iPosition < (int32_t)dwBlockOffset) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 FXSYS_memcpy(pBuffer + dwOffsetTmp, pBufferTmp, dwCopySize); 747 FXSYS_memcpy(pBuffer + dwOffsetTmp, pBufferTmp, dwCopySize);
748 dwOffsetTmp += dwCopySize; 748 dwOffsetTmp += dwCopySize;
749 iBufferSize -= dwCopySize; 749 iBufferSize -= dwCopySize;
750 } 750 }
751 m_iPosition += dwOffsetTmp; 751 m_iPosition += dwOffsetTmp;
752 return dwOffsetTmp; 752 return dwOffsetTmp;
753 } 753 }
754 int32_t CFX_BufferReadStreamImp::ReadString(FX_WCHAR* pStr, 754 int32_t CFX_BufferReadStreamImp::ReadString(FX_WCHAR* pStr,
755 int32_t iMaxLength, 755 int32_t iMaxLength,
756 FX_BOOL& bEOS) { 756 FX_BOOL& bEOS) {
757 ASSERT(m_pBufferRead != NULL); 757 ASSERT(m_pBufferRead);
758 ASSERT(pStr != NULL && iMaxLength > 0); 758 ASSERT(pStr && iMaxLength > 0);
759 iMaxLength = ReadData((uint8_t*)pStr, iMaxLength * 2) / 2; 759 iMaxLength = ReadData((uint8_t*)pStr, iMaxLength * 2) / 2;
760 if (iMaxLength <= 0) { 760 if (iMaxLength <= 0) {
761 return 0; 761 return 0;
762 } 762 }
763 int32_t i = 0; 763 int32_t i = 0;
764 while (i < iMaxLength && pStr[i] != L'\0') { 764 while (i < iMaxLength && pStr[i] != L'\0') {
765 ++i; 765 ++i;
766 } 766 }
767 bEOS = (m_iPosition >= GetLength()) || pStr[i] == L'\0'; 767 bEOS = (m_iPosition >= GetLength()) || pStr[i] == L'\0';
768 return i; 768 return i;
769 } 769 }
770 CFX_FileWriteStreamImp::CFX_FileWriteStreamImp() 770 CFX_FileWriteStreamImp::CFX_FileWriteStreamImp()
771 : m_pFileWrite(NULL), m_iPosition(0) {} 771 : m_pFileWrite(nullptr), m_iPosition(0) {}
772 FX_BOOL CFX_FileWriteStreamImp::LoadFileWrite(IFX_FileWrite* pFileWrite, 772 FX_BOOL CFX_FileWriteStreamImp::LoadFileWrite(IFX_FileWrite* pFileWrite,
773 uint32_t dwAccess) { 773 uint32_t dwAccess) {
774 ASSERT(m_pFileWrite == NULL && pFileWrite != NULL); 774 ASSERT(!m_pFileWrite && pFileWrite);
775 if (dwAccess & FX_STREAMACCESS_Read) { 775 if (dwAccess & FX_STREAMACCESS_Read) {
776 return FALSE; 776 return FALSE;
777 } 777 }
778 if (dwAccess & FX_STREAMACCESS_Append) { 778 if (dwAccess & FX_STREAMACCESS_Append) {
779 m_iPosition = pFileWrite->GetSize(); 779 m_iPosition = pFileWrite->GetSize();
780 } 780 }
781 m_pFileWrite = pFileWrite; 781 m_pFileWrite = pFileWrite;
782 return TRUE; 782 return TRUE;
783 } 783 }
784 int32_t CFX_FileWriteStreamImp::GetLength() const { 784 int32_t CFX_FileWriteStreamImp::GetLength() const {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 uint32_t dwAccess) { 837 uint32_t dwAccess) {
838 ASSERT(!m_pData && pData && iTotalSize > 0); 838 ASSERT(!m_pData && pData && iTotalSize > 0);
839 SetAccessModes(dwAccess); 839 SetAccessModes(dwAccess);
840 m_pData = pData; 840 m_pData = pData;
841 m_iTotalSize = iTotalSize; 841 m_iTotalSize = iTotalSize;
842 m_iPosition = 0; 842 m_iPosition = 0;
843 m_iLength = (dwAccess & FX_STREAMACCESS_Write) != 0 ? 0 : iTotalSize; 843 m_iLength = (dwAccess & FX_STREAMACCESS_Write) != 0 ? 0 : iTotalSize;
844 return TRUE; 844 return TRUE;
845 } 845 }
846 int32_t CFX_BufferStreamImp::GetLength() const { 846 int32_t CFX_BufferStreamImp::GetLength() const {
847 ASSERT(m_pData != NULL); 847 ASSERT(m_pData);
848 return m_iLength; 848 return m_iLength;
849 } 849 }
850 int32_t CFX_BufferStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) { 850 int32_t CFX_BufferStreamImp::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) {
851 ASSERT(m_pData != NULL); 851 ASSERT(m_pData);
852 if (eSeek == FX_STREAMSEEK_Begin) { 852 if (eSeek == FX_STREAMSEEK_Begin) {
853 m_iPosition = iOffset; 853 m_iPosition = iOffset;
854 } else if (eSeek == FX_STREAMSEEK_Current) { 854 } else if (eSeek == FX_STREAMSEEK_Current) {
855 m_iPosition += iOffset; 855 m_iPosition += iOffset;
856 } else if (eSeek == FX_STREAMSEEK_End) { 856 } else if (eSeek == FX_STREAMSEEK_End) {
857 m_iPosition = m_iLength + iOffset; 857 m_iPosition = m_iLength + iOffset;
858 } 858 }
859 if (m_iPosition > m_iLength) { 859 if (m_iPosition > m_iLength) {
860 m_iPosition = m_iLength; 860 m_iPosition = m_iLength;
861 } 861 }
862 if (m_iPosition < 0) { 862 if (m_iPosition < 0) {
863 m_iPosition = 0; 863 m_iPosition = 0;
864 } 864 }
865 return m_iPosition; 865 return m_iPosition;
866 } 866 }
867 int32_t CFX_BufferStreamImp::GetPosition() { 867 int32_t CFX_BufferStreamImp::GetPosition() {
868 ASSERT(m_pData != NULL); 868 ASSERT(m_pData);
869 return m_iPosition; 869 return m_iPosition;
870 } 870 }
871 FX_BOOL CFX_BufferStreamImp::IsEOF() const { 871 FX_BOOL CFX_BufferStreamImp::IsEOF() const {
872 ASSERT(m_pData != NULL); 872 ASSERT(m_pData);
873 return m_iPosition >= m_iLength; 873 return m_iPosition >= m_iLength;
874 } 874 }
875 int32_t CFX_BufferStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) { 875 int32_t CFX_BufferStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) {
876 ASSERT(m_pData != NULL); 876 ASSERT(m_pData);
877 ASSERT(pBuffer != NULL && iBufferSize > 0); 877 ASSERT(pBuffer && iBufferSize > 0);
878 int32_t iLen = std::min(m_iLength - m_iPosition, iBufferSize); 878 int32_t iLen = std::min(m_iLength - m_iPosition, iBufferSize);
879 if (iLen <= 0) { 879 if (iLen <= 0) {
880 return 0; 880 return 0;
881 } 881 }
882 FXSYS_memcpy(pBuffer, m_pData + m_iPosition, iLen); 882 FXSYS_memcpy(pBuffer, m_pData + m_iPosition, iLen);
883 m_iPosition += iLen; 883 m_iPosition += iLen;
884 return iLen; 884 return iLen;
885 } 885 }
886 int32_t CFX_BufferStreamImp::ReadString(FX_WCHAR* pStr, 886 int32_t CFX_BufferStreamImp::ReadString(FX_WCHAR* pStr,
887 int32_t iMaxLength, 887 int32_t iMaxLength,
888 FX_BOOL& bEOS) { 888 FX_BOOL& bEOS) {
889 ASSERT(m_pData != NULL); 889 ASSERT(m_pData);
890 ASSERT(pStr != NULL && iMaxLength > 0); 890 ASSERT(pStr && iMaxLength > 0);
891 int32_t iLen = std::min((m_iLength - m_iPosition) / 2, iMaxLength); 891 int32_t iLen = std::min((m_iLength - m_iPosition) / 2, iMaxLength);
892 if (iLen <= 0) { 892 if (iLen <= 0) {
893 return 0; 893 return 0;
894 } 894 }
895 const FX_WCHAR* pSrc = (const FX_WCHAR*)(FX_CHAR*)(m_pData + m_iPosition); 895 const FX_WCHAR* pSrc = (const FX_WCHAR*)(FX_CHAR*)(m_pData + m_iPosition);
896 int32_t iCount = 0; 896 int32_t iCount = 0;
897 while (*pSrc && iCount < iLen) { 897 while (*pSrc && iCount < iLen) {
898 *pStr++ = *pSrc++; 898 *pStr++ = *pSrc++;
899 iCount++; 899 iCount++;
900 } 900 }
(...skipping 26 matching lines...) Expand all
927 } 927 }
928 FXSYS_memcpy(m_pData + m_iPosition, pStr, iLen * 2); 928 FXSYS_memcpy(m_pData + m_iPosition, pStr, iLen * 2);
929 m_iPosition += iLen * 2; 929 m_iPosition += iLen * 2;
930 if (m_iPosition > m_iLength) { 930 if (m_iPosition > m_iLength) {
931 m_iLength = m_iPosition; 931 m_iLength = m_iPosition;
932 } 932 }
933 return iLen; 933 return iLen;
934 } 934 }
935 IFX_Stream* IFX_Stream::CreateTextStream(IFX_Stream* pBaseStream, 935 IFX_Stream* IFX_Stream::CreateTextStream(IFX_Stream* pBaseStream,
936 FX_BOOL bDeleteOnRelease) { 936 FX_BOOL bDeleteOnRelease) {
937 ASSERT(pBaseStream != NULL); 937 ASSERT(pBaseStream);
938 return new CFX_TextStream(pBaseStream, bDeleteOnRelease); 938 return new CFX_TextStream(pBaseStream, bDeleteOnRelease);
939 } 939 }
940 CFX_TextStream::CFX_TextStream(IFX_Stream* pStream, FX_BOOL bDelStream) 940 CFX_TextStream::CFX_TextStream(IFX_Stream* pStream, FX_BOOL bDelStream)
941 : m_wCodePage(FX_CODEPAGE_DefANSI), 941 : m_wCodePage(FX_CODEPAGE_DefANSI),
942 m_wBOMLength(0), 942 m_wBOMLength(0),
943 m_dwBOM(0), 943 m_dwBOM(0),
944 m_pBuf(NULL), 944 m_pBuf(nullptr),
945 m_iBufSize(0), 945 m_iBufSize(0),
946 m_bDelStream(bDelStream), 946 m_bDelStream(bDelStream),
947 m_pStreamImp(pStream), 947 m_pStreamImp(pStream),
948 m_iRefCount(1) { 948 m_iRefCount(1) {
949 ASSERT(m_pStreamImp != NULL); 949 ASSERT(m_pStreamImp);
950 m_pStreamImp->Retain(); 950 m_pStreamImp->Retain();
951 InitStream(); 951 InitStream();
952 } 952 }
953 CFX_TextStream::~CFX_TextStream() { 953 CFX_TextStream::~CFX_TextStream() {
954 m_pStreamImp->Release(); 954 m_pStreamImp->Release();
955 if (m_bDelStream) { 955 if (m_bDelStream) {
956 m_pStreamImp->Release(); 956 m_pStreamImp->Release();
957 } 957 }
958 if (m_pBuf != NULL) { 958 if (m_pBuf) {
959 FX_Free(m_pBuf); 959 FX_Free(m_pBuf);
960 } 960 }
961 } 961 }
962 void CFX_TextStream::InitStream() { 962 void CFX_TextStream::InitStream() {
963 int32_t iPosition = m_pStreamImp->GetPosition(); 963 int32_t iPosition = m_pStreamImp->GetPosition();
964 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, 0); 964 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, 0);
965 m_pStreamImp->ReadData((uint8_t*)&m_dwBOM, 3); 965 m_pStreamImp->ReadData((uint8_t*)&m_dwBOM, 3);
966 #if _FX_ENDIAN_ == _FX_LITTLE_ENDIAN_ 966 #if _FX_ENDIAN_ == _FX_LITTLE_ENDIAN_
967 m_dwBOM &= 0x00FFFFFF; 967 m_dwBOM &= 0x00FFFFFF;
968 if (m_dwBOM == 0x00BFBBEF) { 968 if (m_dwBOM == 0x00BFBBEF) {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 return m_pStreamImp->SetLength(iLength); 1041 return m_pStreamImp->SetLength(iLength);
1042 } 1042 }
1043 uint16_t CFX_TextStream::GetCodePage() const { 1043 uint16_t CFX_TextStream::GetCodePage() const {
1044 return m_wCodePage; 1044 return m_wCodePage;
1045 } 1045 }
1046 IFX_Stream* CFX_TextStream::CreateSharedStream(uint32_t dwAccess, 1046 IFX_Stream* CFX_TextStream::CreateSharedStream(uint32_t dwAccess,
1047 int32_t iOffset, 1047 int32_t iOffset,
1048 int32_t iLength) { 1048 int32_t iLength) {
1049 IFX_Stream* pSR = 1049 IFX_Stream* pSR =
1050 m_pStreamImp->CreateSharedStream(dwAccess, iOffset, iLength); 1050 m_pStreamImp->CreateSharedStream(dwAccess, iOffset, iLength);
1051 if (pSR == NULL) { 1051 if (!pSR) {
1052 return NULL; 1052 return nullptr;
1053 } 1053 }
1054 if (dwAccess & FX_STREAMACCESS_Text) { 1054 if (dwAccess & FX_STREAMACCESS_Text) {
1055 return new CFX_TextStream(pSR, TRUE); 1055 return new CFX_TextStream(pSR, TRUE);
1056 } 1056 }
1057 return pSR; 1057 return pSR;
1058 } 1058 }
1059 int32_t CFX_TextStream::GetBOM(uint8_t bom[4]) const { 1059 int32_t CFX_TextStream::GetBOM(uint8_t bom[4]) const {
1060 if (m_wBOMLength < 1) { 1060 if (m_wBOMLength < 1) {
1061 return 0; 1061 return 0;
1062 } 1062 }
1063 *(uint32_t*)bom = m_dwBOM; 1063 *(uint32_t*)bom = m_dwBOM;
1064 return m_wBOMLength; 1064 return m_wBOMLength;
1065 } 1065 }
1066 uint16_t CFX_TextStream::SetCodePage(uint16_t wCodePage) { 1066 uint16_t CFX_TextStream::SetCodePage(uint16_t wCodePage) {
1067 if (m_wBOMLength > 0) { 1067 if (m_wBOMLength > 0) {
1068 return m_wCodePage; 1068 return m_wCodePage;
1069 } 1069 }
1070 uint16_t v = m_wCodePage; 1070 uint16_t v = m_wCodePage;
1071 m_wCodePage = wCodePage; 1071 m_wCodePage = wCodePage;
1072 return v; 1072 return v;
1073 } 1073 }
1074 int32_t CFX_TextStream::ReadString(FX_WCHAR* pStr, 1074 int32_t CFX_TextStream::ReadString(FX_WCHAR* pStr,
1075 int32_t iMaxLength, 1075 int32_t iMaxLength,
1076 FX_BOOL& bEOS, 1076 FX_BOOL& bEOS,
1077 int32_t const* pByteSize) { 1077 int32_t const* pByteSize) {
1078 ASSERT(pStr != NULL && iMaxLength > 0); 1078 ASSERT(pStr && iMaxLength > 0);
1079 if (m_pStreamImp == NULL) { 1079 if (!m_pStreamImp) {
1080 return -1; 1080 return -1;
1081 } 1081 }
1082 int32_t iLen; 1082 int32_t iLen;
1083 if (m_wCodePage == FX_CODEPAGE_UTF16LE || 1083 if (m_wCodePage == FX_CODEPAGE_UTF16LE ||
1084 m_wCodePage == FX_CODEPAGE_UTF16BE) { 1084 m_wCodePage == FX_CODEPAGE_UTF16BE) {
1085 int32_t iBytes = pByteSize == NULL ? iMaxLength * 2 : *pByteSize; 1085 int32_t iBytes = pByteSize ? *pByteSize : iMaxLength * 2;
1086 iLen = m_pStreamImp->ReadData((uint8_t*)pStr, iBytes); 1086 iLen = m_pStreamImp->ReadData((uint8_t*)pStr, iBytes);
1087 iMaxLength = iLen / 2; 1087 iMaxLength = iLen / 2;
1088 if (sizeof(FX_WCHAR) > 2) { 1088 if (sizeof(FX_WCHAR) > 2) {
1089 FX_UTF16ToWChar(pStr, iMaxLength); 1089 FX_UTF16ToWChar(pStr, iMaxLength);
1090 } 1090 }
1091 #if _FX_ENDIAN_ == _FX_BIG_ENDIAN_ 1091 #if _FX_ENDIAN_ == _FX_BIG_ENDIAN_
1092 if (m_wCodePage == FX_CODEPAGE_UTF16LE) { 1092 if (m_wCodePage == FX_CODEPAGE_UTF16LE) {
1093 FX_SwapByteOrder(pStr, iMaxLength); 1093 FX_SwapByteOrder(pStr, iMaxLength);
1094 } 1094 }
1095 #else 1095 #else
1096 if (m_wCodePage == FX_CODEPAGE_UTF16BE) { 1096 if (m_wCodePage == FX_CODEPAGE_UTF16BE) {
1097 FX_SwapByteOrder(pStr, iMaxLength); 1097 FX_SwapByteOrder(pStr, iMaxLength);
1098 } 1098 }
1099 #endif 1099 #endif
1100 } else { 1100 } else {
1101 int32_t pos = m_pStreamImp->GetPosition(); 1101 int32_t pos = m_pStreamImp->GetPosition();
1102 int32_t iBytes = pByteSize == NULL ? iMaxLength : *pByteSize; 1102 int32_t iBytes = pByteSize ? *pByteSize : iMaxLength;
1103 iBytes = std::min(iBytes, m_pStreamImp->GetLength() - pos); 1103 iBytes = std::min(iBytes, m_pStreamImp->GetLength() - pos);
1104 if (iBytes > 0) { 1104 if (iBytes > 0) {
1105 if (m_pBuf == NULL) { 1105 if (!m_pBuf) {
1106 m_pBuf = FX_Alloc(uint8_t, iBytes); 1106 m_pBuf = FX_Alloc(uint8_t, iBytes);
1107 m_iBufSize = iBytes; 1107 m_iBufSize = iBytes;
1108 } else if (iBytes > m_iBufSize) { 1108 } else if (iBytes > m_iBufSize) {
1109 m_pBuf = FX_Realloc(uint8_t, m_pBuf, iBytes); 1109 m_pBuf = FX_Realloc(uint8_t, m_pBuf, iBytes);
1110 m_iBufSize = iBytes; 1110 m_iBufSize = iBytes;
1111 } 1111 }
1112 iLen = m_pStreamImp->ReadData(m_pBuf, iBytes); 1112 iLen = m_pStreamImp->ReadData(m_pBuf, iBytes);
1113 int32_t iSrc = iLen; 1113 int32_t iSrc = iLen;
1114 int32_t iDecode = FX_DecodeString(m_wCodePage, (const FX_CHAR*)m_pBuf, 1114 int32_t iDecode = FX_DecodeString(m_wCodePage, (const FX_CHAR*)m_pBuf,
1115 &iSrc, pStr, &iMaxLength, TRUE); 1115 &iSrc, pStr, &iMaxLength, TRUE);
1116 m_pStreamImp->Seek(FX_STREAMSEEK_Current, iSrc - iLen); 1116 m_pStreamImp->Seek(FX_STREAMSEEK_Current, iSrc - iLen);
1117 if (iDecode < 1) { 1117 if (iDecode < 1) {
1118 return -1; 1118 return -1;
1119 } 1119 }
1120 } else { 1120 } else {
1121 iMaxLength = 0; 1121 iMaxLength = 0;
1122 } 1122 }
1123 } 1123 }
1124 bEOS = m_pStreamImp->IsEOF(); 1124 bEOS = m_pStreamImp->IsEOF();
1125 return iMaxLength; 1125 return iMaxLength;
1126 } 1126 }
1127 int32_t CFX_TextStream::WriteString(const FX_WCHAR* pStr, int32_t iLength) { 1127 int32_t CFX_TextStream::WriteString(const FX_WCHAR* pStr, int32_t iLength) {
1128 ASSERT(pStr != NULL && iLength > 0); 1128 ASSERT(pStr && iLength > 0);
1129 if ((m_pStreamImp->GetAccessModes() & FX_STREAMACCESS_Write) == 0) { 1129 if ((m_pStreamImp->GetAccessModes() & FX_STREAMACCESS_Write) == 0) {
1130 return -1; 1130 return -1;
1131 } 1131 }
1132 if (m_wCodePage == FX_CODEPAGE_UTF8) { 1132 if (m_wCodePage == FX_CODEPAGE_UTF8) {
1133 int32_t len = iLength; 1133 int32_t len = iLength;
1134 CFX_UTF8Encoder encoder; 1134 CFX_UTF8Encoder encoder;
1135 while (len-- > 0) { 1135 while (len-- > 0) {
1136 encoder.Input(*pStr++); 1136 encoder.Input(*pStr++);
1137 } 1137 }
1138 CFX_ByteStringC bsResult = encoder.GetResult(); 1138 CFX_ByteStringC bsResult = encoder.GetResult();
1139 m_pStreamImp->WriteData((const uint8_t*)bsResult.c_str(), 1139 m_pStreamImp->WriteData((const uint8_t*)bsResult.c_str(),
1140 bsResult.GetLength()); 1140 bsResult.GetLength());
1141 } 1141 }
1142 return iLength; 1142 return iLength;
1143 } 1143 }
1144 CFX_Stream::CFX_Stream() 1144 CFX_Stream::CFX_Stream()
1145 : m_eStreamType(FX_SREAMTYPE_Unknown), 1145 : m_eStreamType(FX_SREAMTYPE_Unknown),
1146 m_pStreamImp(NULL), 1146 m_pStreamImp(nullptr),
1147 m_dwAccess(0), 1147 m_dwAccess(0),
1148 m_iTotalSize(0), 1148 m_iTotalSize(0),
1149 m_iPosition(0), 1149 m_iPosition(0),
1150 m_iStart(0), 1150 m_iStart(0),
1151 m_iLength(0), 1151 m_iLength(0),
1152 m_iRefCount(1) {} 1152 m_iRefCount(1) {}
1153 1153
1154 CFX_Stream::~CFX_Stream() { 1154 CFX_Stream::~CFX_Stream() {
1155 if (m_eStreamType != FX_STREAMTYPE_Stream) 1155 if (m_eStreamType != FX_STREAMTYPE_Stream)
1156 delete m_pStreamImp; 1156 delete m_pStreamImp;
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 IFX_Stream* CFX_Stream::Retain() { 1262 IFX_Stream* CFX_Stream::Retain() {
1263 m_iRefCount++; 1263 m_iRefCount++;
1264 return this; 1264 return this;
1265 } 1265 }
1266 1266
1267 uint32_t CFX_Stream::GetAccessModes() const { 1267 uint32_t CFX_Stream::GetAccessModes() const {
1268 return m_dwAccess; 1268 return m_dwAccess;
1269 } 1269 }
1270 1270
1271 int32_t CFX_Stream::GetLength() const { 1271 int32_t CFX_Stream::GetLength() const {
1272 if (m_pStreamImp == NULL) { 1272 if (!m_pStreamImp) {
1273 return -1; 1273 return -1;
1274 } 1274 }
1275 if (m_eStreamType == FX_STREAMTYPE_File || 1275 if (m_eStreamType == FX_STREAMTYPE_File ||
1276 m_eStreamType == FX_STREAMTYPE_Buffer) { 1276 m_eStreamType == FX_STREAMTYPE_Buffer) {
1277 return m_pStreamImp->GetLength(); 1277 return m_pStreamImp->GetLength();
1278 } 1278 }
1279 return m_iLength; 1279 return m_iLength;
1280 } 1280 }
1281 int32_t CFX_Stream::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) { 1281 int32_t CFX_Stream::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) {
1282 if (m_pStreamImp == NULL) { 1282 if (!m_pStreamImp) {
1283 return -1; 1283 return -1;
1284 } 1284 }
1285 if (m_eStreamType == FX_STREAMTYPE_File || 1285 if (m_eStreamType == FX_STREAMTYPE_File ||
1286 m_eStreamType == FX_STREAMTYPE_Buffer) { 1286 m_eStreamType == FX_STREAMTYPE_Buffer) {
1287 return m_iPosition = m_pStreamImp->Seek(eSeek, iOffset); 1287 return m_iPosition = m_pStreamImp->Seek(eSeek, iOffset);
1288 } 1288 }
1289 int32_t iEnd = m_iStart + m_iLength; 1289 int32_t iEnd = m_iStart + m_iLength;
1290 int32_t iPosition = m_iStart + iOffset; 1290 int32_t iPosition = m_iStart + iOffset;
1291 if (eSeek == FX_STREAMSEEK_Begin) { 1291 if (eSeek == FX_STREAMSEEK_Begin) {
1292 m_iPosition = iPosition; 1292 m_iPosition = iPosition;
1293 } else if (eSeek == FX_STREAMSEEK_Current) { 1293 } else if (eSeek == FX_STREAMSEEK_Current) {
1294 m_iPosition += iOffset; 1294 m_iPosition += iOffset;
1295 } else if (eSeek == FX_STREAMSEEK_End) { 1295 } else if (eSeek == FX_STREAMSEEK_End) {
1296 m_iPosition = iEnd + iOffset; 1296 m_iPosition = iEnd + iOffset;
1297 } 1297 }
1298 if (m_iPosition > iEnd) { 1298 if (m_iPosition > iEnd) {
1299 m_iPosition = iEnd; 1299 m_iPosition = iEnd;
1300 } 1300 }
1301 if (m_iPosition < m_iStart) { 1301 if (m_iPosition < m_iStart) {
1302 m_iPosition = m_iStart; 1302 m_iPosition = m_iStart;
1303 } 1303 }
1304 return m_iPosition - m_iStart; 1304 return m_iPosition - m_iStart;
1305 } 1305 }
1306 int32_t CFX_Stream::GetPosition() { 1306 int32_t CFX_Stream::GetPosition() {
1307 if (m_pStreamImp == NULL) { 1307 if (!m_pStreamImp) {
1308 return -1; 1308 return -1;
1309 } 1309 }
1310 if (m_eStreamType == FX_STREAMTYPE_File || 1310 if (m_eStreamType == FX_STREAMTYPE_File ||
1311 m_eStreamType == FX_STREAMTYPE_Buffer) { 1311 m_eStreamType == FX_STREAMTYPE_Buffer) {
1312 return m_iPosition = m_pStreamImp->GetPosition(); 1312 return m_iPosition = m_pStreamImp->GetPosition();
1313 } 1313 }
1314 return m_iPosition - m_iStart; 1314 return m_iPosition - m_iStart;
1315 } 1315 }
1316 FX_BOOL CFX_Stream::IsEOF() const { 1316 FX_BOOL CFX_Stream::IsEOF() const {
1317 if (m_pStreamImp == NULL) { 1317 if (!m_pStreamImp) {
1318 return TRUE; 1318 return TRUE;
1319 } 1319 }
1320 if (m_eStreamType == FX_STREAMTYPE_File || 1320 if (m_eStreamType == FX_STREAMTYPE_File ||
1321 m_eStreamType == FX_STREAMTYPE_Buffer) { 1321 m_eStreamType == FX_STREAMTYPE_Buffer) {
1322 return m_pStreamImp->IsEOF(); 1322 return m_pStreamImp->IsEOF();
1323 } 1323 }
1324 return m_iPosition >= m_iStart + m_iLength; 1324 return m_iPosition >= m_iStart + m_iLength;
1325 } 1325 }
1326 int32_t CFX_Stream::ReadData(uint8_t* pBuffer, int32_t iBufferSize) { 1326 int32_t CFX_Stream::ReadData(uint8_t* pBuffer, int32_t iBufferSize) {
1327 ASSERT(pBuffer != NULL && iBufferSize > 0); 1327 ASSERT(pBuffer && iBufferSize > 0);
1328 if (m_pStreamImp == NULL) { 1328 if (!m_pStreamImp) {
1329 return -1; 1329 return -1;
1330 } 1330 }
1331 int32_t iLen = std::min(m_iStart + m_iLength - m_iPosition, iBufferSize); 1331 int32_t iLen = std::min(m_iStart + m_iLength - m_iPosition, iBufferSize);
1332 if (iLen <= 0) { 1332 if (iLen <= 0) {
1333 return 0; 1333 return 0;
1334 } 1334 }
1335 if (m_pStreamImp->GetPosition() != m_iPosition) { 1335 if (m_pStreamImp->GetPosition() != m_iPosition) {
1336 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition); 1336 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition);
1337 } 1337 }
1338 iLen = m_pStreamImp->ReadData(pBuffer, iLen); 1338 iLen = m_pStreamImp->ReadData(pBuffer, iLen);
1339 m_iPosition = m_pStreamImp->GetPosition(); 1339 m_iPosition = m_pStreamImp->GetPosition();
1340 return iLen; 1340 return iLen;
1341 } 1341 }
1342 int32_t CFX_Stream::ReadString(FX_WCHAR* pStr, 1342 int32_t CFX_Stream::ReadString(FX_WCHAR* pStr,
1343 int32_t iMaxLength, 1343 int32_t iMaxLength,
1344 FX_BOOL& bEOS, 1344 FX_BOOL& bEOS,
1345 int32_t const* pByteSize) { 1345 int32_t const* pByteSize) {
1346 ASSERT(pStr != NULL && iMaxLength > 0); 1346 ASSERT(pStr && iMaxLength > 0);
1347 if (m_pStreamImp == NULL) { 1347 if (!m_pStreamImp) {
1348 return -1; 1348 return -1;
1349 } 1349 }
1350 int32_t iEnd = m_iStart + m_iLength; 1350 int32_t iEnd = m_iStart + m_iLength;
1351 int32_t iLen = iEnd - m_iPosition; 1351 int32_t iLen = iEnd - m_iPosition;
1352 if (pByteSize != NULL) { 1352 if (pByteSize) {
1353 iLen = std::min(iLen, *pByteSize); 1353 iLen = std::min(iLen, *pByteSize);
1354 } 1354 }
1355 iLen = std::min(iEnd / 2, iMaxLength); 1355 iLen = std::min(iEnd / 2, iMaxLength);
1356 if (iLen <= 0) { 1356 if (iLen <= 0) {
1357 return 0; 1357 return 0;
1358 } 1358 }
1359 if (m_pStreamImp->GetPosition() != m_iPosition) { 1359 if (m_pStreamImp->GetPosition() != m_iPosition) {
1360 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition); 1360 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition);
1361 } 1361 }
1362 iLen = m_pStreamImp->ReadString(pStr, iLen, bEOS); 1362 iLen = m_pStreamImp->ReadString(pStr, iLen, bEOS);
1363 m_iPosition = m_pStreamImp->GetPosition(); 1363 m_iPosition = m_pStreamImp->GetPosition();
1364 if (iLen > 0 && m_iPosition >= iEnd) { 1364 if (iLen > 0 && m_iPosition >= iEnd) {
1365 bEOS = TRUE; 1365 bEOS = TRUE;
1366 } 1366 }
1367 return iLen; 1367 return iLen;
1368 } 1368 }
1369 1369
1370 int32_t CFX_Stream::WriteData(const uint8_t* pBuffer, int32_t iBufferSize) { 1370 int32_t CFX_Stream::WriteData(const uint8_t* pBuffer, int32_t iBufferSize) {
1371 ASSERT(pBuffer != NULL && iBufferSize > 0); 1371 ASSERT(pBuffer && iBufferSize > 0);
1372 if (m_pStreamImp == NULL) { 1372 if (!m_pStreamImp) {
1373 return -1; 1373 return -1;
1374 } 1374 }
1375 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) { 1375 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) {
1376 return -1; 1376 return -1;
1377 } 1377 }
1378 int32_t iLen = iBufferSize; 1378 int32_t iLen = iBufferSize;
1379 if (m_eStreamType == FX_STREAMTYPE_Stream) { 1379 if (m_eStreamType == FX_STREAMTYPE_Stream) {
1380 iLen = std::min(m_iStart + m_iTotalSize - m_iPosition, iBufferSize); 1380 iLen = std::min(m_iStart + m_iTotalSize - m_iPosition, iBufferSize);
1381 if (iLen <= 0) { 1381 if (iLen <= 0) {
1382 return 0; 1382 return 0;
1383 } 1383 }
1384 } 1384 }
1385 int32_t iEnd = m_iStart + m_iLength; 1385 int32_t iEnd = m_iStart + m_iLength;
1386 if (m_pStreamImp->GetPosition() != m_iPosition) { 1386 if (m_pStreamImp->GetPosition() != m_iPosition) {
1387 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition); 1387 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition);
1388 } 1388 }
1389 iLen = m_pStreamImp->WriteData(pBuffer, iLen); 1389 iLen = m_pStreamImp->WriteData(pBuffer, iLen);
1390 m_iPosition = m_pStreamImp->GetPosition(); 1390 m_iPosition = m_pStreamImp->GetPosition();
1391 if (m_iPosition > iEnd) { 1391 if (m_iPosition > iEnd) {
1392 m_iLength = m_iPosition - m_iStart; 1392 m_iLength = m_iPosition - m_iStart;
1393 } 1393 }
1394 return iLen; 1394 return iLen;
1395 } 1395 }
1396 int32_t CFX_Stream::WriteString(const FX_WCHAR* pStr, int32_t iLength) { 1396 int32_t CFX_Stream::WriteString(const FX_WCHAR* pStr, int32_t iLength) {
1397 ASSERT(pStr != NULL && iLength > 0); 1397 ASSERT(pStr && iLength > 0);
1398 if (m_pStreamImp == NULL) { 1398 if (!m_pStreamImp) {
1399 return -1; 1399 return -1;
1400 } 1400 }
1401 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) { 1401 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) {
1402 return -1; 1402 return -1;
1403 } 1403 }
1404 int32_t iLen = iLength; 1404 int32_t iLen = iLength;
1405 if (m_eStreamType == FX_STREAMTYPE_Stream) { 1405 if (m_eStreamType == FX_STREAMTYPE_Stream) {
1406 iLen = std::min((m_iStart + m_iTotalSize - m_iPosition) / 2, iLength); 1406 iLen = std::min((m_iStart + m_iTotalSize - m_iPosition) / 2, iLength);
1407 if (iLen <= 0) { 1407 if (iLen <= 0) {
1408 return 0; 1408 return 0;
1409 } 1409 }
1410 } 1410 }
1411 int32_t iEnd = m_iStart + m_iLength; 1411 int32_t iEnd = m_iStart + m_iLength;
1412 if (m_pStreamImp->GetPosition() != m_iPosition) { 1412 if (m_pStreamImp->GetPosition() != m_iPosition) {
1413 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition); 1413 m_pStreamImp->Seek(FX_STREAMSEEK_Begin, m_iPosition);
1414 } 1414 }
1415 iLen = m_pStreamImp->WriteString(pStr, iLen); 1415 iLen = m_pStreamImp->WriteString(pStr, iLen);
1416 m_iPosition = m_pStreamImp->GetPosition(); 1416 m_iPosition = m_pStreamImp->GetPosition();
1417 if (m_iPosition > iEnd) { 1417 if (m_iPosition > iEnd) {
1418 m_iLength = m_iPosition - m_iStart; 1418 m_iLength = m_iPosition - m_iStart;
1419 } 1419 }
1420 return iLen; 1420 return iLen;
1421 } 1421 }
1422 void CFX_Stream::Flush() { 1422 void CFX_Stream::Flush() {
1423 if (m_pStreamImp == NULL) { 1423 if (!m_pStreamImp) {
1424 return; 1424 return;
1425 } 1425 }
1426 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) { 1426 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) {
1427 return; 1427 return;
1428 } 1428 }
1429 m_pStreamImp->Flush(); 1429 m_pStreamImp->Flush();
1430 } 1430 }
1431 FX_BOOL CFX_Stream::SetLength(int32_t iLength) { 1431 FX_BOOL CFX_Stream::SetLength(int32_t iLength) {
1432 if (m_pStreamImp == NULL) { 1432 if (!m_pStreamImp) {
1433 return FALSE; 1433 return FALSE;
1434 } 1434 }
1435 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) { 1435 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0) {
1436 return FALSE; 1436 return FALSE;
1437 } 1437 }
1438 return m_pStreamImp->SetLength(iLength); 1438 return m_pStreamImp->SetLength(iLength);
1439 } 1439 }
1440 int32_t CFX_Stream::GetBOM(uint8_t bom[4]) const { 1440 int32_t CFX_Stream::GetBOM(uint8_t bom[4]) const {
1441 if (m_pStreamImp == NULL) { 1441 if (!m_pStreamImp) {
1442 return -1; 1442 return -1;
1443 } 1443 }
1444 return 0; 1444 return 0;
1445 } 1445 }
1446 uint16_t CFX_Stream::GetCodePage() const { 1446 uint16_t CFX_Stream::GetCodePage() const {
1447 #if _FX_ENDIAN_ == _FX_LITTLE_ENDIAN_ 1447 #if _FX_ENDIAN_ == _FX_LITTLE_ENDIAN_
1448 return FX_CODEPAGE_UTF16LE; 1448 return FX_CODEPAGE_UTF16LE;
1449 #else 1449 #else
1450 return FX_CODEPAGE_UTF16BE; 1450 return FX_CODEPAGE_UTF16BE;
1451 #endif 1451 #endif
1452 } 1452 }
1453 uint16_t CFX_Stream::SetCodePage(uint16_t wCodePage) { 1453 uint16_t CFX_Stream::SetCodePage(uint16_t wCodePage) {
1454 #if _FX_ENDIAN_ == _FX_LITTLE_ENDIAN_ 1454 #if _FX_ENDIAN_ == _FX_LITTLE_ENDIAN_
1455 return FX_CODEPAGE_UTF16LE; 1455 return FX_CODEPAGE_UTF16LE;
1456 #else 1456 #else
1457 return FX_CODEPAGE_UTF16BE; 1457 return FX_CODEPAGE_UTF16BE;
1458 #endif 1458 #endif
1459 } 1459 }
1460 IFX_Stream* CFX_Stream::CreateSharedStream(uint32_t dwAccess, 1460 IFX_Stream* CFX_Stream::CreateSharedStream(uint32_t dwAccess,
1461 int32_t iOffset, 1461 int32_t iOffset,
1462 int32_t iLength) { 1462 int32_t iLength) {
1463 ASSERT(iLength > 0); 1463 ASSERT(iLength > 0);
1464 if (m_pStreamImp == NULL) { 1464 if (!m_pStreamImp) {
1465 return NULL; 1465 return nullptr;
1466 } 1466 }
1467 if ((m_dwAccess & FX_STREAMACCESS_Text) != 0 && 1467 if ((m_dwAccess & FX_STREAMACCESS_Text) != 0 &&
1468 (dwAccess & FX_STREAMACCESS_Text) == 0) { 1468 (dwAccess & FX_STREAMACCESS_Text) == 0) {
1469 return NULL; 1469 return nullptr;
1470 } 1470 }
1471 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0 && 1471 if ((m_dwAccess & FX_STREAMACCESS_Write) == 0 &&
1472 (dwAccess & FX_STREAMACCESS_Write) != 0) { 1472 (dwAccess & FX_STREAMACCESS_Write) != 0) {
1473 return NULL; 1473 return nullptr;
1474 } 1474 }
1475 int32_t iStart = m_iStart + iOffset; 1475 int32_t iStart = m_iStart + iOffset;
1476 int32_t iTotal = m_iStart + m_iLength; 1476 int32_t iTotal = m_iStart + m_iLength;
1477 if (iStart < m_iStart || iStart >= iTotal) { 1477 if (iStart < m_iStart || iStart >= iTotal) {
1478 return NULL; 1478 return nullptr;
1479 } 1479 }
1480 int32_t iEnd = iStart + iLength; 1480 int32_t iEnd = iStart + iLength;
1481 if (iEnd < iStart || iEnd > iTotal) { 1481 if (iEnd < iStart || iEnd > iTotal) {
1482 return NULL; 1482 return nullptr;
1483 } 1483 }
1484 CFX_Stream* pShared = new CFX_Stream; 1484 CFX_Stream* pShared = new CFX_Stream;
1485 pShared->m_eStreamType = FX_STREAMTYPE_Stream; 1485 pShared->m_eStreamType = FX_STREAMTYPE_Stream;
1486 pShared->m_pStreamImp = m_pStreamImp; 1486 pShared->m_pStreamImp = m_pStreamImp;
1487 pShared->m_dwAccess = dwAccess; 1487 pShared->m_dwAccess = dwAccess;
1488 pShared->m_iTotalSize = iLength; 1488 pShared->m_iTotalSize = iLength;
1489 pShared->m_iPosition = iStart; 1489 pShared->m_iPosition = iStart;
1490 pShared->m_iStart = iStart; 1490 pShared->m_iStart = iStart;
1491 pShared->m_iLength = (dwAccess & FX_STREAMACCESS_Write) != 0 ? 0 : iLength; 1491 pShared->m_iLength = (dwAccess & FX_STREAMACCESS_Write) != 0 ? 0 : iLength;
1492 if (dwAccess & FX_STREAMACCESS_Text) { 1492 if (dwAccess & FX_STREAMACCESS_Text) {
1493 return IFX_Stream::CreateTextStream(pShared, TRUE); 1493 return IFX_Stream::CreateTextStream(pShared, TRUE);
1494 } 1494 }
1495 return pShared; 1495 return pShared;
1496 } 1496 }
1497 IFX_FileRead* FX_CreateFileRead(IFX_Stream* pBaseStream, 1497 IFX_FileRead* FX_CreateFileRead(IFX_Stream* pBaseStream,
1498 FX_BOOL bReleaseStream) { 1498 FX_BOOL bReleaseStream) {
1499 ASSERT(pBaseStream != NULL); 1499 ASSERT(pBaseStream);
1500 return new CFGAS_FileRead(pBaseStream, bReleaseStream); 1500 return new CFGAS_FileRead(pBaseStream, bReleaseStream);
1501 } 1501 }
1502 CFGAS_FileRead::CFGAS_FileRead(IFX_Stream* pStream, FX_BOOL bReleaseStream) 1502 CFGAS_FileRead::CFGAS_FileRead(IFX_Stream* pStream, FX_BOOL bReleaseStream)
1503 : m_bReleaseStream(bReleaseStream), m_pStream(pStream) { 1503 : m_bReleaseStream(bReleaseStream), m_pStream(pStream) {
1504 ASSERT(m_pStream != NULL); 1504 ASSERT(m_pStream);
1505 } 1505 }
1506 CFGAS_FileRead::~CFGAS_FileRead() { 1506 CFGAS_FileRead::~CFGAS_FileRead() {
1507 if (m_bReleaseStream) { 1507 if (m_bReleaseStream) {
1508 m_pStream->Release(); 1508 m_pStream->Release();
1509 } 1509 }
1510 } 1510 }
1511 FX_FILESIZE CFGAS_FileRead::GetSize() { 1511 FX_FILESIZE CFGAS_FileRead::GetSize() {
1512 return (FX_FILESIZE)m_pStream->GetLength(); 1512 return (FX_FILESIZE)m_pStream->GetLength();
1513 } 1513 }
1514 FX_BOOL CFGAS_FileRead::ReadBlock(void* buffer, 1514 FX_BOOL CFGAS_FileRead::ReadBlock(void* buffer,
1515 FX_FILESIZE offset, 1515 FX_FILESIZE offset,
1516 size_t size) { 1516 size_t size) {
1517 m_pStream->Seek(FX_STREAMSEEK_Begin, (int32_t)offset); 1517 m_pStream->Seek(FX_STREAMSEEK_Begin, (int32_t)offset);
1518 int32_t iLen = m_pStream->ReadData((uint8_t*)buffer, (int32_t)size); 1518 int32_t iLen = m_pStream->ReadData((uint8_t*)buffer, (int32_t)size);
1519 return iLen == (int32_t)size; 1519 return iLen == (int32_t)size;
1520 } 1520 }
1521 1521
1522 void CFGAS_FileRead::Release() { 1522 void CFGAS_FileRead::Release() {
1523 delete this; 1523 delete this;
1524 } 1524 }
OLDNEW
« no previous file with comments | « xfa/fgas/crt/fgas_stream.h ('k') | xfa/fgas/crt/fgas_system.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698