Commit 3404ca8ac8e19ccba5ff2d7426081a593880f1c0
1 parent
b123f79d
QPDFObjGen : tidy QPDFObjectHandle private methods
Change method signature to use QPDFObjGen.
Showing
4 changed files
with
28 additions
and
32 deletions
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 | } | ... | ... |