diff options
author | Jay Berkenbilt <ejb@ql.org> | 2021-01-25 14:05:43 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2021-01-26 15:12:23 +0100 |
commit | 8ed3e8c79b5cbccfeccee865e555b68025ee2c1f (patch) | |
tree | 159063cdb1773605254e0436365d4eeb137282ff /include/qpdf/QPDFNumberTreeObjectHelper.hh | |
parent | e7e20772ed29f3eb9756b31fe0bd9bc29a445891 (diff) | |
download | qpdf-8ed3e8c79b5cbccfeccee865e555b68025ee2c1f.tar.zst |
NNTree: rework iterators to be more memory efficient
Keep a std::pair internal to the iterators so that operator* can
return a reference and operator-> can work, and each can work without
copying pairs of objects around.
Diffstat (limited to 'include/qpdf/QPDFNumberTreeObjectHelper.hh')
-rw-r--r-- | include/qpdf/QPDFNumberTreeObjectHelper.hh | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/include/qpdf/QPDFNumberTreeObjectHelper.hh b/include/qpdf/QPDFNumberTreeObjectHelper.hh index 70695327..7343978b 100644 --- a/include/qpdf/QPDFNumberTreeObjectHelper.hh +++ b/include/qpdf/QPDFNumberTreeObjectHelper.hh @@ -94,9 +94,6 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper class iterator: public std::iterator< std::bidirectional_iterator_tag, - std::pair<numtree_number, QPDFObjectHandle>, - void, - std::pair<numtree_number, QPDFObjectHandle>*, std::pair<numtree_number, QPDFObjectHandle>> { friend class QPDFNumberTreeObjectHelper; @@ -124,6 +121,8 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper QPDF_DLL reference operator*(); QPDF_DLL + pointer operator->(); + QPDF_DLL bool operator==(iterator const& other) const; QPDF_DLL bool operator!=(iterator const& other) const @@ -150,8 +149,11 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper void remove(); private: + void updateIValue(); + iterator(std::shared_ptr<NNTreeIterator> const&); std::shared_ptr<NNTreeIterator> impl; + value_type ivalue; }; // The iterator looks like map iterator, so i.first is a string |