-
Add static parse methods. Make all external access to QPDFParser through static methods. Make all non-static methods including constructors private.
-
- Add missing export for operator QPDFObjGen. - Fix handling of indirect references. The use of the type_code method in various switch statements bypassed the special handling of ::ot_reference objects. Replace with new method resolved_type_code. Add tests for ::ot_reference objects.
-
Avoid creating new identical descriptions for each content stream token.
-
Also remove some shared pointers and use std::string instead of Pl_Buffer in Pl_QPDFTokenizer.
-
Add new private Util.hh header to define inline functions and expose as ordinary functions in QUtil.
-
- Remove unnecessary QPDF_DLLs - make deleted constructors public - move some comments to support tooltips - modernise some constructors and destructors - change some member shared pointers to unique pointers
-
Move all stream-specific methods to new class qpdf::Stream
-
Move all array-specific methods to new class qpdf::Array.
-
Move all dictionary specific methods to BaseDictionary. Create new subclass Dictionary to allow QPDFObjectHandle to access the moved methods.
-
The new class is only usable as base classes and does not support direct instantiation or upcasting. Add operators to convert to bool, QPDFObjectHandle and QPDFObjGen. Derive QPDFObjectHandle from BaseHandle and make final.
-
This improves indentation of long strings. This commit also fixes some trailing whitespace in ChangeLog.
-
Also, tidy pipeline constructors and make subclasses final where possible.
-
Change the return type to a std::pair<bool, QPDFObjectHandle> in order to allow a default constructed object handle (which is currently returned to indicate failure) to become a valid object.
-
Refactor Pl_QPDFTokenizer
-
Prepare for treating indirect references differently depending on whether we are parsing a PDF file (in which case reference to objects not in the xref table are null even if they are in the object cache) or whether parse from user code (in which case an indirect reference can refer to a user created object).