aboutsummaryrefslogtreecommitdiffstats
path: root/TODO
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-06-25 20:50:45 +0200
committerJay Berkenbilt <ejb@ql.org>2022-06-27 18:49:46 +0200
commitc810f0f21edf7416c6e7944d6b1619e308c764c3 (patch)
tree133d544eaab35ba4cdb55bef9d23ccd410c63485 /TODO
parentdb8a02c20eb79219a9bf907518454494088f3eb6 (diff)
downloadqpdf-c810f0f21edf7416c6e7944d6b1619e308c764c3.tar.zst
TODO: QPDFObject parent idea
Diffstat (limited to 'TODO')
-rw-r--r--TODO23
1 files changed, 23 insertions, 0 deletions
diff --git a/TODO b/TODO
index 270e9df6..645b5d1f 100644
--- a/TODO
+++ b/TODO
@@ -8,6 +8,29 @@ 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