Add type cast definitions for CPDF_String.
authorDan Sinclair <dsinclair@chromium.org>
Wed, 21 Oct 2015 17:08:24 +0000 (13:08 -0400)
committerDan Sinclair <dsinclair@chromium.org>
Wed, 21 Oct 2015 17:08:24 +0000 (13:08 -0400)
This Cl adds ToString, CPDF_Object::AsString and CPDF_Object::IsString and
updates the src to use them as needed.

BUG=pdfium:201
R=thestig@chromium.org

Review URL: https://codereview.chromium.org/1417933002 .

17 files changed:
core/include/fpdfapi/fpdf_objects.h
core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp
core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp
core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp
core/src/fpdfdoc/doc_action.cpp
core/src/fpdfdoc/doc_ap.cpp
core/src/fpdfdoc/doc_basic.cpp
core/src/fpdfdoc/doc_bookmark.cpp
core/src/fpdfdoc/doc_formfield.cpp
core/src/fpdfdoc/doc_link.cpp
core/src/fpdftext/fpdf_text_int.cpp
fpdfsdk/src/formfiller/FFL_Utils.cpp
fpdfsdk/src/fsdk_baseform.cpp
fpdfsdk/src/javascript/Document.cpp

index 438c89c..c3e5df4 100644 (file)
@@ -81,6 +81,7 @@ class CPDF_Object {
   bool IsBoolean() const { return m_Type == PDFOBJ_BOOLEAN; }
   bool IsDictionary() const { return m_Type == PDFOBJ_DICTIONARY; }
   bool IsNumber() const { return m_Type == PDFOBJ_NUMBER; }
+  bool IsString() const { return m_Type == PDFOBJ_STRING; }
 
   CPDF_Boolean* AsBoolean();
   const CPDF_Boolean* AsBoolean() const;
@@ -91,6 +92,9 @@ class CPDF_Object {
   CPDF_Number* AsNumber();
   const CPDF_Number* AsNumber() const;
 
+  CPDF_String* AsString();
+  const CPDF_String* AsString() const;
+
  protected:
   CPDF_Object(FX_DWORD type) : m_Type(type), m_ObjNum(0), m_GenNum(0) {}
   ~CPDF_Object() {}
@@ -220,6 +224,13 @@ class CPDF_String : public CPDF_Object {
   FX_BOOL m_bHex;
   friend class CPDF_Object;
 };
+inline CPDF_String* ToString(CPDF_Object* obj) {
+  return obj ? obj->AsString() : nullptr;
+}
+inline const CPDF_String* ToString(const CPDF_Object* obj) {
+  return obj ? obj->AsString() : nullptr;
+}
+
 class CPDF_Name : public CPDF_Object {
  public:
   static CPDF_Name* Create(const CFX_ByteString& str) {
index 3d669a0..b097389 100644 (file)
@@ -42,7 +42,7 @@ int32_t PDF_CreatorAppendObject(const CPDF_Object* pObj,
       break;
     case PDFOBJ_STRING: {
       CFX_ByteString str = pObj->GetString();
-      FX_BOOL bHex = ((CPDF_String*)pObj)->IsHex();
+      FX_BOOL bHex = pObj->AsString()->IsHex();
       if ((len = pFile->AppendString(PDF_EncodeString(str, bHex))) < 0) {
         return -1;
       }
@@ -1116,7 +1116,7 @@ int32_t CPDF_Creator::WriteDirectObj(FX_DWORD objnum,
       break;
     case PDFOBJ_STRING: {
       CFX_ByteString str = pObj->GetString();
-      FX_BOOL bHex = ((CPDF_String*)pObj)->IsHex();
+      FX_BOOL bHex = pObj->AsString()->IsHex();
       if (m_pCryptoHandler == NULL || !bEncrypt) {
         CFX_ByteString content = PDF_EncodeString(str, bHex);
         if ((len = m_File.AppendString(content)) < 0) {
index 3f0de2d..584f9c2 100644 (file)
@@ -906,12 +906,13 @@ FX_BOOL CPDF_IndexedCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) {
     m_pCompMinMax[i * 2 + 1] -= m_pCompMinMax[i * 2];
   }
   m_MaxIndex = pArray->GetInteger(2);
+
   CPDF_Object* pTableObj = pArray->GetElementValue(3);
-  if (pTableObj == NULL) {
+  if (!pTableObj)
     return FALSE;
-  }
-  if (pTableObj->GetType() == PDFOBJ_STRING) {
-    m_Table = ((CPDF_String*)pTableObj)->GetString();
+
+  if (CPDF_String* pString = pTableObj->AsString()) {
+    m_Table = pString->GetString();
   } else if (pTableObj->GetType() == PDFOBJ_STREAM) {
     CPDF_StreamAcc acc;
     acc.LoadAllData((CPDF_Stream*)pTableObj, FALSE);
index 1283a3a..fbb364e 100644 (file)
@@ -1359,10 +1359,8 @@ void CPDF_StreamContentParser::Handle_ShowText_Positioning() {
   }
   int n = pArray->GetCount(), nsegs = 0, i;
   for (i = 0; i < n; i++) {
-    CPDF_Object* pObj = pArray->GetElementValue(i);
-    if (pObj->GetType() == PDFOBJ_STRING) {
+    if (pArray->GetElementValue(i)->IsString())
       nsegs++;
-    }
   }
   if (nsegs == 0) {
     for (i = 0; i < n; i++) {
@@ -1379,7 +1377,7 @@ void CPDF_StreamContentParser::Handle_ShowText_Positioning() {
   FX_FLOAT fInitKerning = 0;
   for (i = 0; i < n; i++) {
     CPDF_Object* pObj = pArray->GetElementValue(i);
-    if (pObj->GetType() == PDFOBJ_STRING) {
+    if (pObj->IsString()) {
       CFX_ByteString str = pObj->GetString();
       if (str.IsEmpty()) {
         continue;
index 82bfbb5..c766dd3 100644 (file)
@@ -100,12 +100,10 @@ CFX_WideString CFDF_Document::GetWin32Path() const {
   CPDF_Dictionary* pDict =
       m_pRootDict ? m_pRootDict->GetDict(FX_BSTRC("FDF")) : NULL;
   CPDF_Object* pFileSpec = pDict ? pDict->GetElementValue(FX_BSTRC("F")) : NULL;
-  if (pFileSpec == NULL) {
+  if (!pFileSpec)
     return CFX_WideString();
-  }
-  if (pFileSpec->GetType() == PDFOBJ_STRING) {
+  if (pFileSpec->IsString())
     return FPDF_FileSpec_GetWin32Path(m_pRootDict->GetDict(FX_BSTRC("FDF")));
-  }
   return FPDF_FileSpec_GetWin32Path(pFileSpec);
 }
 static CFX_WideString ChangeSlash(const FX_WCHAR* str) {
@@ -138,7 +136,8 @@ void FPDF_FileSpec_SetWin32Path(CPDF_Object* pFileSpec,
   } else {
     result = ChangeSlash(filepath.c_str());
   }
-  if (pFileSpec->GetType() == PDFOBJ_STRING) {
+
+  if (pFileSpec->IsString()) {
     pFileSpec->SetString(CFX_ByteString::FromUnicode(result));
   } else if (CPDF_Dictionary* pFileDict = pFileSpec->AsDictionary()) {
     pFileDict->SetAtString(FX_BSTRC("F"), CFX_ByteString::FromUnicode(result));
index 59800dc..b2dc924 100644 (file)
@@ -19,7 +19,7 @@ void CPDF_Object::Release() {
 void CPDF_Object::Destroy() {
   switch (m_Type) {
     case PDFOBJ_STRING:
-      delete (CPDF_String*)this;
+      delete AsString();
       break;
     case PDFOBJ_NAME:
       delete (CPDF_Name*)this;
@@ -44,7 +44,7 @@ CFX_ByteString CPDF_Object::GetString() const {
     case PDFOBJ_NUMBER:
       return AsNumber()->GetString();
     case PDFOBJ_STRING:
-      return ((CPDF_String*)this)->m_String;
+      return AsString()->m_String;
     case PDFOBJ_NAME:
       return ((CPDF_Name*)this)->m_Name;
     case PDFOBJ_REFERENCE: {
@@ -64,9 +64,10 @@ CFX_ByteString CPDF_Object::GetString() const {
 }
 CFX_ByteStringC CPDF_Object::GetConstString() const {
   switch (m_Type) {
-    case PDFOBJ_STRING:
-      return CFX_ByteStringC((const uint8_t*)((CPDF_String*)this)->m_String,
-                             ((CPDF_String*)this)->m_String.GetLength());
+    case PDFOBJ_STRING: {
+      CFX_ByteString str = AsString()->m_String;
+      return CFX_ByteStringC((const uint8_t*)str, str.GetLength());
+    }
     case PDFOBJ_NAME:
       return CFX_ByteStringC((const uint8_t*)((CPDF_Name*)this)->m_Name,
                              ((CPDF_Name*)this)->m_Name.GetLength());
@@ -174,7 +175,7 @@ void CPDF_Object::SetString(const CFX_ByteString& str) {
       AsNumber()->SetString(str);
       return;
     case PDFOBJ_STRING:
-      ((CPDF_String*)this)->m_String = str;
+      AsString()->m_String = str;
       return;
     case PDFOBJ_NAME:
       ((CPDF_Name*)this)->m_Name = str;
@@ -211,7 +212,7 @@ FX_BOOL CPDF_Object::IsIdentical(CPDF_Object* pOther) const {
     case PDFOBJ_NUMBER:
       return AsNumber()->Identical(pOther->AsNumber());
     case PDFOBJ_STRING:
-      return (((CPDF_String*)this)->Identical((CPDF_String*)pOther));
+      return AsString()->Identical(pOther->AsString());
     case PDFOBJ_NAME:
       return (((CPDF_Name*)this)->Identical((CPDF_Name*)pOther));
     case PDFOBJ_ARRAY:
@@ -251,9 +252,10 @@ CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect,
       return new CPDF_Number(pThis->m_bInteger ? pThis->m_Integer
                                                : pThis->m_Float);
     }
-    case PDFOBJ_STRING:
-      return new CPDF_String(((CPDF_String*)this)->m_String,
-                             ((CPDF_String*)this)->IsHex());
+    case PDFOBJ_STRING: {
+      const CPDF_String* pString = AsString();
+      return new CPDF_String(pString->m_String, pString->IsHex());
+    }
     case PDFOBJ_NAME:
       return new CPDF_Name(((CPDF_Name*)this)->m_Name);
     case PDFOBJ_ARRAY: {
@@ -314,9 +316,9 @@ CPDF_Object* CPDF_Object::CloneRef(CPDF_IndirectObjects* pDoc) const {
   return Clone();
 }
 CFX_WideString CPDF_Object::GetUnicodeText(CFX_CharMap* pCharMap) const {
-  if (m_Type == PDFOBJ_STRING) {
-    return PDF_DecodeText(((CPDF_String*)this)->m_String, pCharMap);
-  }
+  if (const CPDF_String* pString = AsString())
+    return PDF_DecodeText(pString->m_String, pCharMap);
+
   if (m_Type == PDFOBJ_STREAM) {
     CPDF_StreamAcc stream;
     stream.LoadAllData((CPDF_Stream*)this, FALSE);
@@ -330,8 +332,8 @@ CFX_WideString CPDF_Object::GetUnicodeText(CFX_CharMap* pCharMap) const {
   return CFX_WideString();
 }
 void CPDF_Object::SetUnicodeText(const FX_WCHAR* pUnicodes, int len) {
-  if (m_Type == PDFOBJ_STRING) {
-    ((CPDF_String*)this)->m_String = PDF_EncodeText(pUnicodes, len);
+  if (CPDF_String* pString = AsString()) {
+    pString->m_String = PDF_EncodeText(pUnicodes, len);
   } else if (m_Type == PDFOBJ_STREAM) {
     CFX_ByteString result = PDF_EncodeText(pUnicodes, len);
     ((CPDF_Stream*)this)
@@ -363,6 +365,14 @@ const CPDF_Number* CPDF_Object::AsNumber() const {
   return IsNumber() ? static_cast<const CPDF_Number*>(this) : nullptr;
 }
 
+CPDF_String* CPDF_Object::AsString() {
+  return IsString() ? static_cast<CPDF_String*>(this) : nullptr;
+}
+
+const CPDF_String* CPDF_Object::AsString() const {
+  return IsString() ? static_cast<const CPDF_String*>(this) : nullptr;
+}
+
 CPDF_Number::CPDF_Number(int value)
     : CPDF_Object(PDFOBJ_NUMBER), m_bInteger(TRUE), m_Integer(value) {}
 
index c34d812..84d1301 100644 (file)
@@ -374,7 +374,7 @@ CFX_ByteTextBuf& operator<<(CFX_ByteTextBuf& buf, const CPDF_Object* pObj) {
       break;
     case PDFOBJ_STRING: {
       CFX_ByteString str = pObj->GetString();
-      FX_BOOL bHex = ((CPDF_String*)pObj)->IsHex();
+      FX_BOOL bHex = pObj->AsString()->IsHex();
       buf << PDF_EncodeString(str, bHex);
       break;
     }
index 409d050..c55c20c 100644 (file)
@@ -17,7 +17,7 @@ CPDF_Dest CPDF_Action::GetDest(CPDF_Document* pDoc) const {
   if (!pDest) {
     return CPDF_Dest();
   }
-  if (pDest->GetType() == PDFOBJ_STRING || pDest->GetType() == PDFOBJ_NAME) {
+  if (pDest->IsString() || pDest->GetType() == PDFOBJ_NAME) {
     CPDF_NameTree name_tree(pDoc, FX_BSTRC("Dests"));
     CFX_ByteStringC name = pDest->GetString();
     return CPDF_Dest(name_tree.LookupNamedDest(pDoc, name));
@@ -102,19 +102,14 @@ FX_DWORD CPDF_ActionFields::GetFieldsCount() const {
   } else {
     pFields = pDict->GetArray("Fields");
   }
-  if (pFields == NULL) {
+  if (!pFields)
     return 0;
-  }
-  int iType = pFields->GetType();
-  if (iType == PDFOBJ_DICTIONARY) {
+  if (pFields->IsDictionary())
     return 1;
-  }
-  if (iType == PDFOBJ_STRING) {
+  if (pFields->IsString())
     return 1;
-  }
-  if (iType == PDFOBJ_ARRAY) {
+  if (pFields->GetType() == PDFOBJ_ARRAY)
     return ((CPDF_Array*)pFields)->GetCount();
-  }
   return 0;
 }
 void CPDF_ActionFields::GetAllFields(CFX_PtrArray& fieldObjects) const {
@@ -133,13 +128,12 @@ void CPDF_ActionFields::GetAllFields(CFX_PtrArray& fieldObjects) const {
   } else {
     pFields = pDict->GetArray("Fields");
   }
-  if (pFields == NULL) {
+  if (!pFields)
     return;
-  }
-  int iType = pFields->GetType();
-  if (iType == PDFOBJ_DICTIONARY || iType == PDFOBJ_STRING) {
+
+  if (pFields->IsDictionary() || pFields->IsString()) {
     fieldObjects.Add(pFields);
-  } else if (iType == PDFOBJ_ARRAY) {
+  } else if (pFields->GetType() == PDFOBJ_ARRAY) {
     CPDF_Array* pArray = (CPDF_Array*)pFields;
     FX_DWORD iCount = pArray->GetCount();
     for (FX_DWORD i = 0; i < iCount; i++) {
@@ -169,12 +163,10 @@ CPDF_Object* CPDF_ActionFields::GetField(FX_DWORD iIndex) const {
     return NULL;
   }
   CPDF_Object* pFindObj = NULL;
-  int iType = pFields->GetType();
-  if (iType == PDFOBJ_DICTIONARY || iType == PDFOBJ_STRING) {
-    if (iIndex == 0) {
+  if (pFields->IsDictionary() || pFields->IsString()) {
+    if (iIndex == 0)
       pFindObj = pFields;
-    }
-  } else if (iType == PDFOBJ_ARRAY) {
+  } else if (pFields->GetType() == PDFOBJ_ARRAY) {
     pFindObj = ((CPDF_Array*)pFields)->GetElementValue(iIndex);
   }
   return pFindObj;
index 2367d0e..71025ec 100644 (file)
@@ -618,7 +618,7 @@ static FX_BOOL GenerateWidgetAP(CPDF_Document* pDoc,
           }
           if (CPDF_Object* pOpt = pOpts->GetElementValue(i)) {
             CFX_WideString swItem;
-            if (pOpt->GetType() == PDFOBJ_STRING) {
+            if (pOpt->IsString()) {
               swItem = pOpt->GetUnicodeText();
             } else if (pOpt->GetType() == PDFOBJ_ARRAY) {
               swItem =
index bbf5113..cbf956b 100644 (file)
@@ -406,8 +406,7 @@ static void FPDFDOC_FILESPEC_SetFileName(CPDF_Object* pObj,
   } else {
     wsStr = FILESPEC_EncodeFileName(wsFileName);
   }
-  int32_t iType = pObj->GetType();
-  if (iType == PDFOBJ_STRING) {
+  if (pObj->IsString()) {
     pObj->SetString(CFX_ByteString::FromUnicode(wsStr));
   } else if (CPDF_Dictionary* pDict = pObj->AsDictionary()) {
     pDict->SetAtString(FX_BSTRC("F"), CFX_ByteString::FromUnicode(wsStr));
index 2fea810..9d2a9f6 100644 (file)
@@ -51,10 +51,10 @@ CFX_WideString CPDF_Bookmark::GetTitle() const {
   if (!m_pDict) {
     return CFX_WideString();
   }
-  CPDF_String* pString = (CPDF_String*)m_pDict->GetElementValue("Title");
-  if (!pString || pString->GetType() != PDFOBJ_STRING) {
+  CPDF_String* pString = ToString(m_pDict->GetElementValue("Title"));
+  if (!pString)
     return CFX_WideString();
-  }
+
   CFX_WideString title = pString->GetUnicodeText();
   int len = title.GetLength();
   if (!len) {
@@ -75,7 +75,7 @@ CPDF_Dest CPDF_Bookmark::GetDest(CPDF_Document* pDocument) const {
   if (!pDest) {
     return CPDF_Dest();
   }
-  if (pDest->GetType() == PDFOBJ_STRING || pDest->GetType() == PDFOBJ_NAME) {
+  if (pDest->IsString() || pDest->GetType() == PDFOBJ_NAME) {
     CPDF_NameTree name_tree(pDocument, FX_BSTRC("Dests"));
     CFX_ByteStringC name = pDest->GetString();
     return CPDF_Dest(name_tree.LookupNamedDest(pDocument, name));
index 9ef2883..25f5490 100644 (file)
@@ -425,18 +425,10 @@ int CPDF_FormField::CountSelectedItems() {
       return 0;
     }
   }
-  if (pValue->GetType() == PDFOBJ_STRING) {
-    if (pValue->GetString().IsEmpty()) {
-      return 0;
-    }
-    return 1;
-  }
-  if (pValue->IsNumber()) {
-    if (pValue->GetString().IsEmpty()) {
-      return 0;
-    }
-    return 1;
-  }
+
+  if (pValue->IsString() || pValue->IsNumber())
+    return pValue->GetString().IsEmpty() ? 0 : 1;
+
   if (pValue->GetType() != PDFOBJ_ARRAY) {
     return 0;
   }
@@ -454,10 +446,10 @@ int CPDF_FormField::GetSelectedIndex(int index) {
     return pValue->GetInteger();
 
   CFX_WideString sel_value;
-  if (pValue->GetType() == PDFOBJ_STRING) {
-    if (index != 0) {
+  if (pValue->IsString()) {
+    if (index != 0)
       return -1;
-    }
+
     sel_value = pValue->GetUnicodeText();
   } else {
     if (pValue->GetType() != PDFOBJ_ARRAY) {
@@ -535,21 +527,16 @@ FX_BOOL CPDF_FormField::IsItemSelected(int index) {
       return FALSE;
     }
   }
-  if (pValue->GetType() == PDFOBJ_STRING) {
-    if (pValue->GetUnicodeText() == opt_value) {
-      return TRUE;
-    }
-    return FALSE;
-  }
+
+  if (pValue->IsString())
+    return (pValue->GetUnicodeText() == opt_value);
+
   if (pValue->IsNumber()) {
-    if (pValue->GetString().IsEmpty()) {
+    if (pValue->GetString().IsEmpty())
       return FALSE;
-    }
-    if (pValue->GetInteger() == index) {
-      return TRUE;
-    }
-    return FALSE;
+    return (pValue->GetInteger() == index);
   }
+
   if (pValue->GetType() != PDFOBJ_ARRAY) {
     return FALSE;
   }
@@ -593,7 +580,7 @@ FX_BOOL CPDF_FormField::SetItemSelection(int index,
     if (pValue != NULL) {
       if (m_Type == ListBox) {
         SelectOption(index, FALSE);
-        if (pValue->GetType() == PDFOBJ_STRING) {
+        if (pValue->IsString()) {
           if (pValue->GetUnicodeText() == opt_value) {
             m_pDict->RemoveAt("V");
           }
@@ -734,10 +721,9 @@ CFX_WideString CPDF_FormField::GetOptionText(int index, int sub_index) {
   if (pOption->GetType() == PDFOBJ_ARRAY) {
     pOption = ((CPDF_Array*)pOption)->GetElementValue(sub_index);
   }
-  if (pOption == NULL || pOption->GetType() != PDFOBJ_STRING) {
-    return CFX_WideString();
-  }
-  return ((CPDF_String*)pOption)->GetUnicodeText();
+
+  CPDF_String* pString = ToString(pOption);
+  return pString ? pString->GetUnicodeText() : CFX_WideString();
 }
 CFX_WideString CPDF_FormField::GetOptionLabel(int index) {
   return GetOptionText(index, 1);
index fbf18f9..9541101 100644 (file)
@@ -76,7 +76,7 @@ CPDF_Dest CPDF_Link::GetDest(CPDF_Document* pDoc) {
   if (pDest == NULL) {
     return CPDF_Dest();
   }
-  if (pDest->GetType() == PDFOBJ_STRING || pDest->GetType() == PDFOBJ_NAME) {
+  if (pDest->IsString() || pDest->GetType() == PDFOBJ_NAME) {
     CPDF_NameTree name_tree(pDoc, FX_BSTRC("Dests"));
     CFX_ByteStringC name = pDest->GetString();
     return CPDF_Dest(name_tree.LookupNamedDest(pDoc, name));
index 99f36a0..9ab09e1 100644 (file)
@@ -1288,8 +1288,7 @@ int32_t CPDF_TextPage::PreMarkedContent(PDFTEXT_Obj Obj) {
     CFX_ByteString tagStr = (CFX_ByteString)item.GetName();
     pDict = ToDictionary(static_cast<CPDF_Object*>(item.GetParam()));
     CPDF_String* temp =
-        (CPDF_String*)(pDict ? pDict->GetElement(FX_BSTRC("ActualText"))
-                             : NULL);
+        ToString(pDict ? pDict->GetElement(FX_BSTRC("ActualText")) : nullptr);
     if (temp) {
       bExist = TRUE;
       actText = temp->GetUnicodeText();
@@ -1359,8 +1358,7 @@ void CPDF_TextPage::ProcessMarkedContent(PDFTEXT_Obj Obj) {
     CFX_ByteString tagStr = (CFX_ByteString)item.GetName();
     pDict = ToDictionary(static_cast<CPDF_Object*>(item.GetParam()));
     CPDF_String* temp =
-        (CPDF_String*)(pDict ? pDict->GetElement(FX_BSTRC("ActualText"))
-                             : NULL);
+        ToString(pDict ? pDict->GetElement(FX_BSTRC("ActualText")) : nullptr);
     if (temp) {
       actText = temp->GetUnicodeText();
     }
index a4463b7..e3c8306 100644 (file)
@@ -81,7 +81,7 @@ FX_BOOL CFFL_Utils::TraceObject(CPDF_Object* pObj) {
       // TRACE("%d\n",(int32_t)pObj);
       break;
     case PDFOBJ_STRING:
-      // TRACE(((CPDF_String*)pObj)->GetString() + "\n");
+      // TRACE(pObj->AsString()->GetString() + "\n");
       break;
     case PDFOBJ_NAME:
       // TRACE(((CPDF_Name*)pObj)->GetString() + "\n");
index b4aa822..542ade0 100644 (file)
@@ -2053,10 +2053,9 @@ void CPDFSDK_InterForm::DoFDFBuffer(CFX_ByteString sBuffer) {
 
           CPDF_Object* pJS = pJSDict->GetElementValue("Before");
           if (pJS != NULL) {
-            int iType = pJS->GetType();
-            if (iType == PDFOBJ_STRING)
+            if (pJS->IsString())
               csJS = pJSDict->GetUnicodeText("Before");
-            else if (iType == PDFOBJ_STREAM)
+            else if (pJS->GetType() == PDFOBJ_STREAM)
               csJS = pJS->GetUnicodeText();
           }
         }
@@ -2226,13 +2225,12 @@ void CPDFSDK_InterForm::GetFieldFromObjects(const CFX_PtrArray& objects,
     if (pObject == NULL)
       continue;
 
-    int iType = pObject->GetType();
-    if (iType == PDFOBJ_STRING) {
+    if (pObject->IsString()) {
       CFX_WideString csName = pObject->GetUnicodeText();
       CPDF_FormField* pField = m_pInterForm->GetField(0, csName);
       if (pField != NULL)
         fields.Add(pField);
-    } else if (iType == PDFOBJ_DICTIONARY) {
+    } else if (pObject->IsDictionary()) {
       if (m_pInterForm->IsValidFormField(pObject))
         fields.Add(pObject);
     }
index 163323a..21f68c9 100644 (file)
@@ -848,14 +848,16 @@ FX_BOOL Document::info(IJS_Context* cc,
       CFX_ByteString bsKey;
       CPDF_Object* pValueObj = pDictionary->GetNextElement(pos, bsKey);
       CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey, bsKey.GetLength());
-      if ((pValueObj->GetType() == PDFOBJ_STRING) ||
-          (pValueObj->GetType() == PDFOBJ_NAME))
+      if (pValueObj->IsString() || (pValueObj->GetType() == PDFOBJ_NAME)) {
         FXJS_PutObjectString(isolate, pObj, wsKey.c_str(),
                              pValueObj->GetUnicodeText().c_str());
+      }
+
       if (pValueObj->IsNumber()) {
         FXJS_PutObjectNumber(isolate, pObj, wsKey.c_str(),
                              (float)pValueObj->GetNumber());
       }
+
       if (pValueObj->IsBoolean()) {
         FXJS_PutObjectBoolean(isolate, pObj, wsKey.c_str(),
                               (bool)pValueObj->GetInteger());