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 1429  
1430 1430 private:
1431 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 1436 static QPDFObjectHandle
1437 1437 newStream(
1438 1438 QPDF* qpdf,
1439   - int objid,
1440   - int generation,
  1439 + QPDFObjGen const& og,
1441 1440 QPDFObjectHandle stream_dict,
1442 1441 qpdf_offset_t offset,
1443 1442 size_t length)
1444 1443 {
1445 1444 return QPDFObjectHandle::newStream(
1446   - qpdf, objid, generation, stream_dict, offset, length);
  1445 + qpdf, og, stream_dict, offset, length);
1447 1446 }
1448 1447 // Reserve an object with a specific ID
1449 1448 static QPDFObjectHandle
... ... @@ -1563,11 +1562,10 @@ class QPDFObjectHandle
1563 1562 };
1564 1563  
1565 1564 // Private object factory methods
1566   - static QPDFObjectHandle newIndirect(QPDF*, int objid, int generation);
  1565 + static QPDFObjectHandle newIndirect(QPDF*, QPDFObjGen const& og);
1567 1566 static QPDFObjectHandle newStream(
1568 1567 QPDF* qpdf,
1569   - int objid,
1570   - int generation,
  1568 + QPDFObjGen const& og,
1571 1569 QPDFObjectHandle stream_dict,
1572 1570 qpdf_offset_t offset,
1573 1571 size_t length);
... ...
libqpdf/QPDF.cc
... ... @@ -1404,9 +1404,8 @@ QPDF::fixDanglingReferences(bool force)
1404 1404 // For each non-scalar item to process, put it in the queue.
1405 1405 std::list<QPDFObjectHandle> queue;
1406 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 1409 if (obj.isDictionary() || obj.isArray()) {
1411 1410 queue.push_back(obj);
1412 1411 } else if (obj.isStream()) {
... ... @@ -1472,10 +1471,7 @@ QPDF::getAllObjects()
1472 1471 std::vector<QPDFObjectHandle> result;
1473 1472 for (auto const& iter: this->m->obj_cache) {
1474 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 1476 return result;
1481 1477 }
... ... @@ -1662,7 +1658,11 @@ QPDF::readObject(
1662 1658 }
1663 1659 }
1664 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 1666 } else {
1667 1667 input->seek(cur_offset, SEEK_SET);
1668 1668 }
... ... @@ -2159,8 +2159,7 @@ QPDF::makeIndirectObject(QPDFObjectHandle oh)
2159 2159 QPDFObjGen next(max_objid + 1, 0);
2160 2160 this->m->obj_cache[next] =
2161 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 2165 QPDFObjectHandle
... ... @@ -2178,19 +2177,19 @@ QPDFObjectHandle
2178 2177 QPDF::reserveStream(int objid, int gen)
2179 2178 {
2180 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 2183 QPDFObjectHandle
2185 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 2189 QPDFObjectHandle
2191 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 2195 void
... ...
libqpdf/QPDFObjectHandle.cc
... ... @@ -2180,8 +2180,9 @@ QPDFObjectHandle::parseInternal(
2180 2180 // Try to resolve indirect objects
2181 2181 object = newIndirect(
2182 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 2186 olist.remove_last();
2186 2187 olist.remove_last();
2187 2188 } else if ((value == "endobj") && (state == st_top)) {
... ... @@ -2469,9 +2470,9 @@ QPDFObjectHandle::setParsedOffset(qpdf_offset_t offset)
2469 2470 }
2470 2471  
2471 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 2476 // Special case: QPDF uses objid 0 as a sentinel for direct
2476 2477 // objects, and the PDF specification doesn't allow for object
2477 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 2481 return newNull();
2481 2482 }
2482 2483  
2483   - return QPDFObjectHandle(qpdf, QPDFObjGen(objid, generation));
  2484 + return QPDFObjectHandle(qpdf, og);
2484 2485 }
2485 2486  
2486 2487 QPDFObjectHandle
... ... @@ -2628,14 +2629,13 @@ QPDFObjectHandle::newDictionary(
2628 2629 QPDFObjectHandle
2629 2630 QPDFObjectHandle::newStream(
2630 2631 QPDF* qpdf,
2631   - int objid,
2632   - int generation,
  2632 + QPDFObjGen const& og,
2633 2633 QPDFObjectHandle stream_dict,
2634 2634 qpdf_offset_t offset,
2635 2635 size_t length)
2636 2636 {
2637 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 2639 if (offset) {
2640 2640 result.setParsedOffset(offset);
2641 2641 }
... ... @@ -2683,8 +2683,7 @@ QPDFObjectHandle::newReserved(QPDF* qpdf)
2683 2683 // Reserve a spot for this object by assigning it an object
2684 2684 // number, but then return an unresolved handle to the object.
2685 2685 QPDFObjectHandle reserved = qpdf->makeIndirectObject(makeReserved());
2686   - QPDFObjectHandle result =
2687   - newIndirect(qpdf, reserved.getObjectID(), reserved.getGeneration());
  2686 + QPDFObjectHandle result = newIndirect(qpdf, reserved.getObjGen());
2688 2687 result.reserved = true;
2689 2688 return result;
2690 2689 }
... ...
libqpdf/QPDF_linearization.cc
... ... @@ -138,7 +138,7 @@ QPDF::isLinearized()
138 138 }
139 139  
140 140 QPDFObjectHandle candidate =
141   - QPDFObjectHandle::Factory::newIndirect(this, lindict_obj, 0);
  141 + QPDFObjectHandle::Factory::newIndirect(this, QPDFObjGen(lindict_obj));
142 142 if (!candidate.isDictionary()) {
143 143 return false;
144 144 }
... ...