Commit 83fc18af095248ae22f38a52bf4e7e336f0a7c12
1 parent
6c990306
Add new method Objects::replace
Showing
3 changed files
with
15 additions
and
6 deletions
libqpdf/QPDF.cc
| ... | ... | @@ -597,9 +597,15 @@ QPDF::getObjectByID(int id, int gen) |
| 597 | 597 | } |
| 598 | 598 | |
| 599 | 599 | void |
| 600 | -QPDF::replaceObject(int objid, int generation, QPDFObjectHandle oh) | |
| 600 | +QPDF::replaceObject(int id, int gen, QPDFObjectHandle replacement) | |
| 601 | 601 | { |
| 602 | - replaceObject(QPDFObjGen(objid, generation), oh); | |
| 602 | + m->objects.replace(QPDFObjGen(id, gen), replacement); | |
| 603 | +} | |
| 604 | + | |
| 605 | +void | |
| 606 | +QPDF::replaceObject(QPDFObjGen const& og, QPDFObjectHandle replacement) | |
| 607 | +{ | |
| 608 | + m->objects.replace(og, replacement); | |
| 603 | 609 | } |
| 604 | 610 | |
| 605 | 611 | void |
| ... | ... | @@ -610,7 +616,7 @@ QPDF::replaceReserved(QPDFObjectHandle reserved, QPDFObjectHandle replacement) |
| 610 | 616 | if (!(tc == ::ot_reserved || tc == ::ot_null)) { |
| 611 | 617 | throw std::logic_error("replaceReserved called with non-reserved object"); |
| 612 | 618 | } |
| 613 | - replaceObject(reserved.getObjGen(), replacement); | |
| 619 | + m->objects.replace(reserved.getObjGen(), replacement); | |
| 614 | 620 | } |
| 615 | 621 | |
| 616 | 622 | QPDFObjectHandle | ... | ... |
libqpdf/QPDF_objects.cc
| ... | ... | @@ -1758,13 +1758,13 @@ Objects::get_for_json(int id, int gen) |
| 1758 | 1758 | } |
| 1759 | 1759 | |
| 1760 | 1760 | void |
| 1761 | -QPDF::replaceObject(QPDFObjGen const& og, QPDFObjectHandle oh) | |
| 1761 | +Objects::replace(QPDFObjGen og, QPDFObjectHandle oh) | |
| 1762 | 1762 | { |
| 1763 | 1763 | if (!oh || (oh.isIndirect() && !(oh.isStream() && oh.getObjGen() == og))) { |
| 1764 | 1764 | QTC::TC("qpdf", "QPDF replaceObject called with indirect object"); |
| 1765 | 1765 | throw std::logic_error("QPDF::replaceObject called with indirect object handle"); |
| 1766 | 1766 | } |
| 1767 | - objects().update_table(og, oh.getObj()); | |
| 1767 | + update_table(og, oh.getObj()); | |
| 1768 | 1768 | } |
| 1769 | 1769 | |
| 1770 | 1770 | void | ... | ... |
libqpdf/qpdf/QPDF_objects.hh
| ... | ... | @@ -441,6 +441,10 @@ class QPDF::Objects |
| 441 | 441 | return get(QPDFObjGen(id, gen)); |
| 442 | 442 | } |
| 443 | 443 | |
| 444 | + void erase(QPDFObjGen og); | |
| 445 | + | |
| 446 | + void replace(QPDFObjGen og, QPDFObjectHandle oh); | |
| 447 | + | |
| 444 | 448 | std::map<QPDFObjGen, Entry> obj_cache; |
| 445 | 449 | |
| 446 | 450 | QPDFObjectHandle readObjectInStream(std::shared_ptr<InputSource>& input, int obj); |
| ... | ... | @@ -469,7 +473,6 @@ class QPDF::Objects |
| 469 | 473 | size_t table_size(); |
| 470 | 474 | |
| 471 | 475 | private: |
| 472 | - void erase(QPDFObjGen og); | |
| 473 | 476 | bool cached(QPDFObjGen og); |
| 474 | 477 | bool unresolved(QPDFObjGen og); |
| 475 | 478 | ... | ... |