2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-12-22 02:49:00 +00:00

Add new method Objects::swap

This commit is contained in:
m-holger 2024-10-07 17:29:35 +01:00
parent 83fc18af09
commit 9e03dc54cc
4 changed files with 14 additions and 6 deletions

View File

@ -391,7 +391,7 @@ class QPDF
void replaceObject(int objid, int generation, QPDFObjectHandle);
// Swap two objects given by ID. Prior to qpdf 10.2.1, existing QPDFObjectHandle instances that
// reference them objects not notice the swap, but this was fixed in 10.2.1.
// reference the objects did not notice the swap, but this was fixed in 10.2.1.
QPDF_DLL
void swapObjects(QPDFObjGen const& og1, QPDFObjGen const& og2);
QPDF_DLL

View File

@ -882,7 +882,13 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign)
void
QPDF::swapObjects(int objid1, int generation1, int objid2, int generation2)
{
swapObjects(QPDFObjGen(objid1, generation1), QPDFObjGen(objid2, generation2));
m->objects.swap(QPDFObjGen(objid1, generation1), QPDFObjGen(objid2, generation2));
}
void
QPDF::swapObjects(QPDFObjGen const& og1, QPDFObjGen const& og2)
{
m->objects.swap(og1, og2);
}
unsigned long long

View File

@ -1779,12 +1779,12 @@ Objects::erase(QPDFObjGen og)
}
void
QPDF::swapObjects(QPDFObjGen const& og1, QPDFObjGen const& og2)
Objects::swap(QPDFObjGen og1, QPDFObjGen og2)
{
// Force objects to be read from the input source if needed, then swap them in the cache.
m->objects.resolve(og1);
m->objects.resolve(og2);
m->objects.obj_cache[og1].object->swapWith(m->objects.obj_cache[og2].object);
resolve(og1);
resolve(og2);
obj_cache[og1].object->swapWith(obj_cache[og2].object);
}
size_t

View File

@ -445,6 +445,8 @@ class QPDF::Objects
void replace(QPDFObjGen og, QPDFObjectHandle oh);
void swap(QPDFObjGen og1, QPDFObjGen og2);
std::map<QPDFObjGen, Entry> obj_cache;
QPDFObjectHandle readObjectInStream(std::shared_ptr<InputSource>& input, int obj);