From 55abecc42dc44d1b93337afe9628fea029a85696 Mon Sep 17 00:00:00 2001 From: m-holger Date: Thu, 5 Jan 2023 12:20:37 +0000 Subject: [PATCH] Use QPDFObjGen::set in QPDFOutlineDocumentHelper --- include/qpdf/QPDFOutlineDocumentHelper.hh | 10 +++++----- libqpdf/QPDFOutlineDocumentHelper.cc | 19 ++----------------- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/include/qpdf/QPDFOutlineDocumentHelper.hh b/include/qpdf/QPDFOutlineDocumentHelper.hh index cd11884d..38310302 100644 --- a/include/qpdf/QPDFOutlineDocumentHelper.hh +++ b/include/qpdf/QPDFOutlineDocumentHelper.hh @@ -22,13 +22,13 @@ #ifndef QPDFOUTLINEDOCUMENTHELPER_HH #define QPDFOUTLINEDOCUMENTHELPER_HH +#include #include #include +#include #include -#include #include -#include #include #include @@ -69,16 +69,16 @@ class QPDFOutlineDocumentHelper: public QPDFDocumentHelper { friend class QPDFOutlineObjectHelper; + // ABI: remove QPDF_DLL and pass og by value. QPDF_DLL static bool checkSeen(QPDFOutlineDocumentHelper& dh, QPDFObjGen const& og) { - return dh.checkSeen(og); + return !dh.m->seen.add(og); } }; private: - bool checkSeen(QPDFObjGen const& og); void initializeByPage(); class Members @@ -94,7 +94,7 @@ class QPDFOutlineDocumentHelper: public QPDFDocumentHelper Members(Members const&) = delete; std::vector outlines; - std::set seen; + QPDFObjGen::set seen; QPDFObjectHandle dest_dict; std::shared_ptr names_dest; std::map> by_page; diff --git a/libqpdf/QPDFOutlineDocumentHelper.cc b/libqpdf/QPDFOutlineDocumentHelper.cc index 5b2f71f6..e3485bfd 100644 --- a/libqpdf/QPDFOutlineDocumentHelper.cc +++ b/libqpdf/QPDFOutlineDocumentHelper.cc @@ -15,13 +15,8 @@ QPDFOutlineDocumentHelper::QPDFOutlineDocumentHelper(QPDF& qpdf) : return; } QPDFObjectHandle cur = outlines.getKey("/First"); - std::set seen; - while (!cur.isNull()) { - auto og = cur.getObjGen(); - if (seen.count(og)) { - break; - } - seen.insert(og); + QPDFObjGen::set seen; + while (!cur.isNull() && seen.add(cur)) { this->m->outlines.push_back( QPDFOutlineObjectHelper::Accessor::create(cur, *this, 1)); cur = cur.getKey("/Next"); @@ -104,13 +99,3 @@ QPDFOutlineDocumentHelper::resolveNamedDest(QPDFObjectHandle name) } return result; } - -bool -QPDFOutlineDocumentHelper::checkSeen(QPDFObjGen const& og) -{ - if (this->m->seen.count(og) > 0) { - return true; - } - this->m->seen.insert(og); - return false; -}