summaryrefslogtreecommitdiff
path: root/core/src/fxcrt/extension.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/fxcrt/extension.h')
-rw-r--r--core/src/fxcrt/extension.h114
1 files changed, 11 insertions, 103 deletions
diff --git a/core/src/fxcrt/extension.h b/core/src/fxcrt/extension.h
index 6005edb2af..1750c5aae9 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;