Commit 3404ca8ac8e19ccba5ff2d7426081a593880f1c0

Authored by m-holger
1 parent b123f79d

QPDFObjGen : tidy QPDFObjectHandle private methods

Change method signature to use QPDFObjGen.
include/qpdf/QPDFObjectHandle.hh
@@ -1429,21 +1429,20 @@ class QPDFObjectHandle @@ -1429,21 +1429,20 @@ class QPDFObjectHandle
1429 1429
1430 private: 1430 private:
1431 static QPDFObjectHandle 1431 static QPDFObjectHandle
1432 - newIndirect(QPDF* qpdf, int objid, int generation) 1432 + newIndirect(QPDF* qpdf, QPDFObjGen const& og)
1433 { 1433 {
1434 - return QPDFObjectHandle::newIndirect(qpdf, objid, generation); 1434 + return QPDFObjectHandle::newIndirect(qpdf, og);
1435 } 1435 }
1436 static QPDFObjectHandle 1436 static QPDFObjectHandle
1437 newStream( 1437 newStream(
1438 QPDF* qpdf, 1438 QPDF* qpdf,
1439 - int objid,  
1440 - int generation, 1439 + QPDFObjGen const& og,
1441 QPDFObjectHandle stream_dict, 1440 QPDFObjectHandle stream_dict,
1442 qpdf_offset_t offset, 1441 qpdf_offset_t offset,
1443 size_t length) 1442 size_t length)
1444 { 1443 {
1445 return QPDFObjectHandle::newStream( 1444 return QPDFObjectHandle::newStream(
1446 - qpdf, objid, generation, stream_dict, offset, length); 1445 + qpdf, og, stream_dict, offset, length);
1447 } 1446 }
1448 // Reserve an object with a specific ID 1447 // Reserve an object with a specific ID
1449 static QPDFObjectHandle 1448 static QPDFObjectHandle
@@ -1563,11 +1562,10 @@ class QPDFObjectHandle @@ -1563,11 +1562,10 @@ class QPDFObjectHandle
1563 }; 1562 };
1564 1563
1565 // Private object factory methods 1564 // Private object factory methods
1566 - static QPDFObjectHandle newIndirect(QPDF*, int objid, int generation); 1565 + static QPDFObjectHandle newIndirect(QPDF*, QPDFObjGen const& og);
1567 static QPDFObjectHandle newStream( 1566 static QPDFObjectHandle newStream(
1568 QPDF* qpdf, 1567 QPDF* qpdf,
1569 - int objid,  
1570 - int generation, 1568 + QPDFObjGen const& og,
1571 QPDFObjectHandle stream_dict, 1569 QPDFObjectHandle stream_dict,
1572 qpdf_offset_t offset, 1570 qpdf_offset_t offset,
1573 size_t length); 1571 size_t length);
libqpdf/QPDF.cc
@@ -1404,9 +1404,8 @@ QPDF::fixDanglingReferences(bool force) @@ -1404,9 +1404,8 @@ QPDF::fixDanglingReferences(bool force)
1404 // For each non-scalar item to process, put it in the queue. 1404 // For each non-scalar item to process, put it in the queue.
1405 std::list<QPDFObjectHandle> queue; 1405 std::list<QPDFObjectHandle> queue;
1406 queue.push_back(this->m->trailer); 1406 queue.push_back(this->m->trailer);
1407 - for (auto const& iter: to_process) {  
1408 - QPDFObjectHandle obj = QPDFObjectHandle::Factory::newIndirect(  
1409 - this, iter.getObj(), iter.getGen()); 1407 + for (auto const& og: to_process) {
  1408 + QPDFObjectHandle obj = QPDFObjectHandle::Factory::newIndirect(this, og);
1410 if (obj.isDictionary() || obj.isArray()) { 1409 if (obj.isDictionary() || obj.isArray()) {
1411 queue.push_back(obj); 1410 queue.push_back(obj);
1412 } else if (obj.isStream()) { 1411 } else if (obj.isStream()) {
@@ -1472,10 +1471,7 @@ QPDF::getAllObjects() @@ -1472,10 +1471,7 @@ QPDF::getAllObjects()
1472 std::vector<QPDFObjectHandle> result; 1471 std::vector<QPDFObjectHandle> result;
1473 for (auto const& iter: this->m->obj_cache) { 1472 for (auto const& iter: this->m->obj_cache) {
1474 QPDFObjGen const& og = iter.first; 1473 QPDFObjGen const& og = iter.first;
1475 - result.push_back(  
1476 - // line-break  
1477 - QPDFObjectHandle::Factory::newIndirect(  
1478 - this, og.getObj(), og.getGen())); 1474 + result.push_back(QPDFObjectHandle::Factory::newIndirect(this, og));
1479 } 1475 }
1480 return result; 1476 return result;
1481 } 1477 }
@@ -1662,7 +1658,11 @@ QPDF::readObject( @@ -1662,7 +1658,11 @@ QPDF::readObject(
1662 } 1658 }
1663 } 1659 }
1664 object = QPDFObjectHandle::Factory::newStream( 1660 object = QPDFObjectHandle::Factory::newStream(
1665 - this, objid, generation, object, stream_offset, length); 1661 + this,
  1662 + QPDFObjGen(objid, generation),
  1663 + object,
  1664 + stream_offset,
  1665 + length);
