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,9 +597,15 @@ QPDF::getObjectByID(int id, int gen) | ||
| 597 | } | 597 | } |
| 598 | 598 | ||
| 599 | void | 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 | void | 611 | void |
| @@ -610,7 +616,7 @@ QPDF::replaceReserved(QPDFObjectHandle reserved, QPDFObjectHandle replacement) | @@ -610,7 +616,7 @@ QPDF::replaceReserved(QPDFObjectHandle reserved, QPDFObjectHandle replacement) | ||
| 610 | if (!(tc == ::ot_reserved || tc == ::ot_null)) { | 616 | if (!(tc == ::ot_reserved || tc == ::ot_null)) { |
| 611 | throw std::logic_error("replaceReserved called with non-reserved object"); | 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 | QPDFObjectHandle | 622 | QPDFObjectHandle |
libqpdf/QPDF_objects.cc
| @@ -1758,13 +1758,13 @@ Objects::get_for_json(int id, int gen) | @@ -1758,13 +1758,13 @@ Objects::get_for_json(int id, int gen) | ||
| 1758 | } | 1758 | } |
| 1759 | 1759 | ||
| 1760 | void | 1760 | void |
| 1761 | -QPDF::replaceObject(QPDFObjGen const& og, QPDFObjectHandle oh) | 1761 | +Objects::replace(QPDFObjGen og, QPDFObjectHandle oh) |
| 1762 | { | 1762 | { |
| 1763 | if (!oh || (oh.isIndirect() && !(oh.isStream() && oh.getObjGen() == og))) { | 1763 | if (!oh || (oh.isIndirect() && !(oh.isStream() && oh.getObjGen() == og))) { |
| 1764 | QTC::TC("qpdf", "QPDF replaceObject called with indirect object"); | 1764 | QTC::TC("qpdf", "QPDF replaceObject called with indirect object"); |
| 1765 | throw std::logic_error("QPDF::replaceObject called with indirect object handle"); | 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 | void | 1770 | void |
libqpdf/qpdf/QPDF_objects.hh
| @@ -441,6 +441,10 @@ class QPDF::Objects | @@ -441,6 +441,10 @@ class QPDF::Objects | ||
| 441 | return get(QPDFObjGen(id, gen)); | 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 | std::map<QPDFObjGen, Entry> obj_cache; | 448 | std::map<QPDFObjGen, Entry> obj_cache; |
| 445 | 449 | ||
| 446 | QPDFObjectHandle readObjectInStream(std::shared_ptr<InputSource>& input, int obj); | 450 | QPDFObjectHandle readObjectInStream(std::shared_ptr<InputSource>& input, int obj); |
| @@ -469,7 +473,6 @@ class QPDF::Objects | @@ -469,7 +473,6 @@ class QPDF::Objects | ||
| 469 | size_t table_size(); | 473 | size_t table_size(); |
| 470 | 474 | ||
| 471 | private: | 475 | private: |
| 472 | - void erase(QPDFObjGen og); | ||
| 473 | bool cached(QPDFObjGen og); | 476 | bool cached(QPDFObjGen og); |
| 474 | bool unresolved(QPDFObjGen og); | 477 | bool unresolved(QPDFObjGen og); |
| 475 | 478 |