-
Also, name the type QPDFValue::Description.
-
Avoid dynamic casting.
-
Exclude uninitialized, destroyed and reserved objects.
-
…ternal2 and copyObject2
-
copyObject2 repeats a second time what new_obj = QPDFObjectHandle(obj->copy(true)) in shallowCopyInternal2 already did.
-
…ternal2 and copyObject2
-
Have separate versions for unsafeShallowCopy, shallowCopy and makeDirect.
-
Add optional parameter shallow. Change logic errors to runtime errors.
-
Replace operator== and operator!=, which were testing for the same underlying object, with isSameObjectAs. This change was motivated by the fact that pikepdf internally had its own operator== method for QPDFObjectHandle that did structural comparison. I backed out qpdf's operator== as a courtesy to pikepdf (in my own testing) but also because I think people might naturally assume that operator== does a structural comparison, and isSameObjectAs is clearer in its intent.
-
QPDFValueProxy wasn't a good name for it. We decided the evil of having the header file be named QPDFObject_private.hh was less than the evil of having the class be named something other than what it should have been named.
-
Preparing to change the class name back to QPDFObject
-
I decided that it's actually fine to copy a direct object to another QPDF. Even if we eventually prevent a QPDFObject from having multiple parents, this could happen if an object is moved.
-
When a QPDF is destroyed, changing indirect objects to direct nulls makes them effectively disappear silently when they sneak into other places. Instead, we should treat this as an error. Adding a destroyed object type makes this possible.