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

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

Issue 1410673005: Add type cast definitions for CPDF_Number. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 2 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 e82479104f394247d77b7e25cf750de1fbc307a8..18e901d4d6ffd793f0db76952c3860ffe24aad41 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
@@ -28,7 +28,7 @@ void CPDF_Object::Destroy() {
delete (CPDF_Array*)this;
break;
case PDFOBJ_DICTIONARY:
- delete this->AsDictionary();
+ delete AsDictionary();
break;
case PDFOBJ_STREAM:
delete (CPDF_Stream*)this;
@@ -42,7 +42,7 @@ CFX_ByteString CPDF_Object::GetString() const {
case PDFOBJ_BOOLEAN:
return AsBoolean()->m_bValue ? "true" : "false";
case PDFOBJ_NUMBER:
- return ((CPDF_Number*)this)->GetString();
+ return AsNumber()->GetString();
case PDFOBJ_STRING:
return ((CPDF_String*)this)->m_String;
case PDFOBJ_NAME:
@@ -88,7 +88,7 @@ CFX_ByteStringC CPDF_Object::GetConstString() const {
FX_FLOAT CPDF_Object::GetNumber() const {
switch (m_Type) {
case PDFOBJ_NUMBER:
- return ((CPDF_Number*)this)->GetNumber();
+ return AsNumber()->GetNumber();
case PDFOBJ_REFERENCE: {
CPDF_Reference* pRef = (CPDF_Reference*)(void*)this;
if (pRef->m_pObjList == NULL) {
@@ -114,9 +114,9 @@ int CPDF_Object::GetInteger() const {
}
switch (m_Type) {
case PDFOBJ_BOOLEAN:
- return this->AsBoolean()->m_bValue;
+ return AsBoolean()->m_bValue;
case PDFOBJ_NUMBER:
- return ((CPDF_Number*)this)->GetInteger();
+ return AsNumber()->GetInteger();
case PDFOBJ_REFERENCE: {
CPDF_Reference* pRef = (CPDF_Reference*)(void*)this;
PARSE_CONTEXT context;
@@ -140,7 +140,7 @@ CPDF_Dictionary* CPDF_Object::GetDict() const {
case PDFOBJ_DICTIONARY:
// The method should be made non-const if we want to not be const.
// See bug #234.
- return const_cast<CPDF_Dictionary*>(this->AsDictionary());
+ return const_cast<CPDF_Dictionary*>(AsDictionary());
case PDFOBJ_STREAM:
return ((CPDF_Stream*)this)->GetDict();
case PDFOBJ_REFERENCE: {
@@ -171,7 +171,7 @@ void CPDF_Object::SetString(const CFX_ByteString& str) {
AsBoolean()->m_bValue = (str == FX_BSTRC("true"));
return;
case PDFOBJ_NUMBER:
- ((CPDF_Number*)this)->SetString(str);
+ AsNumber()->SetString(str);
return;
case PDFOBJ_STRING:
((CPDF_String*)this)->m_String = str;
@@ -207,9 +207,9 @@ FX_BOOL CPDF_Object::IsIdentical(CPDF_Object* pOther) const {
}
switch (m_Type) {
case PDFOBJ_BOOLEAN:
- return this->AsBoolean()->Identical(pOther->AsBoolean());
+ return AsBoolean()->Identical(pOther->AsBoolean());
case PDFOBJ_NUMBER:
- return (((CPDF_Number*)this)->Identical((CPDF_Number*)pOther));
+ return AsNumber()->Identical(pOther->AsNumber());
case PDFOBJ_STRING:
return (((CPDF_String*)this)->Identical((CPDF_String*)pOther));
case PDFOBJ_NAME:
@@ -217,7 +217,7 @@ FX_BOOL CPDF_Object::IsIdentical(CPDF_Object* pOther) const {
case PDFOBJ_ARRAY:
return (((CPDF_Array*)this)->Identical((CPDF_Array*)pOther));
case PDFOBJ_DICTIONARY:
- return this->AsDictionary()->Identical(pOther->AsDictionary());
+ return AsDictionary()->Identical(pOther->AsDictionary());
case PDFOBJ_NULL:
return TRUE;
case PDFOBJ_STREAM:
@@ -245,11 +245,13 @@ CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect,
CFX_MapPtrToPtr* visited) const {
switch (m_Type) {
case PDFOBJ_BOOLEAN:
- return new CPDF_Boolean(this->AsBoolean()->m_bValue);
- case PDFOBJ_NUMBER:
- if (((CPDF_Number*)this)->m_bInteger)
- return new CPDF_Number(((CPDF_Number*)this)->m_Integer);
- return new CPDF_Number(((CPDF_Number*)this)->m_Float);
+ return new CPDF_Boolean(AsBoolean()->m_bValue);
+ case PDFOBJ_NUMBER: {
+ const CPDF_Number* pThis = AsNumber();
+ if (pThis->m_bInteger)
Lei Zhang 2015/10/21 14:45:50 Combine into one ctor call? return new CPDF_Numbe
dsinclair 2015/10/21 15:00:11 Done.
+ return new CPDF_Number(pThis->m_Integer);
+ return new CPDF_Number(pThis->m_Float);
+ }
case PDFOBJ_STRING:
return new CPDF_String(((CPDF_String*)this)->m_String,
((CPDF_String*)this)->IsHex());
@@ -267,7 +269,7 @@ CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect,
}
case PDFOBJ_DICTIONARY: {
CPDF_Dictionary* pCopy = new CPDF_Dictionary();
- const CPDF_Dictionary* pThis = this->AsDictionary();
+ const CPDF_Dictionary* pThis = AsDictionary();
FX_POSITION pos = pThis->m_Map.GetStartPosition();
while (pos) {
CFX_ByteString key;
@@ -354,6 +356,14 @@ const CPDF_Dictionary* CPDF_Object::AsDictionary() const {
return IsDictionary() ? static_cast<const CPDF_Dictionary*>(this) : nullptr;
}
+CPDF_Number* CPDF_Object::AsNumber() {
+ return IsNumber() ? static_cast<CPDF_Number*>(this) : nullptr;
+}
+
+const CPDF_Number* CPDF_Object::AsNumber() const {
+ return IsNumber() ? static_cast<const CPDF_Number*>(this) : nullptr;
+}
+
CPDF_Number::CPDF_Number(int value)
: CPDF_Object(PDFOBJ_NUMBER), m_bInteger(TRUE), m_Integer(value) {}

Powered by Google App Engine
This is Rietveld 408576698