Commit 4b73d057fb637bb2c2810aaf9fefdfe9b8beaef6

Authored by m-holger
1 parent f7978db1

QPDFObjGen : tidy QPDF_Stream

Change method signatures to use QPDFObjGen.
Replace QPDF_Stream::objid and generation with QPDF_Stream::og.
libqpdf/QPDFObjectHandle.cc
@@ -2634,8 +2634,8 @@ QPDFObjectHandle::newStream( @@ -2634,8 +2634,8 @@ QPDFObjectHandle::newStream(
2634 qpdf_offset_t offset, 2634 qpdf_offset_t offset,
2635 size_t length) 2635 size_t length)
2636 { 2636 {
2637 - QPDFObjectHandle result = QPDFObjectHandle(QPDF_Stream::create(  
2638 - qpdf, og.getObj(), og.getGen(), stream_dict, offset, length)); 2637 + QPDFObjectHandle result = QPDFObjectHandle(
  2638 + QPDF_Stream::create(qpdf, og, stream_dict, offset, length));
2639 if (offset) { 2639 if (offset) {
2640 result.setParsedOffset(offset); 2640 result.setParsedOffset(offset);
2641 } 2641 }
@@ -2651,11 +2651,11 @@ QPDFObjectHandle::newStream(QPDF* qpdf) @@ -2651,11 +2651,11 @@ QPDFObjectHandle::newStream(QPDF* qpdf)
2651 } 2651 }
2652 QTC::TC("qpdf", "QPDFObjectHandle newStream"); 2652 QTC::TC("qpdf", "QPDFObjectHandle newStream");
2653 QPDFObjectHandle stream_dict = newDictionary(); 2653 QPDFObjectHandle stream_dict = newDictionary();
2654 - QPDFObjectHandle result = qpdf->makeIndirectObject(  
2655 - QPDFObjectHandle(QPDF_Stream::create(qpdf, 0, 0, stream_dict, 0, 0))); 2654 + QPDFObjectHandle result = qpdf->makeIndirectObject(QPDFObjectHandle(
  2655 + QPDF_Stream::create(qpdf, QPDFObjGen(), stream_dict, 0, 0)));
