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

Side by Side Diff: core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp

Issue 1418923005: Revert "Revert "Add type cast definitions for CPDF_Reference."" (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 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 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 #include "../../../include/fpdfapi/fpdf_parser.h" 7 #include "../../../include/fpdfapi/fpdf_parser.h"
8 #include "../../../include/fxcrt/fx_string.h" 8 #include "../../../include/fxcrt/fx_string.h"
9 9
10 // static 10 // static
(...skipping 30 matching lines...) Expand all
41 switch (m_Type) { 41 switch (m_Type) {
42 case PDFOBJ_BOOLEAN: 42 case PDFOBJ_BOOLEAN:
43 return AsBoolean()->m_bValue ? "true" : "false"; 43 return AsBoolean()->m_bValue ? "true" : "false";
44 case PDFOBJ_NUMBER: 44 case PDFOBJ_NUMBER:
45 return AsNumber()->GetString(); 45 return AsNumber()->GetString();
46 case PDFOBJ_STRING: 46 case PDFOBJ_STRING:
47 return AsString()->m_String; 47 return AsString()->m_String;
48 case PDFOBJ_NAME: 48 case PDFOBJ_NAME:
49 return AsName()->m_Name; 49 return AsName()->m_Name;
50 case PDFOBJ_REFERENCE: { 50 case PDFOBJ_REFERENCE: {
51 CPDF_Reference* pRef = (CPDF_Reference*)(void*)this; 51 const CPDF_Reference* pRef = AsReference();
52 if (pRef->m_pObjList == NULL) { 52 if (!pRef->m_pObjList)
53 break; 53 break;
54 } 54
55 CPDF_Object* pObj = 55 CPDF_Object* pObj =
56 pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum()); 56 pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum());
57 if (pObj == NULL) { 57 return pObj ? pObj->GetString() : CFX_ByteString();
58 return CFX_ByteString();
59 }
60 return pObj->GetString();
61 } 58 }
62 } 59 }
63 return CFX_ByteString(); 60 return CFX_ByteString();
64 } 61 }
65 CFX_ByteStringC CPDF_Object::GetConstString() const { 62 CFX_ByteStringC CPDF_Object::GetConstString() const {
66 switch (m_Type) { 63 switch (m_Type) {
67 case PDFOBJ_STRING: { 64 case PDFOBJ_STRING: {
68 CFX_ByteString str = AsString()->m_String; 65 CFX_ByteString str = AsString()->m_String;
69 return CFX_ByteStringC((const uint8_t*)str, str.GetLength()); 66 return CFX_ByteStringC((const uint8_t*)str, str.GetLength());
70 } 67 }
71 case PDFOBJ_NAME: { 68 case PDFOBJ_NAME: {
72 CFX_ByteString name = AsName()->m_Name; 69 CFX_ByteString name = AsName()->m_Name;
73 return CFX_ByteStringC((const uint8_t*)name, name.GetLength()); 70 return CFX_ByteStringC((const uint8_t*)name, name.GetLength());
74 } 71 }
75 case PDFOBJ_REFERENCE: { 72 case PDFOBJ_REFERENCE: {
76 CPDF_Reference* pRef = (CPDF_Reference*)(void*)this; 73 const CPDF_Reference* pRef = AsReference();
77 if (pRef->m_pObjList == NULL) { 74 if (!pRef->m_pObjList)
78 break; 75 break;
79 } 76
80 CPDF_Object* pObj = 77 CPDF_Object* pObj =
81 pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum()); 78 pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum());
82 if (pObj == NULL) { 79 return pObj ? pObj->GetConstString() : CFX_ByteStringC();
83 return CFX_ByteStringC();
84 }
85 return pObj->GetConstString();
86 } 80 }
87 } 81 }
88 return CFX_ByteStringC(); 82 return CFX_ByteStringC();
89 } 83 }
90 FX_FLOAT CPDF_Object::GetNumber() const { 84 FX_FLOAT CPDF_Object::GetNumber() const {
91 switch (m_Type) { 85 switch (m_Type) {
92 case PDFOBJ_NUMBER: 86 case PDFOBJ_NUMBER:
93 return AsNumber()->GetNumber(); 87 return AsNumber()->GetNumber();
94 case PDFOBJ_REFERENCE: { 88 case PDFOBJ_REFERENCE: {
95 CPDF_Reference* pRef = (CPDF_Reference*)(void*)this; 89 const CPDF_Reference* pRef = AsReference();
96 if (pRef->m_pObjList == NULL) { 90 if (!pRef->m_pObjList)
97 break; 91 break;
98 } 92
99 CPDF_Object* pObj = 93 CPDF_Object* pObj =
100 pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum()); 94 pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum());
101 if (pObj == NULL) { 95 return pObj ? pObj->GetNumber() : 0;
102 return 0;
103 }
104 return pObj->GetNumber();
105 } 96 }
106 } 97 }
107 return 0; 98 return 0;
108 } 99 }
109 FX_FLOAT CPDF_Object::GetNumber16() const { 100 FX_FLOAT CPDF_Object::GetNumber16() const {
110 return GetNumber(); 101 return GetNumber();
111 } 102 }
112 int CPDF_Object::GetInteger() const { 103 int CPDF_Object::GetInteger() const {
113 CFX_AutoRestorer<int> restorer(&s_nCurRefDepth); 104 CFX_AutoRestorer<int> restorer(&s_nCurRefDepth);
114 if (++s_nCurRefDepth > OBJECT_REF_MAX_DEPTH) { 105 if (++s_nCurRefDepth > OBJECT_REF_MAX_DEPTH) {
115 return 0; 106 return 0;
116 } 107 }
117 switch (m_Type) { 108 switch (m_Type) {
118 case PDFOBJ_BOOLEAN: 109 case PDFOBJ_BOOLEAN:
119 return AsBoolean()->m_bValue; 110 return AsBoolean()->m_bValue;
120 case PDFOBJ_NUMBER: 111 case PDFOBJ_NUMBER:
121 return AsNumber()->GetInteger(); 112 return AsNumber()->GetInteger();
122 case PDFOBJ_REFERENCE: { 113 case PDFOBJ_REFERENCE: {
123 CPDF_Reference* pRef = (CPDF_Reference*)(void*)this; 114 const CPDF_Reference* pRef = AsReference();
124 PARSE_CONTEXT context; 115 PARSE_CONTEXT context;
125 FXSYS_memset(&context, 0, sizeof(PARSE_CONTEXT)); 116 FXSYS_memset(&context, 0, sizeof(PARSE_CONTEXT));
126 if (pRef->m_pObjList == NULL) { 117 if (!pRef->m_pObjList)
127 return 0; 118 return 0;
128 } 119
129 CPDF_Object* pObj = 120 CPDF_Object* pObj =
130 pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum(), &context); 121 pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum(), &context);
131 if (pObj == NULL) { 122 return pObj ? pObj->GetInteger() : 0;
132 return 0;
133 }
134 return pObj->GetInteger();
135 } 123 }
136 } 124 }
137 return 0; 125 return 0;
138 } 126 }
139 127
140 CPDF_Dictionary* CPDF_Object::GetDict() const { 128 CPDF_Dictionary* CPDF_Object::GetDict() const {
141 switch (m_Type) { 129 switch (m_Type) {
142 case PDFOBJ_DICTIONARY: 130 case PDFOBJ_DICTIONARY:
143 // The method should be made non-const if we want to not be const. 131 // The method should be made non-const if we want to not be const.
144 // See bug #234. 132 // See bug #234.
145 return const_cast<CPDF_Dictionary*>(AsDictionary()); 133 return const_cast<CPDF_Dictionary*>(AsDictionary());
146 case PDFOBJ_STREAM: 134 case PDFOBJ_STREAM:
147 return AsStream()->GetDict(); 135 return AsStream()->GetDict();
148 case PDFOBJ_REFERENCE: { 136 case PDFOBJ_REFERENCE: {
149 CPDF_Reference* pRef = (CPDF_Reference*)this; 137 const CPDF_Reference* pRef = AsReference();
150 CPDF_IndirectObjects* pIndirect = pRef->GetObjList(); 138 CPDF_IndirectObjects* pIndirect = pRef->GetObjList();
151 if (!pIndirect) 139 if (!pIndirect)
152 return nullptr; 140 return nullptr;
153 CPDF_Object* pObj = pIndirect->GetIndirectObject(pRef->GetRefObjNum()); 141 CPDF_Object* pObj = pIndirect->GetIndirectObject(pRef->GetRefObjNum());
154 if (!pObj || (pObj == this)) 142 if (!pObj || (pObj == this))
155 return nullptr; 143 return nullptr;
156 return pObj->GetDict(); 144 return pObj->GetDict();
157 } 145 }
158 default: 146 default:
159 return nullptr; 147 return nullptr;
(...skipping 17 matching lines...) Expand all
177 case PDFOBJ_STRING: 165 case PDFOBJ_STRING:
178 AsString()->m_String = str; 166 AsString()->m_String = str;
179 return; 167 return;
180 case PDFOBJ_NAME: 168 case PDFOBJ_NAME:
181 AsName()->m_Name = str; 169 AsName()->m_Name = str;
182 return; 170 return;
183 } 171 }
184 ASSERT(FALSE); 172 ASSERT(FALSE);
185 } 173 }
186 int CPDF_Object::GetDirectType() const { 174 int CPDF_Object::GetDirectType() const {
187 if (m_Type != PDFOBJ_REFERENCE) { 175 const CPDF_Reference* pRef = AsReference();
176 if (!pRef)
188 return m_Type; 177 return m_Type;
189 }
190 CPDF_Reference* pRef = (CPDF_Reference*)this;
191 return pRef->m_pObjList->GetIndirectType(pRef->GetRefObjNum()); 178 return pRef->m_pObjList->GetIndirectType(pRef->GetRefObjNum());
192 } 179 }
193 FX_BOOL CPDF_Object::IsIdentical(CPDF_Object* pOther) const { 180 FX_BOOL CPDF_Object::IsIdentical(CPDF_Object* pOther) const {
194 if (this == pOther) { 181 if (this == pOther)
195 return TRUE; 182 return TRUE;
196 } 183 if (!pOther)
197 if (pOther == NULL) {
198 return FALSE; 184 return FALSE;
199 }
200 if (pOther->m_Type != m_Type) { 185 if (pOther->m_Type != m_Type) {
201 if (m_Type == PDFOBJ_REFERENCE && GetDirect()) { 186 if (IsReference() && GetDirect())
202 return GetDirect()->IsIdentical(pOther); 187 return GetDirect()->IsIdentical(pOther);
203 } 188 if (pOther->IsReference())
204 if (pOther->m_Type == PDFOBJ_REFERENCE) {
205 return IsIdentical(pOther->GetDirect()); 189 return IsIdentical(pOther->GetDirect());
206 }
207 return FALSE; 190 return FALSE;
208 } 191 }
209 switch (m_Type) { 192 switch (m_Type) {
210 case PDFOBJ_BOOLEAN: 193 case PDFOBJ_BOOLEAN:
211 return AsBoolean()->Identical(pOther->AsBoolean()); 194 return AsBoolean()->Identical(pOther->AsBoolean());
212 case PDFOBJ_NUMBER: 195 case PDFOBJ_NUMBER:
213 return AsNumber()->Identical(pOther->AsNumber()); 196 return AsNumber()->Identical(pOther->AsNumber());
214 case PDFOBJ_STRING: 197 case PDFOBJ_STRING:
215 return AsString()->Identical(pOther->AsString()); 198 return AsString()->Identical(pOther->AsString());
216 case PDFOBJ_NAME: 199 case PDFOBJ_NAME:
217 return AsName()->Identical(pOther->AsName()); 200 return AsName()->Identical(pOther->AsName());
218 case PDFOBJ_ARRAY: 201 case PDFOBJ_ARRAY:
219 return AsArray()->Identical(pOther->AsArray()); 202 return AsArray()->Identical(pOther->AsArray());
220 case PDFOBJ_DICTIONARY: 203 case PDFOBJ_DICTIONARY:
221 return AsDictionary()->Identical(pOther->AsDictionary()); 204 return AsDictionary()->Identical(pOther->AsDictionary());
222 case PDFOBJ_NULL: 205 case PDFOBJ_NULL:
223 return TRUE; 206 return TRUE;
224 case PDFOBJ_STREAM: 207 case PDFOBJ_STREAM:
225 return AsStream()->Identical(pOther->AsStream()); 208 return AsStream()->Identical(pOther->AsStream());
226 case PDFOBJ_REFERENCE: 209 case PDFOBJ_REFERENCE:
227 return (((CPDF_Reference*)this)->Identical((CPDF_Reference*)pOther)); 210 return AsReference()->Identical(pOther->AsReference());
228 } 211 }
229 return FALSE; 212 return FALSE;
230 } 213 }
231 CPDF_Object* CPDF_Object::GetDirect() const { 214 CPDF_Object* CPDF_Object::GetDirect() const {
232 if (m_Type != PDFOBJ_REFERENCE) { 215 const CPDF_Reference* pRef = AsReference();
233 return (CPDF_Object*)this; 216 if (!pRef)
234 } 217 return const_cast<CPDF_Object*>(this);
235 CPDF_Reference* pRef = (CPDF_Reference*)(void*)this; 218 if (!pRef->m_pObjList)
236 if (pRef->m_pObjList == NULL) { 219 return nullptr;
237 return NULL;
238 }
239 return pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum()); 220 return pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum());
240 } 221 }
241 CPDF_Object* CPDF_Object::Clone(FX_BOOL bDirect) const { 222 CPDF_Object* CPDF_Object::Clone(FX_BOOL bDirect) const {
242 CFX_MapPtrToPtr visited; 223 CFX_MapPtrToPtr visited;
243 return CloneInternal(bDirect, &visited); 224 return CloneInternal(bDirect, &visited);
244 } 225 }
245 CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect, 226 CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect,
246 CFX_MapPtrToPtr* visited) const { 227 CFX_MapPtrToPtr* visited) const {
247 switch (m_Type) { 228 switch (m_Type) {
248 case PDFOBJ_BOOLEAN: 229 case PDFOBJ_BOOLEAN:
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 CPDF_StreamAcc acc; 269 CPDF_StreamAcc acc;
289 acc.LoadAllData(pThis, TRUE); 270 acc.LoadAllData(pThis, TRUE);
290 FX_DWORD streamSize = acc.GetSize(); 271 FX_DWORD streamSize = acc.GetSize();
291 CPDF_Dictionary* pDict = pThis->GetDict(); 272 CPDF_Dictionary* pDict = pThis->GetDict();
292 if (pDict) { 273 if (pDict) {
293 pDict = ToDictionary(pDict->CloneInternal(bDirect, visited)); 274 pDict = ToDictionary(pDict->CloneInternal(bDirect, visited));
294 } 275 }
295 return new CPDF_Stream(acc.DetachData(), streamSize, pDict); 276 return new CPDF_Stream(acc.DetachData(), streamSize, pDict);
296 } 277 }
297 case PDFOBJ_REFERENCE: { 278 case PDFOBJ_REFERENCE: {
298 CPDF_Reference* pRef = (CPDF_Reference*)this; 279 const CPDF_Reference* pRef = AsReference();
299 FX_DWORD obj_num = pRef->GetRefObjNum(); 280 FX_DWORD obj_num = pRef->GetRefObjNum();
300 if (bDirect && !visited->GetValueAt((void*)(uintptr_t)obj_num)) { 281 if (bDirect && !visited->GetValueAt((void*)(uintptr_t)obj_num)) {
301 visited->SetAt((void*)(uintptr_t)obj_num, (void*)1); 282 visited->SetAt((void*)(uintptr_t)obj_num, (void*)1);
302 if (!pRef->GetDirect()) 283 if (!pRef->GetDirect())
303 return nullptr; 284 return nullptr;
304 285
305 return pRef->GetDirect()->CloneInternal(TRUE, visited); 286 return pRef->GetDirect()->CloneInternal(TRUE, visited);
306 } 287 }
307 return new CPDF_Reference(pRef->m_pObjList, obj_num); 288 return new CPDF_Reference(pRef->m_pObjList, obj_num);
308 } 289 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 } 354 }
374 355
375 CPDF_Number* CPDF_Object::AsNumber() { 356 CPDF_Number* CPDF_Object::AsNumber() {
376 return IsNumber() ? static_cast<CPDF_Number*>(this) : nullptr; 357 return IsNumber() ? static_cast<CPDF_Number*>(this) : nullptr;
377 } 358 }
378 359
379 const CPDF_Number* CPDF_Object::AsNumber() const { 360 const CPDF_Number* CPDF_Object::AsNumber() const {
380 return IsNumber() ? static_cast<const CPDF_Number*>(this) : nullptr; 361 return IsNumber() ? static_cast<const CPDF_Number*>(this) : nullptr;
381 } 362 }
382 363
364 CPDF_Reference* CPDF_Object::AsReference() {
365 return IsReference() ? static_cast<CPDF_Reference*>(this) : nullptr;
366 }
367
368 const CPDF_Reference* CPDF_Object::AsReference() const {
369 return IsReference() ? static_cast<const CPDF_Reference*>(this) : nullptr;
370 }
371
383 CPDF_Stream* CPDF_Object::AsStream() { 372 CPDF_Stream* CPDF_Object::AsStream() {
384 return IsStream() ? static_cast<CPDF_Stream*>(this) : nullptr; 373 return IsStream() ? static_cast<CPDF_Stream*>(this) : nullptr;
385 } 374 }
386 375
387 const CPDF_Stream* CPDF_Object::AsStream() const { 376 const CPDF_Stream* CPDF_Object::AsStream() const {
388 return IsStream() ? static_cast<const CPDF_Stream*>(this) : nullptr; 377 return IsStream() ? static_cast<const CPDF_Stream*>(this) : nullptr;
389 } 378 }
390 379
391 CPDF_String* CPDF_Object::AsString() { 380 CPDF_String* CPDF_Object::AsString() {
392 return IsString() ? static_cast<CPDF_String*>(this) : nullptr; 381 return IsString() ? static_cast<CPDF_String*>(this) : nullptr;
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 m_Map.Lookup(key, (void*&)p); 621 m_Map.Lookup(key, (void*&)p);
633 if (p) { 622 if (p) {
634 return p->GetConstString(); 623 return p->GetConstString();
635 } 624 }
636 return CFX_ByteStringC(); 625 return CFX_ByteStringC();
637 } 626 }
638 CFX_WideString CPDF_Dictionary::GetUnicodeText(const CFX_ByteStringC& key, 627 CFX_WideString CPDF_Dictionary::GetUnicodeText(const CFX_ByteStringC& key,
639 CFX_CharMap* pCharMap) const { 628 CFX_CharMap* pCharMap) const {
640 CPDF_Object* p = NULL; 629 CPDF_Object* p = NULL;
641 m_Map.Lookup(key, (void*&)p); 630 m_Map.Lookup(key, (void*&)p);
642 if (p) { 631 if (CPDF_Reference* pRef = ToReference(p))
643 if (p->GetType() == PDFOBJ_REFERENCE) { 632 p = pRef->GetDirect();
644 p = ((CPDF_Reference*)p)->GetDirect(); 633 return p ? p->GetUnicodeText(pCharMap) : CFX_WideString();
645 if (p) {
646 return p->GetUnicodeText(pCharMap);
647 }
648 } else {
649 return p->GetUnicodeText(pCharMap);
650 }
651 }
652 return CFX_WideString();
653 } 634 }
654 CFX_ByteString CPDF_Dictionary::GetString(const CFX_ByteStringC& key, 635 CFX_ByteString CPDF_Dictionary::GetString(const CFX_ByteStringC& key,
655 const CFX_ByteStringC& def) const { 636 const CFX_ByteStringC& def) const {
656 CPDF_Object* p = NULL; 637 CPDF_Object* p = NULL;
657 m_Map.Lookup(key, (void*&)p); 638 m_Map.Lookup(key, (void*&)p);
658 if (p) { 639 if (p) {
659 return p->GetString(); 640 return p->GetString();
660 } 641 }
661 return CFX_ByteString(def); 642 return CFX_ByteString(def);
662 } 643 }
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 } 695 }
715 CPDF_Array* CPDF_Dictionary::GetArray(const CFX_ByteStringC& key) const { 696 CPDF_Array* CPDF_Dictionary::GetArray(const CFX_ByteStringC& key) const {
716 return ToArray(GetElementValue(key)); 697 return ToArray(GetElementValue(key));
717 } 698 }
718 CPDF_Stream* CPDF_Dictionary::GetStream(const CFX_ByteStringC& key) const { 699 CPDF_Stream* CPDF_Dictionary::GetStream(const CFX_ByteStringC& key) const {
719 return ToStream(GetElementValue(key)); 700 return ToStream(GetElementValue(key));
720 } 701 }
721 CFX_FloatRect CPDF_Dictionary::GetRect(const CFX_ByteStringC& key) const { 702 CFX_FloatRect CPDF_Dictionary::GetRect(const CFX_ByteStringC& key) const {
722 CFX_FloatRect rect; 703 CFX_FloatRect rect;
723 CPDF_Array* pArray = GetArray(key); 704 CPDF_Array* pArray = GetArray(key);
724 if (pArray) { 705 if (pArray)
725 rect = pArray->GetRect(); 706 rect = pArray->GetRect();
726 }
727 return rect; 707 return rect;
728 } 708 }
729 CFX_AffineMatrix CPDF_Dictionary::GetMatrix(const CFX_ByteStringC& key) const { 709 CFX_AffineMatrix CPDF_Dictionary::GetMatrix(const CFX_ByteStringC& key) const {
730 CFX_AffineMatrix matrix; 710 CFX_AffineMatrix matrix;
731 CPDF_Array* pArray = GetArray(key); 711 CPDF_Array* pArray = GetArray(key);
732 if (pArray) { 712 if (pArray)
733 matrix = pArray->GetMatrix(); 713 matrix = pArray->GetMatrix();
734 }
735 return matrix; 714 return matrix;
736 } 715 }
737 FX_BOOL CPDF_Dictionary::KeyExist(const CFX_ByteStringC& key) const { 716 FX_BOOL CPDF_Dictionary::KeyExist(const CFX_ByteStringC& key) const {
738 void* value; 717 void* value;
739 return m_Map.Lookup(key, value); 718 return m_Map.Lookup(key, value);
740 } 719 }
741 void CPDF_Dictionary::SetAt(const CFX_ByteStringC& key, 720 void CPDF_Dictionary::SetAt(const CFX_ByteStringC& key,
742 CPDF_Object* pObj, 721 CPDF_Object* pObj,
743 CPDF_IndirectObjects* pObjs) { 722 CPDF_IndirectObjects* pObjs) {
744 ASSERT(m_Type == PDFOBJ_DICTIONARY); 723 ASSERT(m_Type == PDFOBJ_DICTIONARY);
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
1230 } 1209 }
1231 pObj->m_ObjNum = objnum; 1210 pObj->m_ObjNum = objnum;
1232 m_IndirectObjs.SetAt((void*)(uintptr_t)objnum, pObj); 1211 m_IndirectObjs.SetAt((void*)(uintptr_t)objnum, pObj);
1233 if (m_LastObjNum < objnum) { 1212 if (m_LastObjNum < objnum) {
1234 m_LastObjNum = objnum; 1213 m_LastObjNum = objnum;
1235 } 1214 }
1236 } 1215 }
1237 FX_DWORD CPDF_IndirectObjects::GetLastObjNum() const { 1216 FX_DWORD CPDF_IndirectObjects::GetLastObjNum() const {
1238 return m_LastObjNum; 1217 return m_LastObjNum;
1239 } 1218 }
OLDNEW
« no previous file with comments | « core/src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp ('k') | core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698