From 5816fb44b8ce24e8bb58cb30792e1c763d6cb163 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 24 Jan 2021 04:16:48 -0500 Subject: name/number trees: insertAfter --- include/qpdf/QPDFNameTreeObjectHelper.hh | 13 +++++++++++++ include/qpdf/QPDFNumberTreeObjectHelper.hh | 13 +++++++++++++ 2 files changed, 26 insertions(+) (limited to 'include') 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 const&); std::shared_ptr 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 const&); std::shared_ptr impl; -- cgit v1.2.3-70-g09d2