Index: core/src/fxcrt/extension.h |
diff --git a/core/src/fxcrt/extension.h b/core/src/fxcrt/extension.h |
index 6005edb2af73eb6a89a2c77088e96229eae69c9e..1750c5aae94f9be0b5ff3449fe89d7da25a1c075 100644 |
--- a/core/src/fxcrt/extension.h |
+++ b/core/src/fxcrt/extension.h |
@@ -34,10 +34,8 @@ class CFX_CRTFileStream final : public IFX_FileStream { |
public: |
CFX_CRTFileStream(IFXCRT_FileAccess* pFA) |
: m_pFile(pFA), |
- m_dwCount(1), |
- m_bUseRange(FALSE), |
- m_nOffset(0), |
- m_nSize(0) {} |
+ m_dwCount(1) { |
+ } |
~CFX_CRTFileStream() { |
if (m_pFile) { |
m_pFile->Release(); |
@@ -54,73 +52,30 @@ class CFX_CRTFileStream final : public IFX_FileStream { |
} |
} |
virtual FX_FILESIZE GetSize() override { |
- return m_bUseRange ? m_nSize : m_pFile->GetSize(); |
+ return m_pFile->GetSize(); |
} |
virtual FX_BOOL IsEOF() override { return GetPosition() >= GetSize(); } |
virtual FX_FILESIZE GetPosition() override { |
- FX_FILESIZE pos = m_pFile->GetPosition(); |
- if (m_bUseRange) { |
- pos -= m_nOffset; |
- } |
- return pos; |
- } |
- virtual FX_BOOL SetRange(FX_FILESIZE offset, FX_FILESIZE size) override { |
- if (offset < 0 || size < 0) { |
- return FALSE; |
- } |
- |
- FX_SAFE_FILESIZE pos = size; |
- pos += offset; |
- |
- if (!pos.IsValid() || pos.ValueOrDie() > m_pFile->GetSize()) { |
- return FALSE; |
- } |
- |
- m_nOffset = offset, m_nSize = size; |
- m_bUseRange = TRUE; |
- m_pFile->SetPosition(m_nOffset); |
- return TRUE; |
+ return m_pFile->GetPosition(); |
} |
- virtual void ClearRange() override { m_bUseRange = FALSE; } |
virtual FX_BOOL ReadBlock(void* buffer, |
FX_FILESIZE offset, |
size_t size) override { |
- if (m_bUseRange && offset < 0) { |
- return FALSE; |
- } |
- FX_SAFE_FILESIZE pos = offset; |
- |
- if (m_bUseRange) { |
- pos += m_nOffset; |
- if (!pos.IsValid() || pos.ValueOrDie() > (size_t)GetSize()) { |
- return FALSE; |
- } |
- } |
- return (FX_BOOL)m_pFile->ReadPos(buffer, size, pos.ValueOrDie()); |
+ return (FX_BOOL)m_pFile->ReadPos(buffer, size, offset); |
} |
virtual size_t ReadBlock(void* buffer, size_t size) override { |
- if (m_bUseRange) { |
- FX_FILESIZE availSize = m_nOffset + m_nSize - m_pFile->GetPosition(); |
- if ((size_t)availSize < size) { |
- size -= size - (size_t)availSize; |
- } |
- } |
return m_pFile->Read(buffer, size); |
} |
virtual FX_BOOL WriteBlock(const void* buffer, |
FX_FILESIZE offset, |
size_t size) override { |
- if (m_bUseRange) { |
- offset += m_nOffset; |
- } |
return (FX_BOOL)m_pFile->WritePos(buffer, size, offset); |
} |
virtual FX_BOOL Flush() override { return m_pFile->Flush(); } |
+ |
+ protected: |
IFXCRT_FileAccess* m_pFile; |
FX_DWORD m_dwCount; |
- FX_BOOL m_bUseRange; |
- FX_FILESIZE m_nOffset; |
- FX_FILESIZE m_nSize; |
}; |
#define FX_MEMSTREAM_BlockSize (64 * 1024) |
#define FX_MEMSTREAM_Consecutive 0x01 |
@@ -132,8 +87,7 @@ class CFX_MemoryStream final : public IFX_MemoryStream { |
m_nTotalSize(0), |
m_nCurSize(0), |
m_nCurPos(0), |
- m_nGrowSize(FX_MEMSTREAM_BlockSize), |
- m_bUseRange(FALSE) { |
+ m_nGrowSize(FX_MEMSTREAM_BlockSize) { |
m_dwFlags = |
FX_MEMSTREAM_TakeOver | (bConsecutive ? FX_MEMSTREAM_Consecutive : 0); |
} |
@@ -142,8 +96,7 @@ class CFX_MemoryStream final : public IFX_MemoryStream { |
m_nTotalSize(nSize), |
m_nCurSize(nSize), |
m_nCurPos(0), |
- m_nGrowSize(FX_MEMSTREAM_BlockSize), |
- m_bUseRange(FALSE) { |
+ m_nGrowSize(FX_MEMSTREAM_BlockSize) { |
m_Blocks.Add(pBuffer); |
m_dwFlags = |
FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0); |
@@ -168,32 +121,12 @@ class CFX_MemoryStream final : public IFX_MemoryStream { |
delete this; |
} |
virtual FX_FILESIZE GetSize() override { |
- return m_bUseRange ? (FX_FILESIZE)m_nSize : (FX_FILESIZE)m_nCurSize; |
+ return (FX_FILESIZE)m_nCurSize; |
} |
virtual FX_BOOL IsEOF() override { return m_nCurPos >= (size_t)GetSize(); } |
virtual FX_FILESIZE GetPosition() override { |
- FX_FILESIZE pos = (FX_FILESIZE)m_nCurPos; |
- if (m_bUseRange) { |
- pos -= (FX_FILESIZE)m_nOffset; |
- } |
- return pos; |
- } |
- virtual FX_BOOL SetRange(FX_FILESIZE offset, FX_FILESIZE size) override { |
- if (offset < 0 || size < 0) { |
- return FALSE; |
- } |
- FX_SAFE_FILESIZE range = size; |
- range += offset; |
- if (!range.IsValid() || range.ValueOrDie() > m_nCurSize) { |
- return FALSE; |
- } |
- |
- m_nOffset = (size_t)offset, m_nSize = (size_t)size; |
- m_bUseRange = TRUE; |
- m_nCurPos = m_nOffset; |
- return TRUE; |
+ return (FX_FILESIZE)m_nCurPos; |
} |
- virtual void ClearRange() override { m_bUseRange = FALSE; } |
virtual FX_BOOL ReadBlock(void* buffer, |
FX_FILESIZE offset, |
size_t size) override { |
@@ -201,17 +134,6 @@ class CFX_MemoryStream final : public IFX_MemoryStream { |
return FALSE; |
} |
- FX_SAFE_FILESIZE safeOffset = offset; |
- if (m_bUseRange) { |
- safeOffset += m_nOffset; |
- } |
- |
- if (!safeOffset.IsValid()) { |
- return FALSE; |
- } |
- |
- offset = safeOffset.ValueOrDie(); |
- |
FX_SAFE_SIZE_T newPos = size; |
newPos += offset; |
if (!newPos.IsValid() || newPos.ValueOrDefault(0) == 0 || |
@@ -244,12 +166,6 @@ class CFX_MemoryStream final : public IFX_MemoryStream { |
if (m_nCurPos >= m_nCurSize) { |
return 0; |
} |
- if (m_bUseRange) { |
- size_t availSize = m_nOffset + m_nSize - m_nCurPos; |
- if (availSize < size) { |
- size -= size - (size_t)availSize; |
- } |
- } |
size_t nRead = FX_MIN(size, m_nCurSize - m_nCurPos); |
if (!ReadBlock(buffer, (int32_t)m_nCurPos, nRead)) { |
return 0; |
@@ -262,9 +178,6 @@ class CFX_MemoryStream final : public IFX_MemoryStream { |
if (!buffer || !size) { |
return FALSE; |
} |
- if (m_bUseRange) { |
- offset += (FX_FILESIZE)m_nOffset; |
- } |
if (m_dwFlags & FX_MEMSTREAM_Consecutive) { |
FX_SAFE_SIZE_T newPos = size; |
newPos += offset; |
@@ -349,7 +262,6 @@ class CFX_MemoryStream final : public IFX_MemoryStream { |
m_nCurPos = 0; |
m_dwFlags = |
FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0); |
- ClearRange(); |
} |
virtual void DetachBuffer() override { |
if (!(m_dwFlags & FX_MEMSTREAM_Consecutive)) { |
@@ -358,7 +270,6 @@ class CFX_MemoryStream final : public IFX_MemoryStream { |
m_Blocks.RemoveAll(); |
m_nTotalSize = m_nCurSize = m_nCurPos = 0; |
m_dwFlags = FX_MEMSTREAM_TakeOver; |
- ClearRange(); |
} |
protected: |
@@ -369,9 +280,6 @@ class CFX_MemoryStream final : public IFX_MemoryStream { |
size_t m_nCurPos; |
size_t m_nGrowSize; |
FX_DWORD m_dwFlags; |
- FX_BOOL m_bUseRange; |
- size_t m_nOffset; |
- size_t m_nSize; |
FX_BOOL ExpandBlocks(size_t size) { |
if (m_nCurSize < size) { |
m_nCurSize = size; |