Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1498)

Unified Diff: core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp

Issue 1908153002: Replace CFX_ArrayTemplate with std::vector in CPDF_ObjectStream (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « core/fpdfapi/fpdf_edit/editint.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
index 438c777c0ad818a9b778b434b20c3e324eefa902..3b5012fdec0362522302f2ebc9908fcf30d002a8 100644
--- a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
+++ b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
@@ -516,45 +516,41 @@ CPDF_Encryptor::~CPDF_Encryptor() {
} // namespace
CPDF_ObjectStream::CPDF_ObjectStream() : m_dwObjNum(0), m_index(0) {}
-FX_BOOL CPDF_ObjectStream::Start() {
- m_ObjNumArray.RemoveAll();
- m_OffsetArray.RemoveAll();
+
+void CPDF_ObjectStream::Start() {
+ m_Items.clear();
m_Buffer.Clear();
m_dwObjNum = 0;
m_index = 0;
- return TRUE;
}
-int32_t CPDF_ObjectStream::CompressIndirectObject(uint32_t dwObjNum,
- const CPDF_Object* pObj) {
- m_ObjNumArray.Add(dwObjNum);
- m_OffsetArray.Add(m_Buffer.GetLength());
+
+void CPDF_ObjectStream::CompressIndirectObject(uint32_t dwObjNum,
+ const CPDF_Object* pObj) {
+ m_Items.push_back({dwObjNum, m_Buffer.GetLength()});
m_Buffer << pObj;
- return 1;
}
-int32_t CPDF_ObjectStream::CompressIndirectObject(uint32_t dwObjNum,
- const uint8_t* pBuffer,
- uint32_t dwSize) {
- m_ObjNumArray.Add(dwObjNum);
- m_OffsetArray.Add(m_Buffer.GetLength());
+
+void CPDF_ObjectStream::CompressIndirectObject(uint32_t dwObjNum,
+ const uint8_t* pBuffer,
+ uint32_t dwSize) {
+ m_Items.push_back({dwObjNum, m_Buffer.GetLength()});
m_Buffer.AppendBlock(pBuffer, dwSize);
- return 1;
}
+
FX_FILESIZE CPDF_ObjectStream::End(CPDF_Creator* pCreator) {
FXSYS_assert(pCreator);
- if (m_ObjNumArray.GetSize() == 0) {
+ if (m_Items.empty())
return 0;
- }
+
CFX_FileBufferArchive* pFile = &pCreator->m_File;
FX_FILESIZE ObjOffset = pCreator->m_Offset;
if (!m_dwObjNum) {
m_dwObjNum = ++pCreator->m_dwLastObjNum;
}
CFX_ByteTextBuf tempBuffer;
- int32_t iCount = m_ObjNumArray.GetSize();
- for (int32_t i = 0; i < iCount; i++) {
- tempBuffer << m_ObjNumArray.ElementAt(i) << " "
- << m_OffsetArray.ElementAt(i) << " ";
- }
+ for (const auto& pair : m_Items)
+ tempBuffer << pair.objnum << " " << pair.offset << " ";
+
FX_FILESIZE& offset = pCreator->m_Offset;
int32_t len = pFile->AppendDWord(m_dwObjNum);
if (len < 0) {
@@ -565,7 +561,8 @@ FX_FILESIZE CPDF_ObjectStream::End(CPDF_Creator* pCreator) {
return -1;
}
offset += len;
- if ((len = pFile->AppendDWord((uint32_t)iCount)) < 0) {
+ uint32_t iCount = pdfium::CollectionSize<uint32_t>(m_Items);
+ if ((len = pFile->AppendDWord(iCount)) < 0) {
return -1;
}
offset += len;
@@ -638,11 +635,12 @@ FX_BOOL CPDF_XRefStream::Start() {
int32_t CPDF_XRefStream::CompressIndirectObject(uint32_t dwObjNum,
const CPDF_Object* pObj,
CPDF_Creator* pCreator) {
- if (!pCreator) {
+ if (!pCreator)
return 0;
- }
+
m_ObjStream.CompressIndirectObject(dwObjNum, pObj);
- if (m_ObjStream.m_ObjNumArray.GetSize() < pCreator->m_ObjectStreamSize &&
+ if (pdfium::CollectionSize<int32_t>(m_ObjStream.m_Items) <
+ pCreator->m_ObjectStreamSize &&
m_ObjStream.m_Buffer.GetLength() < PDF_OBJECTSTREAM_MAXLENGTH) {
return 1;
}
@@ -652,11 +650,12 @@ int32_t CPDF_XRefStream::CompressIndirectObject(uint32_t dwObjNum,
const uint8_t* pBuffer,
uint32_t dwSize,
CPDF_Creator* pCreator) {
- if (!pCreator) {
+ if (!pCreator)
return 0;
- }
+
m_ObjStream.CompressIndirectObject(dwObjNum, pBuffer, dwSize);
- if (m_ObjStream.m_ObjNumArray.GetSize() < pCreator->m_ObjectStreamSize &&
+ if (pdfium::CollectionSize<int32_t>(m_ObjStream.m_Items) <
+ pCreator->m_ObjectStreamSize &&
m_ObjStream.m_Buffer.GetLength() < PDF_OBJECTSTREAM_MAXLENGTH) {
return 1;
}
@@ -675,7 +674,7 @@ int32_t CPDF_XRefStream::EndObjectStream(CPDF_Creator* pCreator, FX_BOOL bEOF) {
if (!dwObjStmNum) {
dwObjStmNum = ++pCreator->m_dwLastObjNum;
}
- int32_t iSize = m_ObjStream.m_ObjNumArray.GetSize();
+ int32_t iSize = pdfium::CollectionSize<int32_t>(m_ObjStream.m_Items);
size_t iSeg = m_IndexArray.size();
if (!(pCreator->m_dwFlags & FPDFCREATE_INCREMENTAL)) {
if (m_dwTempObjNum == 0) {
@@ -688,7 +687,7 @@ int32_t CPDF_XRefStream::EndObjectStream(CPDF_Creator* pCreator, FX_BOOL bEOF) {
FX_FILESIZE* offset = pCreator->m_ObjectOffset.GetPtrAt(m_dwTempObjNum);
if (offset) {
if (index >= iSize ||
- m_dwTempObjNum != m_ObjStream.m_ObjNumArray[index]) {
+ m_dwTempObjNum != m_ObjStream.m_Items[index].objnum) {
AppendIndex1(m_Buffer, *offset);
} else {
AppendIndex2(m_Buffer, dwObjStmNum, index++);
@@ -711,7 +710,7 @@ int32_t CPDF_XRefStream::EndObjectStream(CPDF_Creator* pCreator, FX_BOOL bEOF) {
++it) {
for (uint32_t m = it->objnum; m < it->objnum + it->count; ++m) {
if (m_ObjStream.m_index >= iSize ||
- m != m_ObjStream.m_ObjNumArray.ElementAt(it - m_IndexArray.begin())) {
+ m != m_ObjStream.m_Items[it - m_IndexArray.begin()].objnum) {
AppendIndex1(m_Buffer, pCreator->m_ObjectOffset[m]);
} else {
AppendIndex2(m_Buffer, dwObjStmNum, m_ObjStream.m_index++);
« no previous file with comments | « core/fpdfapi/fpdf_edit/editint.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698