summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortsepez <tsepez@chromium.org>2016-12-08 12:28:04 -0800
committerCommit bot <commit-bot@chromium.org>2016-12-08 12:28:04 -0800
commit80c40de632cc089979dfd5bea351f58aa20930ce (patch)
tree0502dbb6c291721f7dbf38026b545d246758b773
parent51709bea3ce113df7d36a5fe6415036e26fc3236 (diff)
downloadpdfium-80c40de632cc089979dfd5bea351f58aa20930ce.tar.xz
Remove last usage of CFX_ObjectArray.
Review-Url: https://codereview.chromium.org/2558373002
-rw-r--r--core/fpdfapi/parser/cpdf_stream_acc.h3
-rw-r--r--core/fxcrt/fx_basic.h102
-rw-r--r--xfa/fxfa/app/xfa_ffapp.cpp34
3 files changed, 19 insertions, 120 deletions
diff --git a/core/fpdfapi/parser/cpdf_stream_acc.h b/core/fpdfapi/parser/cpdf_stream_acc.h
index 24ae5d2ed8..51a8a18332 100644
--- a/core/fpdfapi/parser/cpdf_stream_acc.h
+++ b/core/fpdfapi/parser/cpdf_stream_acc.h
@@ -19,6 +19,9 @@ class CPDF_StreamAcc {
CPDF_StreamAcc();
~CPDF_StreamAcc();
+ CPDF_StreamAcc(const CPDF_StreamAcc&) = delete;
+ CPDF_StreamAcc& operator=(const CPDF_StreamAcc&) = delete;
+
void LoadAllData(const CPDF_Stream* pStream,
bool bRawAccess = false,
uint32_t estimated_size = 0,
diff --git a/core/fxcrt/fx_basic.h b/core/fxcrt/fx_basic.h
index 2b8f6b6afe..30673f6525 100644
--- a/core/fxcrt/fx_basic.h
+++ b/core/fxcrt/fx_basic.h
@@ -321,108 +321,6 @@ typedef CFX_ArrayTemplate<CFX_WideStringC> CFX_WideStringCArray;
typedef CFX_ArrayTemplate<FX_FLOAT> CFX_FloatArray;
typedef CFX_ArrayTemplate<uint8_t> CFX_ByteArray;
typedef CFX_ArrayTemplate<int32_t> CFX_Int32Array;
-
-template <class ObjectClass>
-class CFX_ObjectArray : public CFX_BasicArray {
- public:
- CFX_ObjectArray() : CFX_BasicArray(sizeof(ObjectClass)) {}
-
- ~CFX_ObjectArray() { RemoveAll(); }
-
- void Add(const ObjectClass& data) {
- new ((void*)InsertSpaceAt(m_nSize, 1)) ObjectClass(data);
- }
-
- ObjectClass& Add() {
- return *(ObjectClass*)new ((void*)InsertSpaceAt(m_nSize, 1)) ObjectClass();
- }
-
- void* AddSpace() { return InsertSpaceAt(m_nSize, 1); }
-
- int32_t Append(const CFX_ObjectArray& src,
- int32_t nStart = 0,
- int32_t nCount = -1) {
- if (nCount == 0) {
- return 0;
- }
- int32_t nSize = src.GetSize();
- if (!nSize) {
- return 0;
- }
- ASSERT(nStart > -1 && nStart < nSize);
- if (nCount < 0) {
- nCount = nSize;
- }
- if (nStart + nCount > nSize) {
- nCount = nSize - nStart;
- }
- if (nCount < 1) {
- return 0;
- }
- nSize = m_nSize;
- InsertSpaceAt(m_nSize, nCount);
- ObjectClass* pStartObj = (ObjectClass*)GetDataPtr(nSize);
- nSize = nStart + nCount;
- for (int32_t i = nStart; i < nSize; i++, pStartObj++) {
- new ((void*)pStartObj) ObjectClass(src[i]);
- }
- return nCount;
- }
-
- int32_t Copy(const CFX_ObjectArray& src,
- int32_t nStart = 0,
- int32_t nCount = -1) {
- if (nCount == 0) {
- return 0;
- }
- int32_t nSize = src.GetSize();
- if (!nSize) {
- return 0;
- }
- ASSERT(nStart > -1 && nStart < nSize);
- if (nCount < 0) {
- nCount = nSize;
- }
- if (nStart + nCount > nSize) {
- nCount = nSize - nStart;
- }
- if (nCount < 1) {
- return 0;
- }
- RemoveAll();
- SetSize(nCount);
- ObjectClass* pStartObj = (ObjectClass*)m_pData;
- nSize = nStart + nCount;
- for (int32_t i = nStart; i < nSize; i++, pStartObj++) {
- new ((void*)pStartObj) ObjectClass(src[i]);
- }
- return nCount;
- }
-
- int GetSize() const { return m_nSize; }
-
- ObjectClass& operator[](int index) const {
- ASSERT(index < m_nSize);
- return *(ObjectClass*)CFX_BasicArray::GetDataPtr(index);
- }
-
- ObjectClass* GetDataPtr(int index) {
- return (ObjectClass*)CFX_BasicArray::GetDataPtr(index);
- }
-
- void RemoveAt(int index) {
- ASSERT(index < m_nSize);
- ((ObjectClass*)GetDataPtr(index))->~ObjectClass();
- CFX_BasicArray::RemoveAt(index, 1);
- }
-
- void RemoveAll() {
- for (int i = 0; i < m_nSize; i++) {
- ((ObjectClass*)GetDataPtr(i))->~ObjectClass();
- }
- CFX_BasicArray::SetSize(0);
- }
-};
#endif // PDF_ENABLE_XFA
template <class DataType, int FixedSize>
diff --git a/xfa/fxfa/app/xfa_ffapp.cpp b/xfa/fxfa/app/xfa_ffapp.cpp
index 4de5f70a6d..c264e03ec8 100644
--- a/xfa/fxfa/app/xfa_ffapp.cpp
+++ b/xfa/fxfa/app/xfa_ffapp.cpp
@@ -11,6 +11,7 @@
#include <utility>
#include <vector>
+#include "third_party/base/stl_util.h"
#include "xfa/fgas/font/cfgas_fontmgr.h"
#include "xfa/fwl/cfwl_notedriver.h"
#include "xfa/fwl/cfwl_widgetmgr.h"
@@ -33,13 +34,13 @@ class CXFA_FileRead : public IFX_SeekableReadStream {
bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override;
private:
- CFX_ObjectArray<CPDF_StreamAcc> m_Data;
+ std::vector<std::unique_ptr<CPDF_StreamAcc>> m_Data;
};
CXFA_FileRead::CXFA_FileRead(const std::vector<CPDF_Stream*>& streams) {
for (CPDF_Stream* pStream : streams) {
- CPDF_StreamAcc& acc = m_Data.Add();
- acc.LoadAllData(pStream);
+ m_Data.push_back(pdfium::MakeUnique<CPDF_StreamAcc>());
+ m_Data.back()->LoadAllData(pStream);
}
}
@@ -47,35 +48,32 @@ CXFA_FileRead::~CXFA_FileRead() {}
FX_FILESIZE CXFA_FileRead::GetSize() {
uint32_t dwSize = 0;
- int32_t iCount = m_Data.GetSize();
- for (int32_t i = 0; i < iCount; i++) {
- CPDF_StreamAcc& acc = m_Data[i];
- dwSize += acc.GetSize();
- }
+ for (const auto& acc : m_Data)
+ dwSize += acc->GetSize();
return dwSize;
}
bool CXFA_FileRead::ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) {
- int32_t iCount = m_Data.GetSize();
+ int32_t iCount = pdfium::CollectionSize<int32_t>(m_Data);
int32_t index = 0;
while (index < iCount) {
- CPDF_StreamAcc& acc = m_Data[index];
- FX_FILESIZE dwSize = acc.GetSize();
- if (offset < dwSize) {
+ const auto& acc = m_Data[index];
+ FX_FILESIZE dwSize = acc->GetSize();
+ if (offset < dwSize)
break;
- }
+
offset -= dwSize;
index++;
}
while (index < iCount) {
- CPDF_StreamAcc& acc = m_Data[index];
- uint32_t dwSize = acc.GetSize();
+ const auto& acc = m_Data[index];
+ uint32_t dwSize = acc->GetSize();
size_t dwRead = std::min(size, static_cast<size_t>(dwSize - offset));
- FXSYS_memcpy(buffer, acc.GetData() + offset, dwRead);
+ FXSYS_memcpy(buffer, acc->GetData() + offset, dwRead);
size -= dwRead;
- if (size == 0) {
+ if (size == 0)
return true;
- }
+
buffer = (uint8_t*)buffer + dwRead;
offset = 0;
index++;