Commit 9e03dc54cc50c173f75375e76b31607a03c3f4a4
1 parent
83fc18af
Add new method Objects::swap
Showing
4 changed files
with
14 additions
and
6 deletions
include/qpdf/QPDF.hh
| @@ -391,7 +391,7 @@ class QPDF | @@ -391,7 +391,7 @@ class QPDF | ||
| 391 | void replaceObject(int objid, int generation, QPDFObjectHandle); | 391 | void replaceObject(int objid, int generation, QPDFObjectHandle); |
| 392 | 392 | ||
| 393 | // Swap two objects given by ID. Prior to qpdf 10.2.1, existing QPDFObjectHandle instances that | 393 | // Swap two objects given by ID. Prior to qpdf 10.2.1, existing QPDFObjectHandle instances that |
| 394 | - // reference them objects not notice the swap, but this was fixed in 10.2.1. | 394 | + // reference the objects did not notice the swap, but this was fixed in 10.2.1. |
| 395 | QPDF_DLL | 395 | QPDF_DLL |
| 396 | void swapObjects(QPDFObjGen const& og1, QPDFObjGen const& og2); | 396 | void swapObjects(QPDFObjGen const& og1, QPDFObjGen const& og2); |
| 397 | QPDF_DLL | 397 | QPDF_DLL |
libqpdf/QPDF.cc
| @@ -882,7 +882,13 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign) | @@ -882,7 +882,13 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign) | ||
| 882 | void | 882 | void |
| 883 | QPDF::swapObjects(int objid1, int generation1, int objid2, int generation2) | 883 | QPDF::swapObjects(int objid1, int generation1, int objid2, int generation2) |
| 884 | { | 884 | { |
| 885 | - swapObjects(QPDFObjGen(objid1, generation1), QPDFObjGen(objid2, generation2)); | 885 | + m->objects.swap(QPDFObjGen(objid1, generation1), QPDFObjGen(objid2, generation2)); |
| 886 | +} | ||
| 887 | + | ||
| 888 | +void | ||
| 889 | +QPDF::swapObjects(QPDFObjGen const& og1, QPDFObjGen const& og2) | ||
| 890 | +{ | ||
| 891 | + m->objects.swap(og1, og2); | ||
| 886 | } | 892 | } |
| 887 | 893 | ||
| 888 | unsigned long long | 894 | unsigned long long |
libqpdf/QPDF_objects.cc
| @@ -1779,12 +1779,12 @@ Objects::erase(QPDFObjGen og) | @@ -1779,12 +1779,12 @@ Objects::erase(QPDFObjGen og) | ||
| 1779 | } | 1779 | } |
| 1780 | 1780 | ||
| 1781 | void | 1781 | void |
| 1782 | -QPDF::swapObjects(QPDFObjGen const& og1, QPDFObjGen const& og2) | 1782 | +Objects::swap(QPDFObjGen og1, QPDFObjGen og2) |
| 1783 | { | 1783 | { |
| 1784 | // Force objects to be read from the input source if needed, then swap them in the cache. | 1784 | // Force objects to be read from the input source if needed, then swap them in the cache. |
| 1785 | - m->objects.resolve(og1); | ||
| 1786 | - m->objects.resolve(og2); | ||
| 1787 | - m->objects.obj_cache[og1].object->swapWith(m->objects.obj_cache[og2].object); | 1785 | + resolve(og1); |
| 1786 | + resolve(og2); | ||
| 1787 | + obj_cache[og1].object->swapWith(obj_cache[og2].object); | ||
| 1788 | } | 1788 | } |
| 1789 | 1789 | ||
| 1790 | size_t | 1790 | size_t |
libqpdf/qpdf/QPDF_objects.hh
| @@ -445,6 +445,8 @@ class QPDF::Objects | @@ -445,6 +445,8 @@ class QPDF::Objects | ||
| 445 | 445 | ||
| 446 | void replace(QPDFObjGen og, QPDFObjectHandle oh); | 446 | void replace(QPDFObjGen og, QPDFObjectHandle oh); |
| 447 | 447 | ||
| 448 | + void swap(QPDFObjGen og1, QPDFObjGen og2); | ||
| 449 | + | ||
| 448 | std::map<QPDFObjGen, Entry> obj_cache; | 450 | std::map<QPDFObjGen, Entry> obj_cache; |
| 449 | 451 | ||
| 450 | QPDFObjectHandle readObjectInStream(std::shared_ptr<InputSource>& input, int obj); | 452 | QPDFObjectHandle readObjectInStream(std::shared_ptr<InputSource>& input, int obj); |