2656 result.dereference(); 2656 result.dereference();
2657 QPDF_Stream* stream = dynamic_cast<QPDF_Stream*>(result.obj.get()); 2657 QPDF_Stream* stream = dynamic_cast<QPDF_Stream*>(result.obj.get());
2658 - stream->setObjGen(result.getObjectID(), result.getGeneration()); 2658 + stream->setObjGen(result.getObjGen());
2659 return result; 2659 return result;
2660 } 2660 }
2661 2661
libqpdf/QPDF_Stream.cc
@@ -110,14 +110,12 @@ StreamBlobProvider::operator()(Pipeline* p) @@ -110,14 +110,12 @@ StreamBlobProvider::operator()(Pipeline* p)
110 110
111 QPDF_Stream::QPDF_Stream( 111 QPDF_Stream::QPDF_Stream(
112 QPDF* qpdf, 112 QPDF* qpdf,
113 - int objid,  
114 - int generation, 113 + QPDFObjGen const& og,
115 QPDFObjectHandle stream_dict, 114 QPDFObjectHandle stream_dict,
116 qpdf_offset_t offset, 115 qpdf_offset_t offset,
117 size_t length) : 116 size_t length) :
118 qpdf(qpdf), 117 qpdf(qpdf),
119 - objid(objid),  
120 - generation(generation), 118 + og(og),
121 filter_on_write(true), 119 filter_on_write(true),
122 stream_dict(stream_dict), 120 stream_dict(stream_dict),
123 offset(offset), 121 offset(offset),
@@ -128,22 +126,18 @@ QPDF_Stream::QPDF_Stream( @@ -128,22 +126,18 @@ QPDF_Stream::QPDF_Stream(
128 "object for dictionary"); 126 "object for dictionary");
129 } 127 }
130 setDescription( 128 setDescription(
131 - this->qpdf,  
132 - this->qpdf->getFilename() + ", stream object " +  
133 - QPDFObjGen(objid, generation).unparse(' ')); 129 + qpdf, qpdf->getFilename() + ", stream object " + og.unparse(' '));
134 } 130 }
135 131
136 std::shared_ptr<QPDFObject> 132 std::shared_ptr<QPDFObject>
137 QPDF_Stream::create( 133 QPDF_Stream::create(
138 QPDF* qpdf, 134 QPDF* qpdf,
139 - int objid,  
140 - int generation, 135 + QPDFObjGen const& og,
141 QPDFObjectHandle stream_dict, 136 QPDFObjectHandle stream_dict,
142 qpdf_offset_t offset, 137 qpdf_offset_t offset,
143 size_t length) 138 size_t length)
144 { 139 {
145 - return do_create(  
146 - new QPDF_Stream(qpdf, objid, generation, stream_dict, offset, length)); 140 + return do_create(new QPDF_Stream(qpdf, og, stream_dict, offset, length));
147 } 141 }
148 142
149 std::shared_ptr<QPDFObject> 143 std::shared_ptr<QPDFObject>
@@ -180,22 +174,21 @@ QPDF_Stream::releaseResolved() @@ -180,22 +174,21 @@ QPDF_Stream::releaseResolved()
180 } 174 }
181 175
182 void 176 void
183 -QPDF_Stream::setObjGen(int objid, int generation) 177 +QPDF_Stream::setObjGen(QPDFObjGen const& og)
184 { 178 {
185 - if (!((this->objid == 0) && (this->generation == 0))) { 179 + if (this->og.isIndirect()) {
186 throw std::logic_error( 180 throw std::logic_error(
187 "attempt to set object ID and generation of a stream" 181 "attempt to set object ID and generation of a stream"
188 " that already has them"); 182 " that already has them");
189 } 183 }
190 - this->objid = objid;  
191 - this->generation = generation; 184 + this->og = og;
192 } 185 }
193 186
194 std::string 187 std::string
195 QPDF_Stream::unparse() 188 QPDF_Stream::unparse()
196 { 189 {
197 // Unparse stream objects as indirect references 190 // Unparse stream objects as indirect references
198 - return QPDFObjGen(objid, generation).unparse(' ') + " R"; 191 + return og.unparse(' ') + " R";
199 } 192 }
200 193
201 JSON 194 JSON
@@ -617,8 +610,8 @@ QPDF_Stream::pipeStreamData( @@ -617,8 +610,8 @@ QPDF_Stream::pipeStreamData(
617 Pl_Count count("stream provider count", pipeline); 610 Pl_Count count("stream provider count", pipeline);
618 if (this->stream_provider->supportsRetry()) { 611 if (this->stream_provider->supportsRetry()) {
619 if (!this->stream_provider->provideStreamData( 612 if (!this->stream_provider->provideStreamData(
620 - this->objid,  
621 - this->generation, 613 + og.getObj(),
  614 + og.getGen(),
622 &count, 615 &count,
623 suppress_warnings, 616 suppress_warnings,
624 will_retry)) { 617 will_retry)) {
@@ -627,7 +620,7 @@ QPDF_Stream::pipeStreamData( @@ -627,7 +620,7 @@ QPDF_Stream::pipeStreamData(
627 } 620 }
628 } else { 621 } else {
629 this->stream_provider->provideStreamData( 622 this->stream_provider->provideStreamData(
630 - this->objid, this->generation, &count); 623 + og.getObj(), og.getGen(), &count);
631 } 624 }
632 qpdf_offset_t actual_length = count.getCount(); 625 qpdf_offset_t actual_length = count.getCount();
633 qpdf_offset_t desired_length = 0; 626 qpdf_offset_t desired_length = 0;
@@ -640,9 +633,8 @@ QPDF_Stream::pipeStreamData( @@ -640,9 +633,8 @@ QPDF_Stream::pipeStreamData(
640 // This would be caused by programmer error on the 633 // This would be caused by programmer error on the
641 // part of a library user, not by invalid input data. 634 // part of a library user, not by invalid input data.
642 throw std::runtime_error( 635 throw std::runtime_error(
643 - "stream data provider for " +  
644 - QPDFObjGen(objid, generation).unparse(' ') + " provided " +  
645 - QUtil::int_to_string(actual_length) + 636 + "stream data provider for " + og.unparse(' ') +
  637 + " provided " + QUtil::int_to_string(actual_length) +
646 " bytes instead of expected " + 638 " bytes instead of expected " +
647 QUtil::int_to_string(desired_length) + " bytes"); 639 QUtil::int_to_string(desired_length) + " bytes");
648 } 640 }
@@ -658,7 +650,7 @@ QPDF_Stream::pipeStreamData( @@ -658,7 +650,7 @@ QPDF_Stream::pipeStreamData(
658 QTC::TC("qpdf", "QPDF_Stream pipe original stream data"); 650 QTC::TC("qpdf", "QPDF_Stream pipe original stream data");
659 if (!QPDF::Pipe::pipeStreamData( 651 if (!QPDF::Pipe::pipeStreamData(
660 this->qpdf, 652 this->qpdf,
661 - QPDFObjGen(this->objid, this->generation), 653 + og,
662 this->offset, 654 this->offset,
663 this->length, 655 this->length,
664 this->stream_dict, 656 this->stream_dict,
libqpdf/qpdf/QPDF_Stream.hh
@@ -19,8 +19,7 @@ class QPDF_Stream: public QPDFObject @@ -19,8 +19,7 @@ class QPDF_Stream: public QPDFObject
19 virtual ~QPDF_Stream() = default; 19 virtual ~QPDF_Stream() = default;
20 static std::shared_ptr<QPDFObject> create( 20 static std::shared_ptr<QPDFObject> create(
21 QPDF*, 21 QPDF*,
22 - int objid,  
23 - int generation, 22 + QPDFObjGen const& og,
24 QPDFObjectHandle stream_dict, 23 QPDFObjectHandle stream_dict,
25 qpdf_offset_t offset, 24 qpdf_offset_t offset,
26 size_t length); 25 size_t length);
@@ -78,7 +77,7 @@ class QPDF_Stream: public QPDFObject @@ -78,7 +77,7 @@ class QPDF_Stream: public QPDFObject
78 // Replace object ID and generation. This may only be called if 77 // Replace object ID and generation. This may only be called if
79 // object ID and generation are 0. It is used by QPDFObjectHandle 78 // object ID and generation are 0. It is used by QPDFObjectHandle
80 // when adding streams to files. 79 // when adding streams to files.
81 - void setObjGen(int objid, int generation); 80 + void setObjGen(QPDFObjGen const& og);
82 81
83 protected: 82 protected:
84 virtual void releaseResolved(); 83 virtual void releaseResolved();
@@ -86,8 +85,7 @@ class QPDF_Stream: public QPDFObject @@ -86,8 +85,7 @@ class QPDF_Stream: public QPDFObject
86 private: 85 private:
87 QPDF_Stream( 86 QPDF_Stream(
88 QPDF*, 87 QPDF*,
89 - int objid,  
90 - int generation, 88 + QPDFObjGen const& og,
91 QPDFObjectHandle stream_dict, 89 QPDFObjectHandle stream_dict,
92 qpdf_offset_t offset, 90 qpdf_offset_t offset,
93 size_t length); 91 size_t length);
@@ -111,8 +109,7 @@ class QPDF_Stream: public QPDFObject @@ -111,8 +109,7 @@ class QPDF_Stream: public QPDFObject
111 void setDictDescription(); 109 void setDictDescription();
112 110
113 QPDF* qpdf; 111 QPDF* qpdf;
114 - int objid;  
115 - int generation; 112 + QPDFObjGen og;
116 bool filter_on_write; 113 bool filter_on_write;
117 QPDFObjectHandle stream_dict; 114 QPDFObjectHandle stream_dict;
118 qpdf_offset_t offset; 115 qpdf_offset_t offset;