diff options
author | Jay Berkenbilt <ejb@ql.org> | 2021-01-24 10:16:48 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2021-01-25 21:39:10 +0100 |
commit | 5816fb44b8ce24e8bb58cb30792e1c763d6cb163 (patch) | |
tree | a213191f94c80095f3f6f8261883ccd8ff95cfb9 /include | |
parent | 16a9bb3f6f63497946d0efbf403df92d0ce30745 (diff) | |
download | qpdf-5816fb44b8ce24e8bb58cb30792e1c763d6cb163.tar.zst |
name/number trees: insertAfter
Diffstat (limited to 'include')
-rw-r--r-- | include/qpdf/QPDFNameTreeObjectHelper.hh | 13 | ||||
-rw-r--r-- | include/qpdf/QPDFNumberTreeObjectHelper.hh | 13 |
2 files changed, 26 insertions, 0 deletions
diff --git a/include/qpdf/QPDFNameTreeObjectHelper.hh b/include/qpdf/QPDFNameTreeObjectHelper.hh index f0a9b479..ebc84735 100644 --- a/include/qpdf/QPDFNameTreeObjectHelper.hh +++ b/include/qpdf/QPDFNameTreeObjectHelper.hh @@ -112,6 +112,19 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper return ! operator==(other); } + // DANGER: this method can create inconsistent trees if not + // used properly! Insert a new item immediately after the + // current iterator and increment so that it points to the new + // item. If the current iterator is end(), insert at the + // beginning. This method does not check for proper ordering, + // so if you use it, you must ensure that the item you are + // inserting belongs where you are putting it. The reason for + // this method is that it is more efficient than insert() and + // can be used safely when you are creating a new tree and + // inserting items in sorted order. + QPDF_DLL + void insertAfter(std::string const& key, QPDFObjectHandle value); + private: iterator(std::shared_ptr<NNTreeIterator> const&); std::shared_ptr<NNTreeIterator> impl; diff --git a/include/qpdf/QPDFNumberTreeObjectHelper.hh b/include/qpdf/QPDFNumberTreeObjectHelper.hh index 43c438e4..040dc3b1 100644 --- a/include/qpdf/QPDFNumberTreeObjectHelper.hh +++ b/include/qpdf/QPDFNumberTreeObjectHelper.hh @@ -131,6 +131,19 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper return ! operator==(other); } + // DANGER: this method can create inconsistent trees if not + // used properly! Insert a new item immediately after the + // current iterator and increment so that it points to the new + // item. If the current iterator is end(), insert at the + // beginning. This method does not check for proper ordering, + // so if you use it, you must ensure that the item you are + // inserting belongs where you are putting it. The reason for + // this method is that it is more efficient than insert() and + // can be used safely when you are creating a new tree and + // inserting items in sorted order. + QPDF_DLL + void insertAfter(numtree_number key, QPDFObjectHandle value); + private: iterator(std::shared_ptr<NNTreeIterator> const&); std::shared_ptr<NNTreeIterator> impl; |