From 80c40de632cc089979dfd5bea351f58aa20930ce Mon Sep 17 00:00:00 2001 From: tsepez Date: Thu, 8 Dec 2016 12:28:04 -0800 Subject: Remove last usage of CFX_ObjectArray. Review-Url: https://codereview.chromium.org/2558373002 --- core/fpdfapi/parser/cpdf_stream_acc.h | 3 + core/fxcrt/fx_basic.h | 102 ---------------------------------- xfa/fxfa/app/xfa_ffapp.cpp | 34 ++++++------ 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_WideStringCArray; typedef CFX_ArrayTemplate CFX_FloatArray; typedef CFX_ArrayTemplate CFX_ByteArray; typedef CFX_ArrayTemplate CFX_Int32Array; - -template -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 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 #include +#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 m_Data; + std::vector> m_Data; }; CXFA_FileRead::CXFA_FileRead(const std::vector& streams) { for (CPDF_Stream* pStream : streams) { - CPDF_StreamAcc& acc = m_Data.Add(); - acc.LoadAllData(pStream); + m_Data.push_back(pdfium::MakeUnique()); + 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(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(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++; -- cgit v1.2.3