Commit 83fc18af095248ae22f38a52bf4e7e336f0a7c12

Authored by m-holger
1 parent 6c990306

Add new method Objects::replace

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  
... ...