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

Unified Diff: core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp

Issue 1194933003: Make CPDF_Object::GetString() a virtual method. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: rebase Created 5 years, 5 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
Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
index 3f9f4ccc8285e709ad79fc4b9a15826621f3efca..5a66d11c9198bd67cbdc7cf3ad0dbf4576fd3698 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
@@ -39,31 +39,12 @@ void CPDF_Object::Destroy()
delete this;
}
}
+
CFX_ByteString CPDF_Object::GetString() const
{
- switch (m_Type) {
- case PDFOBJ_BOOLEAN:
- return ((CPDF_Boolean*)this)->m_bValue ? "true" : "false";
- case PDFOBJ_NUMBER:
- return ((CPDF_Number*)this)->GetString();
- case PDFOBJ_STRING:
- return ((CPDF_String*)this)->m_String;
- case PDFOBJ_NAME:
- return ((CPDF_Name*)this)->m_Name;
- case PDFOBJ_REFERENCE: {
- CPDF_Reference* pRef = (CPDF_Reference*)(void*)this;
- if (pRef->m_pObjList == NULL) {
- break;
- }
- CPDF_Object* pObj = pRef->m_pObjList->GetIndirectObject(pRef->m_RefObjNum);
- if (pObj == NULL) {
- return CFX_ByteString();
- }
- return pObj->GetString();
- }
- }
return CFX_ByteString();
}
+
CFX_ByteStringC CPDF_Object::GetConstString() const
{
switch (m_Type) {
@@ -341,6 +322,11 @@ void CPDF_Object::SetUnicodeText(const FX_WCHAR* pUnicodes, int len)
}
}
+CFX_ByteString CPDF_Boolean::GetString() const
+{
+ return m_bValue ? "true" : "false";
+}
+
CPDF_Number::CPDF_Number(int value)
: CPDF_Object(PDFOBJ_NUMBER), m_bInteger(TRUE), m_Integer(value) {
}
@@ -377,6 +363,17 @@ void CPDF_Number::SetNumber(FX_FLOAT value)
CPDF_String::CPDF_String(const CFX_WideString& str) : CPDF_Object(PDFOBJ_STRING), m_bHex(FALSE) {
m_String = PDF_EncodeText(str);
}
+
+CFX_ByteString CPDF_String::GetString() const
+{
+ return m_String;
+}
+
+CFX_ByteString CPDF_Name::GetString() const
+{
+ return m_Name;
+}
+
CPDF_Array::~CPDF_Array()
{
int size = m_Objects.GetSize();
@@ -421,14 +418,13 @@ CPDF_Object* CPDF_Array::GetElementValue(FX_DWORD i) const
}
return ((CPDF_Object*)m_Objects.GetAt(i))->GetDirect();
Tom Sepez 2015/07/16 20:24:46 Given that m_Objects is of type CFX_PtrArray, and
}
-CFX_ByteString CPDF_Array::GetString(FX_DWORD i) const
+CFX_ByteString CPDF_Array::GetStringAt(FX_DWORD i) const
{
if (i < (FX_DWORD)m_Objects.GetSize()) {
CPDF_Object* p = (CPDF_Object*)m_Objects.GetAt(i);
Tom Sepez 2015/07/16 20:24:46 nit: I'd really like this block to be a one-liner,
return p->GetString();
}
- else
- return CFX_ByteString();
+ return CFX_ByteString();
}
CFX_ByteStringC CPDF_Array::GetConstString(FX_DWORD i) const
{
@@ -436,8 +432,7 @@ CFX_ByteStringC CPDF_Array::GetConstString(FX_DWORD i) const
CPDF_Object* p = (CPDF_Object*)m_Objects.GetAt(i);
return p->GetConstString();
}
- else
- return CFX_ByteStringC();
+ return CFX_ByteStringC();
}
int CPDF_Array::GetInteger(FX_DWORD i) const
{
@@ -566,6 +561,7 @@ FX_BOOL CPDF_Array::Identical(CPDF_Array* pOther) const
}
return TRUE;
}
+
CPDF_Dictionary::~CPDF_Dictionary()
{
FX_POSITION pos = m_Map.GetStartPosition();
@@ -600,7 +596,7 @@ CPDF_Object* CPDF_Dictionary::GetElementValue(const CFX_ByteStringC& key) const
m_Map.Lookup(key, (void*&)p);
return p ? p->GetDirect() : NULL;
}
-CFX_ByteString CPDF_Dictionary::GetString(const CFX_ByteStringC& key) const
+CFX_ByteString CPDF_Dictionary::GetStringAt(const CFX_ByteStringC& key) const
{
CPDF_Object* p = NULL;
m_Map.Lookup(key, (void*&)p);
@@ -634,7 +630,8 @@ CFX_WideString CPDF_Dictionary::GetUnicodeText(const CFX_ByteStringC& key, CFX_C
}
return CFX_WideString();
}
-CFX_ByteString CPDF_Dictionary::GetString(const CFX_ByteStringC& key, const CFX_ByteStringC& def) const
+CFX_ByteString CPDF_Dictionary::GetStringAt(const CFX_ByteStringC& key,
+ const CFX_ByteStringC& def) const
{
CPDF_Object* p = NULL;
m_Map.Lookup(key, (void*&)p);
@@ -857,6 +854,7 @@ void CPDF_Dictionary::SetAtMatrix(const CFX_ByteStringC& key, const CFX_AffineMa
pArray->AddNumber(matrix.f);
SetAt(key, pArray);
}
+
CPDF_Stream::CPDF_Stream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict)
: CPDF_Object(PDFOBJ_STREAM) {
m_pDict = pDict;
@@ -1127,6 +1125,7 @@ void CPDF_StreamAcc::LoadAllData(const CPDF_Stream* pStream, FX_BOOL bRawAccess,
m_pSrcData = NULL;
m_bNewBuf = m_pData != pStream->m_pDataBuf;
}
+
CPDF_StreamAcc::~CPDF_StreamAcc()
{
if (m_bNewBuf && m_pData) {
@@ -1173,6 +1172,17 @@ void CPDF_Reference::SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum)
m_pObjList = pDoc;
m_RefObjNum = objnum;
}
+
+CFX_ByteString CPDF_Reference::GetString() const
+{
+ if (m_pObjList) {
+ CPDF_Object* pObj = m_pObjList->GetIndirectObject(m_RefObjNum);
+ if (pObj)
+ return pObj->GetString();
+ }
+ return CFX_ByteString();
+}
+
CPDF_IndirectObjects::CPDF_IndirectObjects(CPDF_Parser* pParser)
{
m_pParser = pParser;

Powered by Google App Engine
This is Rietveld 408576698