Index: core/src/fxcrt/fx_extension.cpp |
diff --git a/core/src/fxcrt/fx_extension.cpp b/core/src/fxcrt/fx_extension.cpp |
index 4669ac4be429eee3fd7b26a622ac9911c489dba0..8a6987b06627ad777e2be7ca84158d7f39b6e98c 100644 |
--- a/core/src/fxcrt/fx_extension.cpp |
+++ b/core/src/fxcrt/fx_extension.cpp |
@@ -14,6 +14,59 @@ |
#include <ctime> |
#endif |
+CFX_CRTFileStream::CFX_CRTFileStream(IFXCRT_FileAccess* pFA) |
+ : m_pFile(pFA), m_dwCount(1) {} |
+ |
+CFX_CRTFileStream::~CFX_CRTFileStream() { |
+ if (m_pFile) { |
+ m_pFile->Release(); |
+ } |
+} |
+ |
+IFX_FileStream* CFX_CRTFileStream::Retain() { |
+ m_dwCount++; |
+ return this; |
+} |
+ |
+void CFX_CRTFileStream::Release() { |
+ FX_DWORD nCount = --m_dwCount; |
+ if (!nCount) { |
+ delete this; |
+ } |
+} |
+ |
+FX_FILESIZE CFX_CRTFileStream::GetSize() { |
+ return m_pFile->GetSize(); |
+} |
+ |
+FX_BOOL CFX_CRTFileStream::IsEOF() { |
+ return GetPosition() >= GetSize(); |
+} |
+ |
+FX_FILESIZE CFX_CRTFileStream::GetPosition() { |
+ return m_pFile->GetPosition(); |
+} |
+ |
+FX_BOOL CFX_CRTFileStream::ReadBlock(void* buffer, |
+ FX_FILESIZE offset, |
+ size_t size) { |
+ return (FX_BOOL)m_pFile->ReadPos(buffer, size, offset); |
+} |
+ |
+size_t CFX_CRTFileStream::ReadBlock(void* buffer, size_t size) { |
+ return m_pFile->Read(buffer, size); |
+} |
+ |
+FX_BOOL CFX_CRTFileStream::WriteBlock(const void* buffer, |
+ FX_FILESIZE offset, |
+ size_t size) { |
+ return (FX_BOOL)m_pFile->WritePos(buffer, size, offset); |
+} |
+ |
+FX_BOOL CFX_CRTFileStream::Flush() { |
+ return m_pFile->Flush(); |
+} |
+ |
#ifdef PDF_ENABLE_XFA |
IFX_FileAccess* FX_CreateDefaultFileAccess(const CFX_WideStringC& wsPath) { |
if (wsPath.GetLength() == 0) |