aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/qpdf/QPDFOutlineDocumentHelper.hh10
-rw-r--r--libqpdf/QPDFOutlineDocumentHelper.cc19
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 <qpdf/QPDF.hh>
#include <qpdf/QPDFDocumentHelper.hh>
#include <qpdf/QPDFNameTreeObjectHelper.hh>
+#include <qpdf/QPDFObjGen.hh>
#include <qpdf/QPDFOutlineObjectHelper.hh>
-#include <qpdf/QPDF.hh>
#include <map>
-#include <set>
#include <vector>
#include <qpdf/DLL.h>
@@ -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<QPDFOutlineObjectHelper> outlines;
- std::set<QPDFObjGen> seen;
+ QPDFObjGen::set seen;
QPDFObjectHandle dest_dict;
std::shared_ptr<QPDFNameTreeObjectHelper> names_dest;
std::map<QPDFObjGen, std::vector<QPDFOutlineObjectHelper>> 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<QPDFObjGen> 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;
-}