-
Sparse arrays are rare. Dynamically create the variables needed to manage them only when needed.
-
There are no reasons other than historical to use size_t. On balance, using map is more efficient. Hold shared pointers to QPDFObjects rather than QPDFObjectHandles for consistencey with QPDF_Array.
-
Also, add const overload of QPDFObjectHandle::getObj
-
Stop using nullptr to represent null objects. Count null array elements and trigger creation of sparse arrays if null count is greater than 100.
-
Add temporary clone of SparseOHArray to implement non-sparse mode.
-
Add optional parameter shallow. Change logic errors to runtime errors.
-
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.
-
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.