2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-06-21 19:32:20 +00:00

Stop using std::iterator (fixes #618)

Create the typedefs directly in iterators rather than deriving from
the deprecated std::iterator class.
This commit is contained in:
Jay Berkenbilt 2022-02-05 09:58:30 -05:00
parent 2e476e189a
commit af3f74de8c
4 changed files with 40 additions and 15 deletions

View File

@ -77,12 +77,17 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper
QPDF_DLL QPDF_DLL
bool findObject(std::string const& utf8, QPDFObjectHandle& oh); bool findObject(std::string const& utf8, QPDFObjectHandle& oh);
class iterator: public std::iterator< class iterator
std::bidirectional_iterator_tag,
std::pair<std::string, QPDFObjectHandle>>
{ {
friend class QPDFNameTreeObjectHelper; friend class QPDFNameTreeObjectHelper;
public: public:
typedef std::pair<std::string, QPDFObjectHandle> T;
using iterator_category = std::bidirectional_iterator_tag;
using value_type = T;
using difference_type = long;
using pointer = T*;
using reference = T&;
virtual ~iterator() = default; virtual ~iterator() = default;
QPDF_DLL QPDF_DLL
bool valid() const; bool valid() const;

View File

@ -96,12 +96,17 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper
bool findObjectAtOrBelow(numtree_number idx, QPDFObjectHandle& oh, bool findObjectAtOrBelow(numtree_number idx, QPDFObjectHandle& oh,
numtree_number& offset); numtree_number& offset);
class iterator: public std::iterator< class iterator
std::bidirectional_iterator_tag,
std::pair<numtree_number, QPDFObjectHandle>>
{ {
friend class QPDFNumberTreeObjectHelper; friend class QPDFNumberTreeObjectHelper;
public: public:
typedef std::pair<numtree_number, QPDFObjectHandle> T;
using iterator_category = std::bidirectional_iterator_tag;
using value_type = T;
using difference_type = long;
using pointer = T*;
using reference = T&;
virtual ~iterator() = default; virtual ~iterator() = default;
QPDF_DLL QPDF_DLL
bool valid() const; bool valid() const;

View File

@ -1479,12 +1479,17 @@ class QPDFObjectHandle::QPDFDictItems
QPDF_DLL QPDF_DLL
QPDFDictItems(QPDFObjectHandle const& oh); QPDFDictItems(QPDFObjectHandle const& oh);
class iterator: public std::iterator< class iterator
std::bidirectional_iterator_tag,
std::pair<std::string, QPDFObjectHandle>>
{ {
friend class QPDFDictItems; friend class QPDFDictItems;
public: public:
typedef std::pair<std::string, QPDFObjectHandle> T;
using iterator_category = std::bidirectional_iterator_tag;
using value_type = T;
using difference_type = long;
using pointer = T*;
using reference = T&;
QPDF_DLL QPDF_DLL
virtual ~iterator() = default; virtual ~iterator() = default;
QPDF_DLL QPDF_DLL
@ -1569,12 +1574,17 @@ class QPDFObjectHandle::QPDFArrayItems
QPDF_DLL QPDF_DLL
QPDFArrayItems(QPDFObjectHandle const& oh); QPDFArrayItems(QPDFObjectHandle const& oh);
class iterator: public std::iterator< class iterator
std::bidirectional_iterator_tag,
QPDFObjectHandle>
{ {
friend class QPDFArrayItems; friend class QPDFArrayItems;
public: public:
typedef QPDFObjectHandle T;
using iterator_category = std::bidirectional_iterator_tag;
using value_type = T;
using difference_type = long;
using pointer = T*;
using reference = T&;
QPDF_DLL QPDF_DLL
virtual ~iterator() = default; virtual ~iterator() = default;
QPDF_DLL QPDF_DLL

View File

@ -17,12 +17,17 @@ class NNTreeDetails
}; };
class NNTreeImpl; class NNTreeImpl;
class NNTreeIterator: public std::iterator< class NNTreeIterator
std::bidirectional_iterator_tag,
std::pair<QPDFObjectHandle, QPDFObjectHandle>>
{ {
friend class NNTreeImpl; friend class NNTreeImpl;
public: public:
typedef std::pair<QPDFObjectHandle, QPDFObjectHandle> T;
using iterator_category = std::bidirectional_iterator_tag;
using value_type = T;
using difference_type = long;
using pointer = T*;
using reference = T&;
virtual ~NNTreeIterator() = default; virtual ~NNTreeIterator() = default;
bool valid() const; bool valid() const;
NNTreeIterator& operator++(); NNTreeIterator& operator++();