Commit e8cdc4628634c44aa5bae0230050e4336551fe32

Authored by m-holger
Committed by Jay Berkenbilt
1 parent e4e0f40f

Tidy QPDFXRefEntry creation

include/qpdf/QPDFXRefEntry.hh
@@ -34,10 +34,26 @@ class QPDFXRefEntry @@ -34,10 +34,26 @@ class QPDFXRefEntry
34 // 1 = "uncompressed"; field 1 = offset 34 // 1 = "uncompressed"; field 1 = offset
35 // 2 = "compressed"; field 1 = object stream number, field 2 = index 35 // 2 = "compressed"; field 1 = object stream number, field 2 = index
36 36
  37 + // Create a type 0 "free" entry.
37 QPDF_DLL 38 QPDF_DLL
38 QPDFXRefEntry(); 39 QPDFXRefEntry();
39 QPDF_DLL 40 QPDF_DLL
40 QPDFXRefEntry(int type, qpdf_offset_t field1, int field2); 41 QPDFXRefEntry(int type, qpdf_offset_t field1, int field2);
  42 + // Create a type 1 "uncompressed" entry.
  43 + QPDF_DLL
  44 + QPDFXRefEntry(qpdf_offset_t offset) :
  45 + type(1),
  46 + field1(offset)
  47 + {
  48 + }
  49 + // Create a type 2 "compressed" entry.
  50 + QPDF_DLL
  51 + QPDFXRefEntry(int stream_number, int index) :
  52 + type(2),
  53 + field1(stream_number),
  54 + field2(index)
  55 + {
  56 + }
41 57
42 QPDF_DLL 58 QPDF_DLL
43 int getType() const; 59 int getType() const;
@@ -51,9 +67,9 @@ class QPDFXRefEntry @@ -51,9 +67,9 @@ class QPDFXRefEntry
51 private: 67 private:
52 // This class does not use the Members pattern to avoid a memory 68 // This class does not use the Members pattern to avoid a memory
53 // allocation for every one of these. A lot of these get created. 69 // allocation for every one of these. A lot of these get created.
54 - int type;  
55 - qpdf_offset_t field1;  
56 - int field2; 70 + int type{0};
  71 + qpdf_offset_t field1{0};
  72 + int field2{0};
