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

Side by Side Diff: core/fpdfapi/parser/cpdf_object.h

Issue 2478253002: Revert of Remove CPDF_Object::Release() in favor of direct delete (Closed)
Patch Set: Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #ifndef CORE_FPDFAPI_PARSER_CPDF_OBJECT_H_ 7 #ifndef CORE_FPDFAPI_PARSER_CPDF_OBJECT_H_
8 #define CORE_FPDFAPI_PARSER_CPDF_OBJECT_H_ 8 #define CORE_FPDFAPI_PARSER_CPDF_OBJECT_H_
9 9
10 #include <memory> 10 #include <memory>
(...skipping 20 matching lines...) Expand all
31 NUMBER, 31 NUMBER,
32 STRING, 32 STRING,
33 NAME, 33 NAME,
34 ARRAY, 34 ARRAY,
35 DICTIONARY, 35 DICTIONARY,
36 STREAM, 36 STREAM,
37 NULLOBJ, 37 NULLOBJ,
38 REFERENCE 38 REFERENCE
39 }; 39 };
40 40
41 virtual ~CPDF_Object();
42
43 virtual Type GetType() const = 0; 41 virtual Type GetType() const = 0;
44 uint32_t GetObjNum() const { return m_ObjNum; } 42 uint32_t GetObjNum() const { return m_ObjNum; }
45 uint32_t GetGenNum() const { return m_GenNum; } 43 uint32_t GetGenNum() const { return m_GenNum; }
46 bool IsInline() const { return m_ObjNum == 0; } 44 bool IsInline() const { return m_ObjNum == 0; }
47 45
48 // Create a deep copy of the object. 46 // Create a deep copy of the object.
49 virtual CPDF_Object* Clone() const = 0; 47 virtual CPDF_Object* Clone() const = 0;
50 // Create a deep copy of the object except any reference object be 48 // Create a deep copy of the object except any reference object be
51 // copied to the object it points to directly. 49 // copied to the object it points to directly.
52 virtual CPDF_Object* CloneDirectObject() const; 50 virtual CPDF_Object* CloneDirectObject() const;
53 virtual CPDF_Object* GetDirect() const; 51 virtual CPDF_Object* GetDirect() const;
54 52
53 void Release();
54
55 virtual CFX_ByteString GetString() const; 55 virtual CFX_ByteString GetString() const;
56 virtual CFX_WideString GetUnicodeText() const; 56 virtual CFX_WideString GetUnicodeText() const;
57 virtual FX_FLOAT GetNumber() const; 57 virtual FX_FLOAT GetNumber() const;
58 virtual int GetInteger() const; 58 virtual int GetInteger() const;
59 virtual CPDF_Dictionary* GetDict() const; 59 virtual CPDF_Dictionary* GetDict() const;
60 60
61 virtual void SetString(const CFX_ByteString& str); 61 virtual void SetString(const CFX_ByteString& str);
62 62
63 virtual bool IsArray() const; 63 virtual bool IsArray() const;
64 virtual bool IsBoolean() const; 64 virtual bool IsBoolean() const;
(...skipping 22 matching lines...) Expand all
87 virtual const CPDF_String* AsString() const; 87 virtual const CPDF_String* AsString() const;
88 88
89 protected: 89 protected:
90 friend class CPDF_Array; 90 friend class CPDF_Array;
91 friend class CPDF_Dictionary; 91 friend class CPDF_Dictionary;
92 friend class CPDF_Document; 92 friend class CPDF_Document;
93 friend class CPDF_IndirectObjectHolder; 93 friend class CPDF_IndirectObjectHolder;
94 friend class CPDF_Parser; 94 friend class CPDF_Parser;
95 friend class CPDF_Reference; 95 friend class CPDF_Reference;
96 friend class CPDF_Stream; 96 friend class CPDF_Stream;
97 friend struct std::default_delete<CPDF_Object>;
97 98
98 CPDF_Object() : m_ObjNum(0), m_GenNum(0) {} 99 CPDF_Object() : m_ObjNum(0), m_GenNum(0) {}
100 virtual ~CPDF_Object();
99 101
100 CPDF_Object* CloneObjectNonCyclic(bool bDirect) const; 102 CPDF_Object* CloneObjectNonCyclic(bool bDirect) const;
101 103
102 // Create a deep copy of the object with the option to either 104 // Create a deep copy of the object with the option to either
103 // copy a reference object or directly copy the object it refers to 105 // copy a reference object or directly copy the object it refers to
104 // when |bDirect| is true. 106 // when |bDirect| is true.
105 // Also check cyclic reference against |pVisited|, no copy if it is found. 107 // Also check cyclic reference against |pVisited|, no copy if it is found.
106 // Complex objects should implement their own CloneNonCyclic() 108 // Complex objects should implement their own CloneNonCyclic()
107 // function to properly check for possible loop. 109 // function to properly check for possible loop.
108 virtual CPDF_Object* CloneNonCyclic( 110 virtual CPDF_Object* CloneNonCyclic(
109 bool bDirect, 111 bool bDirect,
110 std::set<const CPDF_Object*>* pVisited) const; 112 std::set<const CPDF_Object*>* pVisited) const;
111 113
112 uint32_t m_ObjNum; 114 uint32_t m_ObjNum;
113 uint32_t m_GenNum; 115 uint32_t m_GenNum;
114 116
115 private: 117 private:
116 CPDF_Object(const CPDF_Object& src) {} 118 CPDF_Object(const CPDF_Object& src) {}
117 }; 119 };
118 120
121 using UniqueObject = std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>>;
122
119 #endif // CORE_FPDFAPI_PARSER_CPDF_OBJECT_H_ 123 #endif // CORE_FPDFAPI_PARSER_CPDF_OBJECT_H_
OLDNEW
« no previous file with comments | « core/fpdfapi/parser/cpdf_indirect_object_holder.cpp ('k') | core/fpdfapi/parser/cpdf_object.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698