Index: core/fxcrt/fx_extension.cpp |
diff --git a/core/fxcrt/fx_extension.cpp b/core/fxcrt/fx_extension.cpp |
index 1bb9a3a5f6395b7f921ff61dc2aa9227fb63d9a5..cbbb86f26be6e62f33d72d9fa8f47a99943a79da 100644 |
--- a/core/fxcrt/fx_extension.cpp |
+++ b/core/fxcrt/fx_extension.cpp |
@@ -32,7 +32,7 @@ class CFX_CRTFileAccess : public IFX_FileAccess { |
void Release() override; |
IFX_FileAccess* Retain() override; |
void GetPath(CFX_WideString& wsPath) override; |
- IFX_SeekableStream* CreateFileStream(uint32_t dwModes) override; |
+ CFX_RetainPtr<IFX_SeekableStream> CreateFileStream(uint32_t dwModes) override; |
bool Init(const CFX_WideStringC& wsPath); |
@@ -59,7 +59,8 @@ void CFX_CRTFileAccess::GetPath(CFX_WideString& wsPath) { |
wsPath = m_path; |
} |
-IFX_SeekableStream* CFX_CRTFileAccess::CreateFileStream(uint32_t dwModes) { |
+CFX_RetainPtr<IFX_SeekableStream> CFX_CRTFileAccess::CreateFileStream( |
+ uint32_t dwModes) { |
return IFX_SeekableStream::CreateFromFilename(m_path.c_str(), dwModes); |
} |
@@ -77,8 +78,6 @@ class CFX_CRTFileStream final : public IFX_SeekableStream { |
~CFX_CRTFileStream() override; |
// IFX_SeekableStream: |
- IFX_SeekableStream* Retain() override; |
- void Release() override; |
FX_FILESIZE GetSize() override; |
bool IsEOF() override; |
FX_FILESIZE GetPosition() override; |
@@ -89,23 +88,12 @@ class CFX_CRTFileStream final : public IFX_SeekableStream { |
private: |
std::unique_ptr<IFXCRT_FileAccess> m_pFile; |
- uint32_t m_dwCount; |
}; |
CFX_CRTFileStream::CFX_CRTFileStream(std::unique_ptr<IFXCRT_FileAccess> pFA) |
- : m_pFile(std::move(pFA)), m_dwCount(1) {} |
+ : m_pFile(std::move(pFA)) {} |
CFX_CRTFileStream::~CFX_CRTFileStream() {} |
-IFX_SeekableStream* CFX_CRTFileStream::Retain() { |
- m_dwCount++; |
- return this; |
-} |
- |
-void CFX_CRTFileStream::Release() { |
- uint32_t nCount = --m_dwCount; |
- if (!nCount) |
- delete this; |
-} |
FX_FILESIZE CFX_CRTFileStream::GetSize() { |
return m_pFile->GetSize(); |
@@ -150,8 +138,6 @@ class CFX_MemoryStream final : public IFX_MemoryStream { |
~CFX_MemoryStream() override; |
// IFX_MemoryStream |
- IFX_SeekableStream* Retain() override; |
- void Release() override; |
FX_FILESIZE GetSize() override; |
bool IsEOF() override; |
FX_FILESIZE GetPosition() override; |
@@ -168,19 +154,18 @@ class CFX_MemoryStream final : public IFX_MemoryStream { |
void DetachBuffer() override; |
private: |
+ bool ExpandBlocks(size_t size); |
+ |
CFX_ArrayTemplate<uint8_t*> m_Blocks; |
- uint32_t m_dwCount; |
size_t m_nTotalSize; |
size_t m_nCurSize; |
size_t m_nCurPos; |
size_t m_nGrowSize; |
uint32_t m_dwFlags; |
- bool ExpandBlocks(size_t size); |
}; |
CFX_MemoryStream::CFX_MemoryStream(bool bConsecutive) |
- : m_dwCount(1), |
- m_nTotalSize(0), |
+ : m_nTotalSize(0), |
m_nCurSize(0), |
m_nCurPos(0), |
m_nGrowSize(FX_MEMSTREAM_BlockSize) { |
@@ -191,8 +176,7 @@ CFX_MemoryStream::CFX_MemoryStream(bool bConsecutive) |
CFX_MemoryStream::CFX_MemoryStream(uint8_t* pBuffer, |
size_t nSize, |
bool bTakeOver) |
- : m_dwCount(1), |
- m_nTotalSize(nSize), |
+ : m_nTotalSize(nSize), |
m_nCurSize(nSize), |
m_nCurPos(0), |
m_nGrowSize(FX_MEMSTREAM_BlockSize) { |
@@ -210,19 +194,6 @@ CFX_MemoryStream::~CFX_MemoryStream() { |
m_Blocks.RemoveAll(); |
} |
-IFX_SeekableStream* CFX_MemoryStream::Retain() { |
- m_dwCount++; |
- return this; |
-} |
- |
-void CFX_MemoryStream::Release() { |
- uint32_t nCount = --m_dwCount; |
- if (nCount) { |
- return; |
- } |
- delete this; |
-} |
- |
FX_FILESIZE CFX_MemoryStream::GetSize() { |
return (FX_FILESIZE)m_nCurSize; |
} |
@@ -419,41 +390,44 @@ IFX_FileAccess* IFX_FileAccess::CreateDefault(const CFX_WideStringC& wsPath) { |
#endif // PDF_ENABLE_XFA |
// static |
-IFX_SeekableStream* IFX_SeekableStream::CreateFromFilename( |
+CFX_RetainPtr<IFX_SeekableStream> IFX_SeekableStream::CreateFromFilename( |
const FX_CHAR* filename, |
uint32_t dwModes) { |
std::unique_ptr<IFXCRT_FileAccess> pFA(IFXCRT_FileAccess::Create()); |
if (!pFA->Open(filename, dwModes)) |
return nullptr; |
- return new CFX_CRTFileStream(std::move(pFA)); |
+ return CFX_RetainPtr<IFX_SeekableStream>( |
+ new CFX_CRTFileStream(std::move(pFA))); |
} |
// static |
-IFX_SeekableStream* IFX_SeekableStream::CreateFromFilename( |
+CFX_RetainPtr<IFX_SeekableStream> IFX_SeekableStream::CreateFromFilename( |
const FX_WCHAR* filename, |
uint32_t dwModes) { |
std::unique_ptr<IFXCRT_FileAccess> pFA(IFXCRT_FileAccess::Create()); |
if (!pFA->Open(filename, dwModes)) |
return nullptr; |
- return new CFX_CRTFileStream(std::move(pFA)); |
+ return CFX_RetainPtr<IFX_SeekableStream>( |
+ new CFX_CRTFileStream(std::move(pFA))); |
} |
// static |
-IFX_SeekableReadStream* IFX_SeekableReadStream::CreateFromFilename( |
- const FX_CHAR* filename) { |
+CFX_RetainPtr<IFX_SeekableReadStream> |
+IFX_SeekableReadStream::CreateFromFilename(const FX_CHAR* filename) { |
return IFX_SeekableStream::CreateFromFilename(filename, FX_FILEMODE_ReadOnly); |
} |
// static |
-IFX_MemoryStream* IFX_MemoryStream::Create(uint8_t* pBuffer, |
- size_t dwSize, |
- bool bTakeOver) { |
- return new CFX_MemoryStream(pBuffer, dwSize, bTakeOver); |
+CFX_RetainPtr<IFX_MemoryStream> IFX_MemoryStream::Create(uint8_t* pBuffer, |
+ size_t dwSize, |
+ bool bTakeOver) { |
+ return CFX_RetainPtr<IFX_MemoryStream>( |
+ new CFX_MemoryStream(pBuffer, dwSize, bTakeOver)); |
} |
// static |
-IFX_MemoryStream* IFX_MemoryStream::Create(bool bConsecutive) { |
- return new CFX_MemoryStream(bConsecutive); |
+CFX_RetainPtr<IFX_MemoryStream> IFX_MemoryStream::Create(bool bConsecutive) { |
+ return CFX_RetainPtr<IFX_MemoryStream>(new CFX_MemoryStream(bConsecutive)); |
} |
FX_FLOAT FXSYS_tan(FX_FLOAT a) { |