diff options
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 52 |
1 files changed, 20 insertions, 32 deletions
@@ -8,29 +8,6 @@ Before Release: * Stay on top of https://github.com/pikepdf/pikepdf/pull/315 * Release qtest with updates to qtest-driver and copy back into qpdf -Parent pointer idea: - -* Have replaceKey, removeKey, and eraseItem return the old values. The - comments will clarify the difference between these and the andGet - versions. -* Add std::weak_ptr<QPDFObject> parent to QPDFObject. When adding a - direct object to an array or dictionary, set its parent. When - removing it, clear the parent pointer. -* When a direct object that already has a parent is added to - something, it is a warning and will become an error in qpdf 12. - There needs to be unsafe add methods used by unsafeShallowCopy. - These will add but not modify the parent pointer. - -This allows an object to be moved from one object to another by -removing it, which returns the now orphaned object, and then inserting -it somewhere else. It also doesn't break the pattern of adding a -direct object to something and subsequently mutating it. It just -prevents the same object from being added to more than one thing. - -Note that arrays and dictionaries still need to contain -QPDFObjectHandle because of indirect objects. This only pertains to -direct objects, which are always "resolved" in QPDFObjectHandle. - Next: * JSON v2 fixes @@ -42,10 +19,6 @@ Pending changes: appimage build specifically is setting the runpath, which is actually desirable in this case. Make sure to understand and document this. Maybe add a check for it in the build. -* Make job JSON accept a single element and treat as an array of one - when an array is expected. This allows for making things repeatable - in the future without breaking compatibility and is needed for the - remote-attachment fix to be backward-compatible. * Decide what to do about #664 (get*Box) * Add an option --ignore-encryption to ignore encryption information and treat encrypted files as if they weren't encrypted. This should @@ -70,6 +43,26 @@ Pending changes: about the case of more than 65,536 pages. If the top node has more than 256 children, we'll live with it. +Parent pointer idea: + +* Add std::weak_ptr<QPDFObject> parent to QPDFObject. When adding a + direct object to an array or dictionary, set its parent. When + removing it, clear the parent pointer. +* When a direct object that already has a parent is added to + something, it is a warning and will become an error in qpdf 12. + There needs to be unsafe add methods used by unsafeShallowCopy. + These will add but not modify the parent pointer. + +This allows an object to be moved from one object to another by +removing it, which returns the now orphaned object, and then inserting +it somewhere else. It also doesn't break the pattern of adding a +direct object to something and subsequently mutating it. It just +prevents the same object from being added to more than one thing. + +Note that arrays and dictionaries still need to contain +QPDFObjectHandle because of indirect objects. This only pertains to +direct objects, which are always "resolved" in QPDFObjectHandle. + Soon: Break ground on "Document-level work" @@ -131,11 +124,6 @@ JSON v2 fixes compatibility, but at least this gives people a namespace they can know will never conflict with future keys. - * Change schema validation so that if the schema contains an array - with more than one element, the output has to have an array with - the same number of elements whose individual elements are - validated according to the regular rules. - * When reading back in, we'll have to call pushInheritedAttributesToPage or getAllPages based on the values of the metadata. |