diff --git a/ChangeLog b/ChangeLog index 28bf6840..a71b3f18 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2013-06-14 Jay Berkenbilt + * Add new QPDFObjectHandle::getObjGen() method and indiciate in + comments that its use is favored over getObjectID() and + getGeneration() for most cases. + * Add new QPDFObjGen object to represent an object ID/generation pair. diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index ed02d3bb..81400056 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -454,7 +455,17 @@ class QPDFObjectHandle QPDFObjectHandle const& filter, QPDFObjectHandle const& decode_parms); - // return 0 for direct objects + // Access object ID and generation. For direct objects, return + // object ID 0. + + // NOTE: Be careful about calling getObjectID() and + // getGeneration() directly as this can lead to the pattern of + // depending on object ID or generation without the other. In + // general, when keeping track of object IDs, it's better to use + // QPDFObjGen instead. + + QPDF_DLL + QPDFObjGen getObjGen() const; QPDF_DLL int getObjectID() const; QPDF_DLL diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 373cd7bd..9a1aae4a 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -535,6 +535,12 @@ QPDFObjectHandle::replaceStreamData(PointerHolder provider, provider, filter, decode_parms); } +QPDFObjGen +QPDFObjectHandle::getObjGen() const +{ + return QPDFObjGen(this->objid, this->generation); +} + int QPDFObjectHandle::getObjectID() const {