Commit 4eb9f113876223516c0985a81a1c56380cff5a67
1 parent
7d7a7d08
Refactor `NNTreeIterator` and `PathElement`: replace `QPDFObjectHandle` with `qp…
…df::Dictionary`, update constructors, and streamline logic with `Dictionary` API.
Showing
2 changed files
with
10 additions
and
12 deletions
libqpdf/NNTree.cc
| ... | ... | @@ -64,7 +64,7 @@ NNTreeIterator::updateIValue(bool allow_invalid) |
| 64 | 64 | return; |
| 65 | 65 | } |
| 66 | 66 | |
| 67 | - if (item_number < 0 || !node.isDictionary()) { | |
| 67 | + if (item_number < 0 || !node) { | |
| 68 | 68 | if (!allow_invalid) { |
| 69 | 69 | throw std::logic_error( |
| 70 | 70 | "attempt made to dereference an invalid name/number tree iterator"); |
| ... | ... | @@ -74,12 +74,6 @@ NNTreeIterator::updateIValue(bool allow_invalid) |
| 74 | 74 | impl.error(node, "update ivalue: items array is too short"); |
| 75 | 75 | } |
| 76 | 76 | |
| 77 | -NNTreeIterator::PathElement::PathElement(QPDFObjectHandle const& node, int kid_number) : | |
| 78 | - node(node), | |
| 79 | - kid_number(kid_number) | |
| 80 | -{ | |
| 81 | -} | |
| 82 | - | |
| 83 | 77 | Dictionary |
| 84 | 78 | NNTreeIterator::getNextKid(PathElement& pe, bool backward) |
| 85 | 79 | { |
| ... | ... | @@ -349,7 +343,7 @@ NNTreeIterator::insertAfter(QPDFObjectHandle const& key, QPDFObjectHandle const& |
| 349 | 343 | return; |
| 350 | 344 | } |
| 351 | 345 | |
| 352 | - Array items = node.getKey(impl.itemsKey()); | |
| 346 | + Array items = node[impl.itemsKey()]; | |
| 353 | 347 | if (!items) { |
| 354 | 348 | impl.error(node, "node contains no items array"); |
| 355 | 349 | } |
| ... | ... | @@ -451,7 +445,7 @@ NNTreeIterator::remove() |
| 451 | 445 | |
| 452 | 446 | if (parent == path.end()) { |
| 453 | 447 | // We erased the very last item. Convert the root to an empty items array. |
| 454 | - element->node.removeKey("/Kids"); | |
| 448 | + element->node.erase("/Kids"); | |
| 455 | 449 | element->node.replaceKey(impl.itemsKey(), Array::empty()); |
| 456 | 450 | path.clear(); |
| 457 | 451 | setItemNumber(impl.tree_root, -1); | ... | ... |
libqpdf/qpdf/NNTree.hh
| ... | ... | @@ -81,9 +81,13 @@ class NNTreeIterator final |
| 81 | 81 | class PathElement |
| 82 | 82 | { |
| 83 | 83 | public: |
| 84 | - PathElement(QPDFObjectHandle const& node, int kid_number); | |
| 84 | + PathElement(qpdf::Dictionary const& node, int kid_number) : | |
| 85 | + node(node), | |
| 86 | + kid_number(kid_number) | |
| 87 | + { | |
| 88 | + } | |
| 85 | 89 | |
| 86 | - QPDFObjectHandle node; | |
| 90 | + qpdf::Dictionary node; | |
| 87 | 91 | int kid_number; |
| 88 | 92 | }; |
| 89 | 93 | |
| ... | ... | @@ -114,7 +118,7 @@ class NNTreeIterator final |
| 114 | 118 | |
| 115 | 119 | NNTreeImpl& impl; |
| 116 | 120 | std::list<PathElement> path; |
| 117 | - QPDFObjectHandle node; | |
| 121 | + qpdf::Dictionary node; | |
| 118 | 122 | int item_number{-1}; |
| 119 | 123 | value_type ivalue; |
| 120 | 124 | }; | ... | ... |