-
On destruction of the QPDF object replace all indirect object references with direct nulls. Remove all existing code to release resolved references. Fixes performance issue due to interaction of resetting QPDFValue::qpdf and og members and prior code.
-
This doesn't need an explicit destructor anymore.
-
Now that QPDFObject.hh is out of the public API, we don't really need QPDFObjAccessor. Also, the function didn't have to be virtual anymore.
-
We don't put specific copyright banners on files that aren't installed.
-
This required moving some newly inlined functions back to the cc file, but that seems to have had no measurable performance impact.
-
Avd xcsv brvtns.
-
A bug was fixed between qpdf 8.4.2 and 9.0.0 regarding this type of file (see #305 and #311), but it was necessary to retest after some major refactoring work at the lexical and parsing layers. This lays the groundwork for including this in performance benchmarks and in the qpdf test suite rather than having to keep a large, non-redistributable file around. 20 arrays of 20K nulls is plenty for performance memory testing and doesn't take too long to run. Compared to qpdf 8.4.2, in qpdf 11.0.0, the file generated here uses 3% of the RAM and runs over 4 times faster.
-
Tidy QPDF::getAllPagesInternal and QPDF::pushInheritedAttributesToPageInternal
-
Split QPDFObject into QPDFObject and QPDFValue
-
Also, modify QPDFObject::swapWith to update the ObjGens of the swapped objects. Modify QPDF::newIndirect and QPDF::updateCache to keep object ObjGens up to date.
-
Modify QPDFParser::parse to call QPDF::getObject instead.
-
Add a new obj_cache entry or update an existing entry in place.
-
Also change QPDF::replaceObject and QPDF::swapObjects such that the QPDFObject assigned to an og in the obj_cache is never replaced; only QPDFObject::value is updated.