Index: core/src/fpdfdoc/doc_action.cpp |
diff --git a/core/src/fpdfdoc/doc_action.cpp b/core/src/fpdfdoc/doc_action.cpp |
index bcbfe0f11215f4f65e8e646e12c4ec65ac87a244..d685f64caee28fb6ea311309fdd8331753832a9c 100644 |
--- a/core/src/fpdfdoc/doc_action.cpp |
+++ b/core/src/fpdfdoc/doc_action.cpp |
@@ -22,9 +22,8 @@ CPDF_Dest CPDF_Action::GetDest(CPDF_Document* pDoc) const { |
CFX_ByteStringC name = pDest->GetString(); |
return CPDF_Dest(name_tree.LookupNamedDest(pDoc, name)); |
} |
- if (pDest->GetType() == PDFOBJ_ARRAY) { |
- return CPDF_Dest((CPDF_Array*)pDest); |
- } |
+ if (CPDF_Array* pArray = pDest->AsArray()) |
+ return CPDF_Dest(pArray); |
return CPDF_Dest(); |
} |
const FX_CHAR* g_sATypes[] = { |
@@ -108,8 +107,8 @@ FX_DWORD CPDF_ActionFields::GetFieldsCount() const { |
return 1; |
if (pFields->IsString()) |
return 1; |
- if (pFields->GetType() == PDFOBJ_ARRAY) |
- return ((CPDF_Array*)pFields)->GetCount(); |
+ if (CPDF_Array* pArray = pFields->AsArray()) |
+ return pArray->GetCount(); |
return 0; |
} |
void CPDF_ActionFields::GetAllFields(CFX_PtrArray& fieldObjects) const { |
@@ -133,8 +132,7 @@ void CPDF_ActionFields::GetAllFields(CFX_PtrArray& fieldObjects) const { |
if (pFields->IsDictionary() || pFields->IsString()) { |
fieldObjects.Add(pFields); |
- } else if (pFields->GetType() == PDFOBJ_ARRAY) { |
- CPDF_Array* pArray = (CPDF_Array*)pFields; |
+ } else if (CPDF_Array* pArray = pFields->AsArray()) { |
FX_DWORD iCount = pArray->GetCount(); |
for (FX_DWORD i = 0; i < iCount; i++) { |
CPDF_Object* pObj = pArray->GetElementValue(i); |
@@ -166,8 +164,8 @@ CPDF_Object* CPDF_ActionFields::GetField(FX_DWORD iIndex) const { |
if (pFields->IsDictionary() || pFields->IsString()) { |
if (iIndex == 0) |
pFindObj = pFields; |
- } else if (pFields->GetType() == PDFOBJ_ARRAY) { |
- pFindObj = ((CPDF_Array*)pFields)->GetElementValue(iIndex); |
+ } else if (CPDF_Array* pArray = pFields->AsArray()) { |
+ pFindObj = pArray->GetElementValue(iIndex); |
} |
return pFindObj; |
} |
@@ -222,20 +220,16 @@ int32_t CPDF_Action::GetOperationType() const { |
return 0; |
} |
FX_DWORD CPDF_Action::GetSubActionsCount() const { |
- if (m_pDict == NULL || !m_pDict->KeyExist("Next")) { |
+ if (!m_pDict || !m_pDict->KeyExist("Next")) |
return 0; |
- } |
+ |
CPDF_Object* pNext = m_pDict->GetElementValue("Next"); |
- if (!pNext) { |
+ if (!pNext) |
return 0; |
- } |
- int iObjType = pNext->GetType(); |
- if (iObjType == PDFOBJ_DICTIONARY) { |
+ if (pNext->IsDictionary()) |
return 1; |
- } |
- if (iObjType == PDFOBJ_ARRAY) { |
- return ((CPDF_Array*)pNext)->GetCount(); |
- } |
+ if (CPDF_Array* pArray = pNext->AsArray()) |
+ return pArray->GetCount(); |
return 0; |
} |
CPDF_Action CPDF_Action::GetSubAction(FX_DWORD iIndex) const { |
@@ -246,8 +240,7 @@ CPDF_Action CPDF_Action::GetSubAction(FX_DWORD iIndex) const { |
if (CPDF_Dictionary* pDict = ToDictionary(pNext)) { |
if (iIndex == 0) |
return CPDF_Action(pDict); |
- } else if (pNext->GetType() == PDFOBJ_ARRAY) { |
- CPDF_Array* pArray = static_cast<CPDF_Array*>(pNext); |
+ } else if (CPDF_Array* pArray = ToArray(pNext)) { |
return CPDF_Action(pArray->GetDict(iIndex)); |
} |
return CPDF_Action(); |