summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2021-01-24 10:16:48 +0100
committerJay Berkenbilt <ejb@ql.org>2021-01-25 21:39:10 +0100
commit5816fb44b8ce24e8bb58cb30792e1c763d6cb163 (patch)
treea213191f94c80095f3f6f8261883ccd8ff95cfb9 /include
parent16a9bb3f6f63497946d0efbf403df92d0ce30745 (diff)
downloadqpdf-5816fb44b8ce24e8bb58cb30792e1c763d6cb163.tar.zst
name/number trees: insertAfter
Diffstat (limited to 'include')
-rw-r--r--include/qpdf/QPDFNameTreeObjectHelper.hh13
-rw-r--r--include/qpdf/QPDFNumberTreeObjectHelper.hh13
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;