1666 } else { 1666 } else {
1667 input->seek(cur_offset, SEEK_SET); 1667 input->seek(cur_offset, SEEK_SET);
1668 } 1668 }
@@ -2159,8 +2159,7 @@ QPDF::makeIndirectObject(QPDFObjectHandle oh) @@ -2159,8 +2159,7 @@ QPDF::makeIndirectObject(QPDFObjectHandle oh)
2159 QPDFObjGen next(max_objid + 1, 0); 2159 QPDFObjGen next(max_objid + 1, 0);
2160 this->m->obj_cache[next] = 2160 this->m->obj_cache[next] =
2161 ObjCache(QPDFObjectHandle::ObjAccessor::getObject(oh), -1, -1); 2161 ObjCache(QPDFObjectHandle::ObjAccessor::getObject(oh), -1, -1);
2162 - return QPDFObjectHandle::Factory::newIndirect(  
2163 - this, next.getObj(), next.getGen()); 2162 + return QPDFObjectHandle::Factory::newIndirect(this, next);
2164 } 2163 }
2165 2164
2166 QPDFObjectHandle 2165 QPDFObjectHandle
@@ -2178,19 +2177,19 @@ QPDFObjectHandle @@ -2178,19 +2177,19 @@ QPDFObjectHandle
2178 QPDF::reserveStream(int objid, int gen) 2177 QPDF::reserveStream(int objid, int gen)
2179 { 2178 {
2180 return QPDFObjectHandle::Factory::newStream( 2179 return QPDFObjectHandle::Factory::newStream(
2181 - this, objid, gen, QPDFObjectHandle::newDictionary(), 0, 0); 2180 + this, QPDFObjGen(objid, gen), QPDFObjectHandle::newDictionary(), 0, 0);
2182 } 2181 }
2183 2182
2184 QPDFObjectHandle 2183 QPDFObjectHandle
2185 QPDF::getObjectByObjGen(QPDFObjGen const& og) 2184 QPDF::getObjectByObjGen(QPDFObjGen const& og)
2186 { 2185 {
2187 - return getObjectByID(og.getObj(), og.getGen()); 2186 + return QPDFObjectHandle::Factory::newIndirect(this, og);
2188 } 2187 }
2189 2188
2190 QPDFObjectHandle 2189 QPDFObjectHandle
2191 QPDF::getObjectByID(int objid, int generation) 2190 QPDF::getObjectByID(int objid, int generation)
2192 { 2191 {
2193 - return QPDFObjectHandle::Factory::newIndirect(this, objid, generation); 2192 + return getObjectByObjGen(QPDFObjGen(objid, generation));
2194 } 2193 }
2195 2194
2196 void 2195 void
libqpdf/QPDFObjectHandle.cc
@@ -2180,8 +2180,9 @@ QPDFObjectHandle::parseInternal( @@ -2180,8 +2180,9 @@ QPDFObjectHandle::parseInternal(
2180 // Try to resolve indirect objects 2180 // Try to resolve indirect objects
2181 object = newIndirect( 2181 object = newIndirect(
2182 context, 2182 context,
2183 - olist.at(olist.size() - 2).getIntValueAsInt(),  
2184 - olist.at(olist.size() - 1).getIntValueAsInt()); 2183 + QPDFObjGen(
  2184 + olist.at(olist.size() - 2).getIntValueAsInt(),
  2185 + olist.at(olist.size() - 1).getIntValueAsInt()));
2185 olist.remove_last(); 2186 olist.remove_last();
2186 olist.remove_last(); 2187 olist.remove_last();
2187 } else if ((value == "endobj") && (state == st_top)) { 2188 } else if ((value == "endobj") && (state == st_top)) {
@@ -2469,9 +2470,9 @@ QPDFObjectHandle::setParsedOffset(qpdf_offset_t offset) @@ -2469,9 +2470,9 @@ QPDFObjectHandle::setParsedOffset(qpdf_offset_t offset)
2469 } 2470 }
2470 2471
2471 QPDFObjectHandle 2472 QPDFObjectHandle
2472 -QPDFObjectHandle::newIndirect(QPDF* qpdf, int objid, int generation) 2473 +QPDFObjectHandle::newIndirect(QPDF* qpdf, QPDFObjGen const& og)
2473 { 2474 {
2474 - if (objid == 0) { 2475 + if (!og.isIndirect()) {
2475 // Special case: QPDF uses objid 0 as a sentinel for direct 2476 // Special case: QPDF uses objid 0 as a sentinel for direct
2476 // objects, and the PDF specification doesn't allow for object 2477 // objects, and the PDF specification doesn't allow for object
2477 // 0. Treat indirect references to object 0 as null so that we 2478 // 0. Treat indirect references to object 0 as null so that we
@@ -2480,7 +2481,7 @@ QPDFObjectHandle::newIndirect(QPDF* qpdf, int objid, int generation) @@ -2480,7 +2481,7 @@ QPDFObjectHandle::newIndirect(QPDF* qpdf, int objid, int generation)
2480 return newNull(); 2481 return newNull();
2481 } 2482 }
2482 2483
2483 - return QPDFObjectHandle(qpdf, QPDFObjGen(objid, generation)); 2484 + return QPDFObjectHandle(qpdf, og);
2484 } 2485 }
2485 2486
2486 QPDFObjectHandle 2487 QPDFObjectHandle
@@ -2628,14 +2629,13 @@ QPDFObjectHandle::newDictionary( @@ -2628,14 +2629,13 @@ QPDFObjectHandle::newDictionary(
2628 QPDFObjectHandle 2629 QPDFObjectHandle
2629 QPDFObjectHandle::newStream( 2630 QPDFObjectHandle::newStream(
2630 QPDF* qpdf, 2631 QPDF* qpdf,
2631 - int objid,  
2632 - int generation, 2632 + QPDFObjGen const& og,
2633 QPDFObjectHandle stream_dict, 2633 QPDFObjectHandle stream_dict,
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( 2637 QPDFObjectHandle result = QPDFObjectHandle(QPDF_Stream::create(
2638 - qpdf, objid, generation, stream_dict, offset, length)); 2638 + qpdf, og.getObj(), og.getGen(), stream_dict, offset, length));
2639 if (offset) { 2639 if (offset) {
2640 result.setParsedOffset(offset); 2640 result.setParsedOffset(offset);
2641 } 2641 }
@@ -2683,8 +2683,7 @@ QPDFObjectHandle::newReserved(QPDF* qpdf) @@ -2683,8 +2683,7 @@ QPDFObjectHandle::newReserved(QPDF* qpdf)
2683 // Reserve a spot for this object by assigning it an object 2683 // Reserve a spot for this object by assigning it an object
2684 // number, but then return an unresolved handle to the object. 2684 // number, but then return an unresolved handle to the object.
2685 QPDFObjectHandle reserved = qpdf->makeIndirectObject(makeReserved()); 2685 QPDFObjectHandle reserved = qpdf->makeIndirectObject(makeReserved());
2686 - QPDFObjectHandle result =  
2687 - newIndirect(qpdf, reserved.getObjectID(), reserved.getGeneration()); 2686 + QPDFObjectHandle result = newIndirect(qpdf, reserved.getObjGen());
2688 result.reserved = true; 2687 result.reserved = true;
2689 return result; 2688 return result;
2690 } 2689 }
libqpdf/QPDF_linearization.cc
@@ -138,7 +138,7 @@ QPDF::isLinearized() @@ -138,7 +138,7 @@ QPDF::isLinearized()
138 } 138 }
139 139
140 QPDFObjectHandle candidate = 140 QPDFObjectHandle candidate =
141 - QPDFObjectHandle::Factory::newIndirect(this, lindict_obj, 0); 141 + QPDFObjectHandle::Factory::newIndirect(this, QPDFObjGen(lindict_obj));
142 if (!candidate.isDictionary()) { 142 if (!candidate.isDictionary()) {
143 return false; 143 return false;
144 } 144 }