summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/fxcrt/fx_extension.cpp64
1 files changed, 30 insertions, 34 deletions
diff --git a/core/fxcrt/fx_extension.cpp b/core/fxcrt/fx_extension.cpp
index 28c46c93f6..3fd3a0d500 100644
--- a/core/fxcrt/fx_extension.cpp
+++ b/core/fxcrt/fx_extension.cpp
@@ -9,9 +9,11 @@
#include <algorithm>
#include <memory>
#include <utility>
+#include <vector>
#include "core/fxcrt/fx_basic.h"
#include "core/fxcrt/fx_ext.h"
+#include "third_party/base/stl_util.h"
#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
#include <wincrypt.h>
@@ -151,7 +153,7 @@ class CFX_MemoryStream final : public IFX_MemoryStream {
bool ExpandBlocks(size_t size);
- CFX_ArrayTemplate<uint8_t*> m_Blocks;
+ std::vector<uint8_t*> m_Blocks;
size_t m_nTotalSize;
size_t m_nCurSize;
size_t m_nCurPos;
@@ -175,18 +177,16 @@ CFX_MemoryStream::CFX_MemoryStream(uint8_t* pBuffer,
m_nCurSize(nSize),
m_nCurPos(0),
m_nGrowSize(FX_MEMSTREAM_BlockSize) {
- m_Blocks.Add(pBuffer);
+ m_Blocks.push_back(pBuffer);
m_dwFlags =
FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0);
}
CFX_MemoryStream::~CFX_MemoryStream() {
if (m_dwFlags & FX_MEMSTREAM_TakeOver) {
- for (int32_t i = 0; i < m_Blocks.GetSize(); i++) {
- FX_Free(m_Blocks[i]);
- }
+ for (uint8_t* pBlock : m_Blocks)
+ FX_Free(pBlock);
}
- m_Blocks.RemoveAll();
}
FX_FILESIZE CFX_MemoryStream::GetSize() {
@@ -261,16 +261,11 @@ bool CFX_MemoryStream::WriteBlock(const void* buffer,
m_nCurPos = newPos.ValueOrDie();
if (m_nCurPos > m_nTotalSize) {
m_nTotalSize = (m_nCurPos + m_nGrowSize - 1) / m_nGrowSize * m_nGrowSize;
- if (m_Blocks.GetSize() < 1) {
- uint8_t* block = FX_Alloc(uint8_t, m_nTotalSize);
- m_Blocks.Add(block);
+ if (m_Blocks.empty()) {
+ m_Blocks.push_back(FX_Alloc(uint8_t, m_nTotalSize));
} else {
m_Blocks[0] = FX_Realloc(uint8_t, m_Blocks[0], m_nTotalSize);
}
- if (!m_Blocks[0]) {
- m_Blocks.RemoveAll();
- return false;
- }
}
FXSYS_memcpy(m_Blocks[0] + (size_t)offset, buffer, size);
if (m_nCurSize < m_nCurPos) {
@@ -315,19 +310,18 @@ bool CFX_MemoryStream::IsConsecutive() const {
void CFX_MemoryStream::EstimateSize(size_t nInitSize, size_t nGrowSize) {
if (m_dwFlags & FX_MEMSTREAM_Consecutive) {
- if (m_Blocks.GetSize() < 1) {
- uint8_t* pBlock =
- FX_Alloc(uint8_t, std::max(nInitSize, static_cast<size_t>(4096)));
- m_Blocks.Add(pBlock);
+ if (m_Blocks.empty()) {
+ m_Blocks.push_back(
+ FX_Alloc(uint8_t, std::max(nInitSize, static_cast<size_t>(4096))));
}
m_nGrowSize = std::max(nGrowSize, static_cast<size_t>(4096));
- } else if (m_Blocks.GetSize() < 1) {
+ } else if (m_Blocks.empty()) {
m_nGrowSize = std::max(nGrowSize, static_cast<size_t>(4096));
}
}
uint8_t* CFX_MemoryStream::GetBuffer() const {
- return m_Blocks.GetSize() ? m_Blocks[0] : nullptr;
+ return !m_Blocks.empty() ? m_Blocks.front() : nullptr;
}
void CFX_MemoryStream::AttachBuffer(uint8_t* pBuffer,
@@ -336,36 +330,38 @@ void CFX_MemoryStream::AttachBuffer(uint8_t* pBuffer,
if (!(m_dwFlags & FX_MEMSTREAM_Consecutive))
return;
- m_Blocks.RemoveAll();
- m_Blocks.Add(pBuffer);
- m_nTotalSize = m_nCurSize = nSize;
+ m_Blocks.clear();
+ m_Blocks.push_back(pBuffer);
+ m_nTotalSize = nSize;
+ m_nCurSize = nSize;
m_nCurPos = 0;
m_dwFlags =
FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0);
}
void CFX_MemoryStream::DetachBuffer() {
- if (!(m_dwFlags & FX_MEMSTREAM_Consecutive)) {
+ if (!(m_dwFlags & FX_MEMSTREAM_Consecutive))
return;
- }
- m_Blocks.RemoveAll();
- m_nTotalSize = m_nCurSize = m_nCurPos = 0;
+
+ m_Blocks.clear();
+ m_nTotalSize = 0;
+ m_nCurSize = 0;
+ m_nCurPos = 0;
m_dwFlags = FX_MEMSTREAM_TakeOver;
}
bool CFX_MemoryStream::ExpandBlocks(size_t size) {
- if (m_nCurSize < size) {
+ if (m_nCurSize < size)
m_nCurSize = size;
- }
- if (size <= m_nTotalSize) {
+
+ if (size <= m_nTotalSize)
return true;
- }
- int32_t iCount = m_Blocks.GetSize();
+
size = (size - m_nTotalSize + m_nGrowSize - 1) / m_nGrowSize;
- m_Blocks.SetSize(m_Blocks.GetSize() + (int32_t)size);
+ size_t iCount = m_Blocks.size();
+ m_Blocks.resize(iCount + size);
while (size--) {
- uint8_t* pBlock = FX_Alloc(uint8_t, m_nGrowSize);
- m_Blocks.SetAt(iCount++, pBlock);
+ m_Blocks[iCount++] = FX_Alloc(uint8_t, m_nGrowSize);
m_nTotalSize += m_nGrowSize;
}
return true;