57 }; 73 };
58 74
59 #endif // QPDFXREFENTRY_HH 75 #endif // QPDFXREFENTRY_HH
libqpdf/QPDF.cc
@@ -1249,11 +1249,11 @@ QPDF::insertXrefEntry(int obj, int f0, qpdf_offset_t f1, int f2, bool overwrite) @@ -1249,11 +1249,11 @@ QPDF::insertXrefEntry(int obj, int f0, qpdf_offset_t f1, int f2, bool overwrite)
1249 case 1: 1249 case 1:
1250 // f2 is generation 1250 // f2 is generation
1251 QTC::TC("qpdf", "QPDF xref gen > 0", ((f2 > 0) ? 1 : 0)); 1251 QTC::TC("qpdf", "QPDF xref gen > 0", ((f2 > 0) ? 1 : 0));
1252 - this->m->xref_table[QPDFObjGen(obj, f2)] = QPDFXRefEntry(f0, f1, f2); 1252 + this->m->xref_table[QPDFObjGen(obj, f2)] = QPDFXRefEntry(f1);
1253 break; 1253 break;
1254 1254
1255 case 2: 1255 case 2:
1256 - this->m->xref_table[QPDFObjGen(obj, 0)] = QPDFXRefEntry(f0, f1, f2); 1256 + this->m->xref_table[QPDFObjGen(obj, 0)] = QPDFXRefEntry(toI(f1), f2);
1257 break; 1257 break;
1258 1258
1259 default: 1259 default:
libqpdf/QPDFWriter.cc
@@ -1156,7 +1156,7 @@ QPDFWriter::openObject(int objid) @@ -1156,7 +1156,7 @@ QPDFWriter::openObject(int objid)
1156 if (objid == 0) { 1156 if (objid == 0) {
1157 objid = this->m->next_objid++; 1157 objid = this->m->next_objid++;
1158 } 1158 }
1159 - this->m->xref[objid] = QPDFXRefEntry(1, this->m->pipeline->getCount(), 0); 1159 + this->m->xref[objid] = QPDFXRefEntry(m->pipeline->getCount());
1160 writeString(std::to_string(objid)); 1160 writeString(std::to_string(objid));
1161 writeString(" 0 obj\n"); 1161 writeString(" 0 obj\n");
1162 return objid; 1162 return objid;
@@ -1905,7 +1905,7 @@ QPDFWriter::writeObjectStream(QPDFObjectHandle object) @@ -1905,7 +1905,7 @@ QPDFWriter::writeObjectStream(QPDFObjectHandle object)
1905 } 1905 }
1906 writeObject(obj_to_write, count); 1906 writeObject(obj_to_write, count);
1907 1907
1908 - this->m->xref[new_obj] = QPDFXRefEntry(2, new_id, count); 1908 + this->m->xref[new_obj] = QPDFXRefEntry(new_id, count);
1909 } 1909 }
1910 } 1910 }
1911 1911
@@ -2686,7 +2686,7 @@ QPDFWriter::writeXRefStream( @@ -2686,7 +2686,7 @@ QPDFWriter::writeXRefStream(
2686 2686
2687 // Must store in xref table in advance of writing the actual data 2687 // Must store in xref table in advance of writing the actual data
2688 // rather than waiting for openObject to do it. 2688 // rather than waiting for openObject to do it.
2689 - this->m->xref[xref_id] = QPDFXRefEntry(1, this->m->pipeline->getCount(), 0); 2689 + this->m->xref[xref_id] = QPDFXRefEntry(m->pipeline->getCount());
2690 2690
2691 Pipeline* p = pushPipeline(new Pl_Buffer("xref stream")); 2691 Pipeline* p = pushPipeline(new Pl_Buffer("xref stream"));
2692 bool compressed = false; 2692 bool compressed = false;
@@ -3112,7 +3112,7 @@ QPDFWriter::writeLinearized() @@ -3112,7 +3112,7 @@ QPDFWriter::writeLinearized()
3112 } 3112 }
3113 if (pass == 1) { 3113 if (pass == 1) {
3114 this->m->xref[hint_id] = 3114 this->m->xref[hint_id] =
3115 - QPDFXRefEntry(1, this->m->pipeline->getCount(), 0); 3115 + QPDFXRefEntry(m->pipeline->getCount());
3116 } else { 3116 } else {
3117 // Part 5: hint stream 3117 // Part 5: hint stream
3118 writeBuffer(hint_buffer); 3118 writeBuffer(hint_buffer);
@@ -3216,7 +3216,7 @@ QPDFWriter::writeLinearized() @@ -3216,7 +3216,7 @@ QPDFWriter::writeLinearized()
3216 hint_length = QIntC::to_offset(hint_buffer->getSize()); 3216 hint_length = QIntC::to_offset(hint_buffer->getSize());
3217 3217
3218 // Restore hint offset 3218 // Restore hint offset
3219 - this->m->xref[hint_id] = QPDFXRefEntry(1, hint_offset1, 0); 3219 + this->m->xref[hint_id] = QPDFXRefEntry(hint_offset1);
3220 if (lin_pass1_file) { 3220 if (lin_pass1_file) {
3221 // Write some debugging information 3221 // Write some debugging information
3222 fprintf( 3222 fprintf(
libqpdf/QPDFXRefEntry.cc
@@ -4,10 +4,7 @@ @@ -4,10 +4,7 @@
4 #include <qpdf/QPDFExc.hh> 4 #include <qpdf/QPDFExc.hh>
5 #include <qpdf/QUtil.hh> 5 #include <qpdf/QUtil.hh>
6 6
7 -QPDFXRefEntry::QPDFXRefEntry() :  
8 - type(0),  
9 - field1(0),  
10 - field2(0) 7 +QPDFXRefEntry::QPDFXRefEntry()
11 { 8 {
12 } 9 }
13 10