Add type cast definitions for CPDF_Stream.
[pdfium.git] / core / include / fpdfapi / fpdf_objects.h
index 2404774..45ca665 100644 (file)
@@ -79,12 +79,17 @@ class CPDF_Object {
 
   FX_BOOL IsModified() const { return FALSE; }
 
+  bool IsArray() const { return m_Type == PDFOBJ_ARRAY; }
   bool IsBoolean() const { return m_Type == PDFOBJ_BOOLEAN; }
   bool IsDictionary() const { return m_Type == PDFOBJ_DICTIONARY; }
   bool IsName() const { return m_Type == PDFOBJ_NAME; }
   bool IsNumber() const { return m_Type == PDFOBJ_NUMBER; }
+  bool IsStream() const { return m_Type == PDFOBJ_STREAM; }
   bool IsString() const { return m_Type == PDFOBJ_STRING; }
 
+  CPDF_Array* AsArray();
+  const CPDF_Array* AsArray() const;
+
   CPDF_Boolean* AsBoolean();
   const CPDF_Boolean* AsBoolean() const;
 
@@ -97,6 +102,9 @@ class CPDF_Object {
   CPDF_Number* AsNumber();
   const CPDF_Number* AsNumber() const;
 
+  CPDF_Stream* AsStream();
+  const CPDF_Stream* AsStream() const;
+
   CPDF_String* AsString();
   const CPDF_String* AsString() const;
 
@@ -341,6 +349,13 @@ class CPDF_Array : public CPDF_Object {
   CFX_PtrArray m_Objects;
   friend class CPDF_Object;
 };
+inline CPDF_Array* ToArray(CPDF_Object* obj) {
+  return obj ? obj->AsArray() : nullptr;
+}
+inline const CPDF_Array* ToArray(const CPDF_Object* obj) {
+  return obj ? obj->AsArray() : nullptr;
+}
+
 class CPDF_Dictionary : public CPDF_Object {
  public:
   static CPDF_Dictionary* Create() { return new CPDF_Dictionary(); }
@@ -508,6 +523,13 @@ class CPDF_Stream : public CPDF_Object {
   friend class CPDF_StreamAcc;
   friend class CPDF_AttachmentAcc;
 };
+inline CPDF_Stream* ToStream(CPDF_Object* obj) {
+  return obj ? obj->AsStream() : nullptr;
+}
+inline const CPDF_Stream* ToStream(const CPDF_Object* obj) {
+  return obj ? obj->AsStream() : nullptr;
+}
+
 class CPDF_StreamAcc {
  public:
   CPDF_StreamAcc();