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

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

Issue 2484033002: Return unique_ptr from CPDF_Object::Clone(). (Closed)
Patch Set: std::move() it 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
« no previous file with comments | « core/fpdfapi/parser/cpdf_number.cpp ('k') | core/fpdfapi/parser/cpdf_object.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 28 matching lines...) Expand all
39 }; 39 };
40 40
41 virtual ~CPDF_Object(); 41 virtual ~CPDF_Object();
42 42
43 virtual Type GetType() const = 0; 43 virtual Type GetType() const = 0;
44 uint32_t GetObjNum() const { return m_ObjNum; } 44 uint32_t GetObjNum() const { return m_ObjNum; }
45 uint32_t GetGenNum() const { return m_GenNum; } 45 uint32_t GetGenNum() const { return m_GenNum; }
46 bool IsInline() const { return m_ObjNum == 0; } 46 bool IsInline() const { return m_ObjNum == 0; }
47 47
48 // Create a deep copy of the object. 48 // Create a deep copy of the object.
49 virtual CPDF_Object* Clone() const = 0; 49 virtual std::unique_ptr<CPDF_Object> Clone() const = 0;
50
50 // Create a deep copy of the object except any reference object be 51 // Create a deep copy of the object except any reference object be
51 // copied to the object it points to directly. 52 // copied to the object it points to directly.
52 virtual CPDF_Object* CloneDirectObject() const; 53 virtual std::unique_ptr<CPDF_Object> CloneDirectObject() const;
54
53 virtual CPDF_Object* GetDirect() const; 55 virtual CPDF_Object* GetDirect() const;
54
55 virtual CFX_ByteString GetString() const; 56 virtual CFX_ByteString GetString() const;
56 virtual CFX_WideString GetUnicodeText() const; 57 virtual CFX_WideString GetUnicodeText() const;
57 virtual FX_FLOAT GetNumber() const; 58 virtual FX_FLOAT GetNumber() const;
58 virtual int GetInteger() const; 59 virtual int GetInteger() const;
59 virtual CPDF_Dictionary* GetDict() const; 60 virtual CPDF_Dictionary* GetDict() const;
60 61
61 virtual void SetString(const CFX_ByteString& str); 62 virtual void SetString(const CFX_ByteString& str);
62 63
63 virtual bool IsArray() const; 64 virtual bool IsArray() const;
64 virtual bool IsBoolean() const; 65 virtual bool IsBoolean() const;
(...skipping 25 matching lines...) Expand all
90 friend class CPDF_Array; 91 friend class CPDF_Array;
91 friend class CPDF_Dictionary; 92 friend class CPDF_Dictionary;
92 friend class CPDF_Document; 93 friend class CPDF_Document;
93 friend class CPDF_IndirectObjectHolder; 94 friend class CPDF_IndirectObjectHolder;
94 friend class CPDF_Parser; 95 friend class CPDF_Parser;
95 friend class CPDF_Reference; 96 friend class CPDF_Reference;
96 friend class CPDF_Stream; 97 friend class CPDF_Stream;
97 98
98 CPDF_Object() : m_ObjNum(0), m_GenNum(0) {} 99 CPDF_Object() : m_ObjNum(0), m_GenNum(0) {}
99 100
100 CPDF_Object* CloneObjectNonCyclic(bool bDirect) const; 101 std::unique_ptr<CPDF_Object> CloneObjectNonCyclic(bool bDirect) const;
101 102
102 // Create a deep copy of the object with the option to either 103 // 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 104 // copy a reference object or directly copy the object it refers to
104 // when |bDirect| is true. 105 // when |bDirect| is true.
105 // Also check cyclic reference against |pVisited|, no copy if it is found. 106 // Also check cyclic reference against |pVisited|, no copy if it is found.
106 // Complex objects should implement their own CloneNonCyclic() 107 // Complex objects should implement their own CloneNonCyclic()
107 // function to properly check for possible loop. 108 // function to properly check for possible loop.
108 virtual CPDF_Object* CloneNonCyclic( 109 virtual std::unique_ptr<CPDF_Object> CloneNonCyclic(
109 bool bDirect, 110 bool bDirect,
110 std::set<const CPDF_Object*>* pVisited) const; 111 std::set<const CPDF_Object*>* pVisited) const;
111 112
112 uint32_t m_ObjNum; 113 uint32_t m_ObjNum;
113 uint32_t m_GenNum; 114 uint32_t m_GenNum;
114 115
115 private: 116 private:
116 CPDF_Object(const CPDF_Object& src) {} 117 CPDF_Object(const CPDF_Object& src) {}
117 }; 118 };
118 119
119 #endif // CORE_FPDFAPI_PARSER_CPDF_OBJECT_H_ 120 #endif // CORE_FPDFAPI_PARSER_CPDF_OBJECT_H_
OLDNEW
« no previous file with comments | « core/fpdfapi/parser/cpdf_number.cpp ('k') | core/fpdfapi/parser/cpdf_object.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698