-
This comment expands all tabs using an 8-character tab-width. You should ignore this commit when using git blame or use git blame -w. In the early days, I used to use tabs where possible for indentation, since emacs did this automatically. In recent years, I have switched to only using spaces, which means qpdf source code has been a mixture of spaces and tabs. I have avoided cleaning this up because of not wanting gratuitous whitespaces change to cloud the output of git blame, but I changed my mind after discussing with users who view qpdf source code in editors/IDEs that have other tab widths by default and in light of the fact that I am planning to start applying automatic code formatting soon.
-
Clarify that names are to appear in canonical form with PDF escaping resolved when used in non-parsing QPDFObjectHandle APIs and their C API counterparts. See https://github.com/qpdf/qpdf/discussions/625.
-
Replace PointerHolder arrays wherever it can be done without breaking ABI.
-
* Don't surprise people with deprecation warnings * Provide detailed instructions and support for the transition
-
Create the typedefs directly in iterators rather than deriving from the deprecated std::iterator class.
-
* Use unique_ptr in place of shared_ptr in some cases * unique_ptr for arrays does not require a custom deleter * use std::make_unique (c++14) where possible
-
None of these are in the public API.
-
Use get() and use_count() instead. Add #define NO_POINTERHOLDER_DEPRECATION to remove deprecation markers for these only. This commit also removes all deprecated PointerHolder API calls from qpdf's code except in PointerHolder's test suite, which must continue to test the deprecated APIs.
-
PointerHolder will be replaced with shared_ptr, so let people start moving.
-
add qpdf_oh_new_binary_unicode_string and qpdf_oh_get_binary_utf8_value
-
Let argv be a null-terminated array. There is already code that assumes this, and it makes it easier to construct the arguments.
-
This makes it much more convention to use the initializeFromArgv functions since you can use string literals.
-
For optional parameter/choices, generate an overloaded config method that takes no arguments. This makes it possible to convert from a bare argument to one that takes an optional parameter without breaking binary compatibility.
-
Use "file" consistently for specifying a file path. We use "filename" when adding attachments for a completely different purpose.