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 34 // 1 = "uncompressed"; field 1 = offset
35 35 // 2 = "compressed"; field 1 = object stream number, field 2 = index
36 36  
  37 + // Create a type 0 "free" entry.
37 38 QPDF_DLL
38 39 QPDFXRefEntry();
39 40 QPDF_DLL
40 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 58 QPDF_DLL
43 59 int getType() const;
... ... @@ -51,9 +67,9 @@ class QPDFXRefEntry
51 67 private:
52 68 // This class does not use the Members pattern to avoid a memory
53 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 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 1249 case 1:
1250 1250 // f2 is generation
1251 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 1253 break;
1254 1254  
1255 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 1257 break;
1258 1258  
1259 1259 default:
... ...
libqpdf/QPDFWriter.cc
... ... @@ -1156,7 +1156,7 @@ QPDFWriter::openObject(int objid)
1156 1156 if (objid == 0) {
1157 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 1160 writeString(std::to_string(objid));
1161 1161 writeString(" 0 obj\n");
1162 1162 return objid;
... ... @@ -1905,7 +1905,7 @@ QPDFWriter::writeObjectStream(QPDFObjectHandle object)
1905 1905 }
1906 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 2686  
2687 2687 // Must store in xref table in advance of writing the actual data
2688 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 2691 Pipeline* p = pushPipeline(new Pl_Buffer("xref stream"));
2692 2692 bool compressed = false;
... ... @@ -3112,7 +3112,7 @@ QPDFWriter::writeLinearized()
3112 3112 }
3113 3113 if (pass == 1) {
3114 3114 this->m->xref[hint_id] =
3115   - QPDFXRefEntry(1, this->m->pipeline->getCount(), 0);
  3115 + QPDFXRefEntry(m->pipeline->getCount());
3116 3116 } else {
3117 3117 // Part 5: hint stream
3118 3118 writeBuffer(hint_buffer);
... ... @@ -3216,7 +3216,7 @@ QPDFWriter::writeLinearized()
3216 3216 hint_length = QIntC::to_offset(hint_buffer->getSize());
3217 3217  
3218 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 3220 if (lin_pass1_file) {
3221 3221 // Write some debugging information
3222 3222 fprintf(
... ...
libqpdf/QPDFXRefEntry.cc
... ... @@ -4,10 +4,7 @@
4 4 #include <qpdf/QPDFExc.hh>
5 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  
... ...