OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 |
| 7 #ifndef CORE_INCLUDE_FPDFAPI_CPDF_OBJECT_H_ |
| 8 #define CORE_INCLUDE_FPDFAPI_CPDF_OBJECT_H_ |
| 9 |
| 10 #include "core/include/fxcrt/fx_string.h" |
| 11 #include "core/include/fxcrt/fx_system.h" |
| 12 |
| 13 class CPDF_Array; |
| 14 class CPDF_Boolean; |
| 15 class CPDF_Dictionary; |
| 16 class CPDF_Name; |
| 17 class CPDF_Null; |
| 18 class CPDF_Number; |
| 19 class CPDF_Reference; |
| 20 class CPDF_Stream; |
| 21 class CPDF_String; |
| 22 |
| 23 class CPDF_Object { |
| 24 public: |
| 25 enum Type { |
| 26 BOOLEAN = 1, |
| 27 NUMBER, |
| 28 STRING, |
| 29 NAME, |
| 30 ARRAY, |
| 31 DICTIONARY, |
| 32 STREAM, |
| 33 NULLOBJ, |
| 34 REFERENCE |
| 35 }; |
| 36 |
| 37 virtual Type GetType() const = 0; |
| 38 FX_DWORD GetObjNum() const { return m_ObjNum; } |
| 39 FX_DWORD GetGenNum() const { return m_GenNum; } |
| 40 |
| 41 virtual CPDF_Object* Clone(FX_BOOL bDirect = FALSE) const = 0; |
| 42 virtual CPDF_Object* GetDirect() const; |
| 43 |
| 44 FX_BOOL IsModified() const { return FALSE; } |
| 45 void Release(); |
| 46 |
| 47 virtual CFX_ByteString GetString() const; |
| 48 virtual CFX_ByteStringC GetConstString() const; |
| 49 virtual CFX_WideString GetUnicodeText() const; |
| 50 virtual FX_FLOAT GetNumber() const; |
| 51 virtual int GetInteger() const; |
| 52 virtual CPDF_Dictionary* GetDict() const; |
| 53 virtual CPDF_Array* GetArray() const; |
| 54 |
| 55 virtual void SetString(const CFX_ByteString& str); |
| 56 |
| 57 virtual bool IsArray() const; |
| 58 virtual bool IsBoolean() const; |
| 59 virtual bool IsDictionary() const; |
| 60 virtual bool IsName() const; |
| 61 virtual bool IsNumber() const; |
| 62 virtual bool IsReference() const; |
| 63 virtual bool IsStream() const; |
| 64 virtual bool IsString() const; |
| 65 |
| 66 virtual CPDF_Array* AsArray(); |
| 67 virtual const CPDF_Array* AsArray() const; |
| 68 virtual CPDF_Boolean* AsBoolean(); |
| 69 virtual const CPDF_Boolean* AsBoolean() const; |
| 70 virtual CPDF_Dictionary* AsDictionary(); |
| 71 virtual const CPDF_Dictionary* AsDictionary() const; |
| 72 virtual CPDF_Name* AsName(); |
| 73 virtual const CPDF_Name* AsName() const; |
| 74 virtual CPDF_Number* AsNumber(); |
| 75 virtual const CPDF_Number* AsNumber() const; |
| 76 virtual CPDF_Reference* AsReference(); |
| 77 virtual const CPDF_Reference* AsReference() const; |
| 78 virtual CPDF_Stream* AsStream(); |
| 79 virtual const CPDF_Stream* AsStream() const; |
| 80 virtual CPDF_String* AsString(); |
| 81 virtual const CPDF_String* AsString() const; |
| 82 |
| 83 protected: |
| 84 CPDF_Object() : m_ObjNum(0), m_GenNum(0) {} |
| 85 virtual ~CPDF_Object(); |
| 86 void Destroy() { delete this; } |
| 87 |
| 88 FX_DWORD m_ObjNum; |
| 89 FX_DWORD m_GenNum; |
| 90 |
| 91 friend class CPDF_IndirectObjectHolder; |
| 92 friend class CPDF_Parser; |
| 93 |
| 94 private: |
| 95 CPDF_Object(const CPDF_Object& src) {} |
| 96 }; |
| 97 |
| 98 inline CPDF_Boolean* ToBoolean(CPDF_Object* obj) { |
| 99 return obj ? obj->AsBoolean() : nullptr; |
| 100 } |
| 101 |
| 102 inline const CPDF_Boolean* ToBoolean(const CPDF_Object* obj) { |
| 103 return obj ? obj->AsBoolean() : nullptr; |
| 104 } |
| 105 |
| 106 inline CPDF_Number* ToNumber(CPDF_Object* obj) { |
| 107 return obj ? obj->AsNumber() : nullptr; |
| 108 } |
| 109 |
| 110 inline const CPDF_Number* ToNumber(const CPDF_Object* obj) { |
| 111 return obj ? obj->AsNumber() : nullptr; |
| 112 } |
| 113 |
| 114 inline CPDF_String* ToString(CPDF_Object* obj) { |
| 115 return obj ? obj->AsString() : nullptr; |
| 116 } |
| 117 |
| 118 inline const CPDF_String* ToString(const CPDF_Object* obj) { |
| 119 return obj ? obj->AsString() : nullptr; |
| 120 } |
| 121 |
| 122 inline CPDF_Name* ToName(CPDF_Object* obj) { |
| 123 return obj ? obj->AsName() : nullptr; |
| 124 } |
| 125 |
| 126 inline const CPDF_Name* ToName(const CPDF_Object* obj) { |
| 127 return obj ? obj->AsName() : nullptr; |
| 128 } |
| 129 |
| 130 inline CPDF_Array* ToArray(CPDF_Object* obj) { |
| 131 return obj ? obj->AsArray() : nullptr; |
| 132 } |
| 133 |
| 134 inline const CPDF_Array* ToArray(const CPDF_Object* obj) { |
| 135 return obj ? obj->AsArray() : nullptr; |
| 136 } |
| 137 |
| 138 inline CPDF_Dictionary* ToDictionary(CPDF_Object* obj) { |
| 139 return obj ? obj->AsDictionary() : nullptr; |
| 140 } |
| 141 |
| 142 inline const CPDF_Dictionary* ToDictionary(const CPDF_Object* obj) { |
| 143 return obj ? obj->AsDictionary() : nullptr; |
| 144 } |
| 145 inline CPDF_Reference* ToReference(CPDF_Object* obj) { |
| 146 return obj ? obj->AsReference() : nullptr; |
| 147 } |
| 148 |
| 149 inline const CPDF_Reference* ToReference(const CPDF_Object* obj) { |
| 150 return obj ? obj->AsReference() : nullptr; |
| 151 } |
| 152 |
| 153 #endif // CORE_INCLUDE_FPDFAPI_CPDF_OBJECT_H_ |
OLD | NEW |