Chromium Code Reviews| 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 1e6695ce2aff87cd402db03921d8b9d524d80354..b0b8f20e56c2d9e555dc59ba4fa7d7b501aa1b2b 100644 |
| --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp |
| +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp |
| @@ -40,7 +40,7 @@ void CPDF_Object::Destroy() { |
| CFX_ByteString CPDF_Object::GetString() const { |
| switch (m_Type) { |
| case PDFOBJ_BOOLEAN: |
| - return ((CPDF_Boolean*)this)->m_bValue ? "true" : "false"; |
| + return this->AsBoolean()->m_bValue ? "true" : "false"; |
|
Lei Zhang
2015/10/20 20:20:16
do you need this-> ?
dsinclair
2015/10/20 20:38:07
Done.
|
| case PDFOBJ_NUMBER: |
| return ((CPDF_Number*)this)->GetString(); |
| case PDFOBJ_STRING: |
| @@ -114,7 +114,7 @@ int CPDF_Object::GetInteger() const { |
| } |
| switch (m_Type) { |
| case PDFOBJ_BOOLEAN: |
| - return ((CPDF_Boolean*)this)->m_bValue; |
| + return this->AsBoolean()->m_bValue; |
| case PDFOBJ_NUMBER: |
| return ((CPDF_Number*)this)->GetInteger(); |
| case PDFOBJ_REFERENCE: { |
| @@ -168,7 +168,7 @@ void CPDF_Object::SetString(const CFX_ByteString& str) { |
| ASSERT(this != NULL); |
| switch (m_Type) { |
| case PDFOBJ_BOOLEAN: |
| - ((CPDF_Boolean*)this)->m_bValue = str == FX_BSTRC("true") ? 1 : 0; |
| + this->AsBoolean()->m_bValue = str == FX_BSTRC("true") ? 1 : 0; |
|
Tom Sepez
2015/10/20 20:21:30
nit: The ? 1 : 0 is redundant, and we wanted to as
dsinclair
2015/10/20 20:38:07
Done.
|
| return; |
| case PDFOBJ_NUMBER: |
| ((CPDF_Number*)this)->SetString(str); |
| @@ -207,7 +207,7 @@ FX_BOOL CPDF_Object::IsIdentical(CPDF_Object* pOther) const { |
| } |
| switch (m_Type) { |
| case PDFOBJ_BOOLEAN: |
| - return (((CPDF_Boolean*)this)->Identical((CPDF_Boolean*)pOther)); |
| + return this->AsBoolean()->Identical(pOther->AsBoolean()); |
| case PDFOBJ_NUMBER: |
| return (((CPDF_Number*)this)->Identical((CPDF_Number*)pOther)); |
| case PDFOBJ_STRING: |
| @@ -245,7 +245,7 @@ CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect, |
| CFX_MapPtrToPtr* visited) const { |
| switch (m_Type) { |
| case PDFOBJ_BOOLEAN: |
| - return new CPDF_Boolean(((CPDF_Boolean*)this)->m_bValue); |
| + return new CPDF_Boolean(this->AsBoolean()->m_bValue); |
| case PDFOBJ_NUMBER: |
| return new CPDF_Number(((CPDF_Number*)this)->m_bInteger, |
| &((CPDF_Number*)this)->m_Integer); |
| @@ -337,6 +337,14 @@ void CPDF_Object::SetUnicodeText(const FX_WCHAR* pUnicodes, int len) { |
| } |
| } |
| +CPDF_Boolean* CPDF_Object::AsBoolean() { |
| + return IsBoolean() ? static_cast<CPDF_Boolean*>(this) : nullptr; |
| +} |
| + |
| +const CPDF_Boolean* CPDF_Object::AsBoolean() const { |
| + return IsBoolean() ? static_cast<const CPDF_Boolean*>(this) : nullptr; |
| +} |
| + |
| CPDF_Dictionary* CPDF_Object::AsDictionary() { |
| return IsDictionary() ? static_cast<CPDF_Dictionary*>(this) : nullptr; |
| } |
| @@ -663,9 +671,8 @@ FX_BOOL CPDF_Dictionary::GetBoolean(const CFX_ByteStringC& key, |
| FX_BOOL bDefault) const { |
| CPDF_Object* p = NULL; |
| m_Map.Lookup(key, (void*&)p); |
| - if (p && p->GetType() == PDFOBJ_BOOLEAN) { |
| + if (ToBoolean(p)) |
| return p->GetInteger(); |
| - } |
| return bDefault; |
| } |
| CPDF_Dictionary* CPDF_Dictionary::GetDict(const CFX_ByteStringC& key) const { |