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

Side by Side Diff: core/include/fpdfapi/fpdf_objects.h

Issue 1540693002: Get rid of a few CPDF_Object Create() methods and just use new instead. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: rebase Created 5 years 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 | « no previous file | core/src/fpdfapi/fpdf_edit/fpdf_edit_content.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 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 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_INCLUDE_FPDFAPI_FPDF_OBJECTS_H_ 7 #ifndef CORE_INCLUDE_FPDFAPI_FPDF_OBJECTS_H_
8 #define CORE_INCLUDE_FPDFAPI_FPDF_OBJECTS_H_ 8 #define CORE_INCLUDE_FPDFAPI_FPDF_OBJECTS_H_
9 9
10 #include <set> 10 #include <set>
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 CPDF_Reference* AsReference(); 108 CPDF_Reference* AsReference();
109 const CPDF_Reference* AsReference() const; 109 const CPDF_Reference* AsReference() const;
110 110
111 CPDF_Stream* AsStream(); 111 CPDF_Stream* AsStream();
112 const CPDF_Stream* AsStream() const; 112 const CPDF_Stream* AsStream() const;
113 113
114 CPDF_String* AsString(); 114 CPDF_String* AsString();
115 const CPDF_String* AsString() const; 115 const CPDF_String* AsString() const;
116 116
117 protected: 117 protected:
118 CPDF_Object(FX_DWORD type) : m_Type(type), m_ObjNum(0), m_GenNum(0) {} 118 explicit CPDF_Object(FX_DWORD type)
119 : m_Type(type), m_ObjNum(0), m_GenNum(0) {}
119 ~CPDF_Object() {} 120 ~CPDF_Object() {}
120 void Destroy(); 121 void Destroy();
121 122
122 static const int OBJECT_REF_MAX_DEPTH = 128; 123 static const int OBJECT_REF_MAX_DEPTH = 128;
123 static int s_nCurRefDepth; 124 static int s_nCurRefDepth;
124 FX_DWORD m_Type; 125 FX_DWORD m_Type;
125 FX_DWORD m_ObjNum; 126 FX_DWORD m_ObjNum;
126 FX_DWORD m_GenNum; 127 FX_DWORD m_GenNum;
127 128
128 friend class CPDF_IndirectObjects; 129 friend class CPDF_IndirectObjects;
129 friend class CPDF_Parser; 130 friend class CPDF_Parser;
130 friend class CPDF_SyntaxParser; 131 friend class CPDF_SyntaxParser;
131 132
132 private: 133 private:
133 CPDF_Object(const CPDF_Object& src) {} 134 CPDF_Object(const CPDF_Object& src) {}
134 CPDF_Object* CloneInternal(FX_BOOL bDirect, 135 CPDF_Object* CloneInternal(FX_BOOL bDirect,
135 std::set<FX_DWORD>* visited) const; 136 std::set<FX_DWORD>* visited) const;
136 }; 137 };
137 class CPDF_Boolean : public CPDF_Object { 138 class CPDF_Boolean : public CPDF_Object {
138 public: 139 public:
139 static CPDF_Boolean* Create(FX_BOOL value) { return new CPDF_Boolean(value); }
140
141 CPDF_Boolean() : CPDF_Object(PDFOBJ_BOOLEAN), m_bValue(false) {} 140 CPDF_Boolean() : CPDF_Object(PDFOBJ_BOOLEAN), m_bValue(false) {}
142 CPDF_Boolean(FX_BOOL value) : CPDF_Object(PDFOBJ_BOOLEAN), m_bValue(value) {} 141 explicit CPDF_Boolean(FX_BOOL value)
142 : CPDF_Object(PDFOBJ_BOOLEAN), m_bValue(value) {}
143 143
144 FX_BOOL Identical(CPDF_Boolean* pOther) const { 144 FX_BOOL Identical(CPDF_Boolean* pOther) const {
145 return m_bValue == pOther->m_bValue; 145 return m_bValue == pOther->m_bValue;
146 } 146 }
147 147
148 protected: 148 protected:
149 FX_BOOL m_bValue; 149 FX_BOOL m_bValue;
150 friend class CPDF_Object; 150 friend class CPDF_Object;
151 }; 151 };
152 inline CPDF_Boolean* ToBoolean(CPDF_Object* obj) { 152 inline CPDF_Boolean* ToBoolean(CPDF_Object* obj) {
153 return obj ? obj->AsBoolean() : nullptr; 153 return obj ? obj->AsBoolean() : nullptr;
154 } 154 }
155 inline const CPDF_Boolean* ToBoolean(const CPDF_Object* obj) { 155 inline const CPDF_Boolean* ToBoolean(const CPDF_Object* obj) {
156 return obj ? obj->AsBoolean() : nullptr; 156 return obj ? obj->AsBoolean() : nullptr;
157 } 157 }
158 158
159 class CPDF_Number : public CPDF_Object { 159 class CPDF_Number : public CPDF_Object {
160 public: 160 public:
161 static CPDF_Number* Create(int value) { return new CPDF_Number(value); }
162
163 static CPDF_Number* Create(FX_FLOAT value) { return new CPDF_Number(value); }
164
165 static CPDF_Number* Create(const CFX_ByteStringC& str) {
166 return new CPDF_Number(str);
167 }
168
169 CPDF_Number() : CPDF_Object(PDFOBJ_NUMBER), m_bInteger(TRUE), m_Integer(0) {} 161 CPDF_Number() : CPDF_Object(PDFOBJ_NUMBER), m_bInteger(TRUE), m_Integer(0) {}
170 162
171 CPDF_Number(int value); 163 explicit CPDF_Number(int value);
172 164
173 CPDF_Number(FX_FLOAT value); 165 explicit CPDF_Number(FX_FLOAT value);
174 166
175 CPDF_Number(const CFX_ByteStringC& str); 167 explicit CPDF_Number(const CFX_ByteStringC& str);
176 168
177 FX_BOOL Identical(CPDF_Number* pOther) const; 169 FX_BOOL Identical(CPDF_Number* pOther) const;
178 170
179 CFX_ByteString GetString() const; 171 CFX_ByteString GetString() const;
180 172
181 void SetString(const CFX_ByteStringC& str); 173 void SetString(const CFX_ByteStringC& str);
182 174
183 FX_BOOL IsInteger() const { return m_bInteger; } 175 FX_BOOL IsInteger() const { return m_bInteger; }
184 176
185 int GetInteger() const { return m_bInteger ? m_Integer : (int)m_Float; } 177 int GetInteger() const { return m_bInteger ? m_Integer : (int)m_Float; }
(...skipping 22 matching lines...) Expand all
208 }; 200 };
209 inline CPDF_Number* ToNumber(CPDF_Object* obj) { 201 inline CPDF_Number* ToNumber(CPDF_Object* obj) {
210 return obj ? obj->AsNumber() : nullptr; 202 return obj ? obj->AsNumber() : nullptr;
211 } 203 }
212 inline const CPDF_Number* ToNumber(const CPDF_Object* obj) { 204 inline const CPDF_Number* ToNumber(const CPDF_Object* obj) {
213 return obj ? obj->AsNumber() : nullptr; 205 return obj ? obj->AsNumber() : nullptr;
214 } 206 }
215 207
216 class CPDF_String : public CPDF_Object { 208 class CPDF_String : public CPDF_Object {
217 public: 209 public:
218 static CPDF_String* Create(const CFX_ByteString& str, FX_BOOL bHex = FALSE) {
219 return new CPDF_String(str, bHex);
220 }
221
222 static CPDF_String* Create(const CFX_WideString& str) {
223 return new CPDF_String(str);
224 }
225
226 CPDF_String() : CPDF_Object(PDFOBJ_STRING), m_bHex(FALSE) {} 210 CPDF_String() : CPDF_Object(PDFOBJ_STRING), m_bHex(FALSE) {}
227 211
228 CPDF_String(const CFX_ByteString& str, FX_BOOL bHex = FALSE) 212 CPDF_String(const CFX_ByteString& str, FX_BOOL bHex)
229 : CPDF_Object(PDFOBJ_STRING), m_String(str), m_bHex(bHex) {} 213 : CPDF_Object(PDFOBJ_STRING), m_String(str), m_bHex(bHex) {}
230 214
231 CPDF_String(const CFX_WideString& str); 215 explicit CPDF_String(const CFX_WideString& str);
232 216
233 CFX_ByteString& GetString() { return m_String; } 217 CFX_ByteString& GetString() { return m_String; }
234 218
235 FX_BOOL Identical(CPDF_String* pOther) const { 219 FX_BOOL Identical(CPDF_String* pOther) const {
236 return m_String == pOther->m_String; 220 return m_String == pOther->m_String;
237 } 221 }
238 222
239 FX_BOOL IsHex() const { return m_bHex; } 223 FX_BOOL IsHex() const { return m_bHex; }
240 224
241 protected: 225 protected:
242 CFX_ByteString m_String; 226 CFX_ByteString m_String;
243 227
244 FX_BOOL m_bHex; 228 FX_BOOL m_bHex;
245 friend class CPDF_Object; 229 friend class CPDF_Object;
246 }; 230 };
247 inline CPDF_String* ToString(CPDF_Object* obj) { 231 inline CPDF_String* ToString(CPDF_Object* obj) {
248 return obj ? obj->AsString() : nullptr; 232 return obj ? obj->AsString() : nullptr;
249 } 233 }
250 inline const CPDF_String* ToString(const CPDF_Object* obj) { 234 inline const CPDF_String* ToString(const CPDF_Object* obj) {
251 return obj ? obj->AsString() : nullptr; 235 return obj ? obj->AsString() : nullptr;
252 } 236 }
253 237
254 class CPDF_Name : public CPDF_Object { 238 class CPDF_Name : public CPDF_Object {
255 public: 239 public:
256 static CPDF_Name* Create(const CFX_ByteString& str) { 240 explicit CPDF_Name(const CFX_ByteString& str)
257 return new CPDF_Name(str);
258 }
259
260 static CPDF_Name* Create(const CFX_ByteStringC& str) {
261 return new CPDF_Name(str);
262 }
263
264 static CPDF_Name* Create(const FX_CHAR* str) { return new CPDF_Name(str); }
265
266 CPDF_Name(const CFX_ByteString& str)
267 : CPDF_Object(PDFOBJ_NAME), m_Name(str) {} 241 : CPDF_Object(PDFOBJ_NAME), m_Name(str) {}
268 CPDF_Name(const CFX_ByteStringC& str) 242 explicit CPDF_Name(const CFX_ByteStringC& str)
269 : CPDF_Object(PDFOBJ_NAME), m_Name(str) {} 243 : CPDF_Object(PDFOBJ_NAME), m_Name(str) {}
270 CPDF_Name(const FX_CHAR* str) : CPDF_Object(PDFOBJ_NAME), m_Name(str) {} 244 explicit CPDF_Name(const FX_CHAR* str)
245 : CPDF_Object(PDFOBJ_NAME), m_Name(str) {}
271 246
272 CFX_ByteString& GetString() { return m_Name; } 247 CFX_ByteString& GetString() { return m_Name; }
273 248
274 FX_BOOL Identical(CPDF_Name* pOther) const { 249 FX_BOOL Identical(CPDF_Name* pOther) const {
275 return m_Name == pOther->m_Name; 250 return m_Name == pOther->m_Name;
276 } 251 }
277 252
278 protected: 253 protected:
279 CFX_ByteString m_Name; 254 CFX_ByteString m_Name;
280 friend class CPDF_Object; 255 friend class CPDF_Object;
281 }; 256 };
282 inline CPDF_Name* ToName(CPDF_Object* obj) { 257 inline CPDF_Name* ToName(CPDF_Object* obj) {
283 return obj ? obj->AsName() : nullptr; 258 return obj ? obj->AsName() : nullptr;
284 } 259 }
285 inline const CPDF_Name* ToName(const CPDF_Object* obj) { 260 inline const CPDF_Name* ToName(const CPDF_Object* obj) {
286 return obj ? obj->AsName() : nullptr; 261 return obj ? obj->AsName() : nullptr;
287 } 262 }
288 263
289 class CPDF_Array : public CPDF_Object { 264 class CPDF_Array : public CPDF_Object {
290 public: 265 public:
291 static CPDF_Array* Create() { return new CPDF_Array(); }
292
293 CPDF_Array() : CPDF_Object(PDFOBJ_ARRAY) {} 266 CPDF_Array() : CPDF_Object(PDFOBJ_ARRAY) {}
294 267
295 FX_DWORD GetCount() const { return m_Objects.GetSize(); } 268 FX_DWORD GetCount() const { return m_Objects.GetSize(); }
296 269
297 CPDF_Object* GetElement(FX_DWORD index) const; 270 CPDF_Object* GetElement(FX_DWORD index) const;
298 271
299 CPDF_Object* GetElementValue(FX_DWORD index) const; 272 CPDF_Object* GetElementValue(FX_DWORD index) const;
300 273
301 CFX_Matrix GetMatrix(); 274 CFX_Matrix GetMatrix();
302 275
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 }; 331 };
359 inline CPDF_Array* ToArray(CPDF_Object* obj) { 332 inline CPDF_Array* ToArray(CPDF_Object* obj) {
360 return obj ? obj->AsArray() : nullptr; 333 return obj ? obj->AsArray() : nullptr;
361 } 334 }
362 inline const CPDF_Array* ToArray(const CPDF_Object* obj) { 335 inline const CPDF_Array* ToArray(const CPDF_Object* obj) {
363 return obj ? obj->AsArray() : nullptr; 336 return obj ? obj->AsArray() : nullptr;
364 } 337 }
365 338
366 class CPDF_Dictionary : public CPDF_Object { 339 class CPDF_Dictionary : public CPDF_Object {
367 public: 340 public:
368 static CPDF_Dictionary* Create() { return new CPDF_Dictionary(); }
369
370 CPDF_Dictionary() : CPDF_Object(PDFOBJ_DICTIONARY) {} 341 CPDF_Dictionary() : CPDF_Object(PDFOBJ_DICTIONARY) {}
371 342
372 CPDF_Object* GetElement(const CFX_ByteStringC& key) const; 343 CPDF_Object* GetElement(const CFX_ByteStringC& key) const;
373 344
374 CPDF_Object* GetElementValue(const CFX_ByteStringC& key) const; 345 CPDF_Object* GetElementValue(const CFX_ByteStringC& key) const;
375 346
376 CFX_ByteString GetString(const CFX_ByteStringC& key) const; 347 CFX_ByteString GetString(const CFX_ByteStringC& key) const;
377 348
378 CFX_ByteStringC GetConstString(const CFX_ByteStringC& key) const; 349 CFX_ByteStringC GetConstString(const CFX_ByteStringC& key) const;
379 350
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 529
559 CPDF_Dictionary* m_pImageParam; 530 CPDF_Dictionary* m_pImageParam;
560 531
561 const CPDF_Stream* m_pStream; 532 const CPDF_Stream* m_pStream;
562 533
563 uint8_t* m_pSrcData; 534 uint8_t* m_pSrcData;
564 }; 535 };
565 536
566 class CPDF_Null : public CPDF_Object { 537 class CPDF_Null : public CPDF_Object {
567 public: 538 public:
568 static CPDF_Null* Create() { return new CPDF_Null(); }
569
570 CPDF_Null() : CPDF_Object(PDFOBJ_NULL) {} 539 CPDF_Null() : CPDF_Object(PDFOBJ_NULL) {}
571 }; 540 };
541
572 class CPDF_Reference : public CPDF_Object { 542 class CPDF_Reference : public CPDF_Object {
573 public: 543 public:
574 CPDF_Reference(CPDF_IndirectObjects* pDoc, int objnum) 544 CPDF_Reference(CPDF_IndirectObjects* pDoc, int objnum)
575 : CPDF_Object(PDFOBJ_REFERENCE), m_pObjList(pDoc), m_RefObjNum(objnum) {} 545 : CPDF_Object(PDFOBJ_REFERENCE), m_pObjList(pDoc), m_RefObjNum(objnum) {}
576 546
577 CPDF_IndirectObjects* GetObjList() const { return m_pObjList; } 547 CPDF_IndirectObjects* GetObjList() const { return m_pObjList; }
578 548
579 FX_DWORD GetRefObjNum() const { return m_RefObjNum; } 549 FX_DWORD GetRefObjNum() const { return m_RefObjNum; }
580 550
581 void SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum); 551 void SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum);
(...skipping 10 matching lines...) Expand all
592 }; 562 };
593 inline CPDF_Reference* ToReference(CPDF_Object* obj) { 563 inline CPDF_Reference* ToReference(CPDF_Object* obj) {
594 return obj ? obj->AsReference() : nullptr; 564 return obj ? obj->AsReference() : nullptr;
595 } 565 }
596 inline const CPDF_Reference* ToReference(const CPDF_Object* obj) { 566 inline const CPDF_Reference* ToReference(const CPDF_Object* obj) {
597 return obj ? obj->AsReference() : nullptr; 567 return obj ? obj->AsReference() : nullptr;
598 } 568 }
599 569
600 class CPDF_IndirectObjects { 570 class CPDF_IndirectObjects {
601 public: 571 public:
602 CPDF_IndirectObjects(CPDF_Parser* pParser); 572 explicit CPDF_IndirectObjects(CPDF_Parser* pParser);
603 573
604 ~CPDF_IndirectObjects(); 574 ~CPDF_IndirectObjects();
605 575
606 CPDF_Object* GetIndirectObject(FX_DWORD objnum, 576 CPDF_Object* GetIndirectObject(FX_DWORD objnum,
607 struct PARSE_CONTEXT* pContext = NULL); 577 struct PARSE_CONTEXT* pContext = NULL);
608 578
609 int GetIndirectType(FX_DWORD objnum); 579 int GetIndirectType(FX_DWORD objnum);
610 580
611 FX_DWORD AddIndirectObject(CPDF_Object* pObj); 581 FX_DWORD AddIndirectObject(CPDF_Object* pObj);
612 582
(...skipping 15 matching lines...) Expand all
628 598
629 protected: 599 protected:
630 CFX_MapPtrToPtr m_IndirectObjs; 600 CFX_MapPtrToPtr m_IndirectObjs;
631 601
632 CPDF_Parser* m_pParser; 602 CPDF_Parser* m_pParser;
633 603
634 FX_DWORD m_LastObjNum; 604 FX_DWORD m_LastObjNum;
635 }; 605 };
636 606
637 #endif // CORE_INCLUDE_FPDFAPI_FPDF_OBJECTS_H_ 607 #endif // CORE_INCLUDE_FPDFAPI_FPDF_OBJECTS_H_
OLDNEW
« no previous file with comments | « no previous file | core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698