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
bool findObject(std::string const& utf8, QPDFObjectHandle& oh);
class iterator: public std::iterator<
std::bidirectional_iterator_tag,
std::pair<std::string, QPDFObjectHandle>>
class iterator
{
friend class QPDFNameTreeObjectHelper;
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;
QPDF_DLL
bool valid() const;

View File

@ -96,12 +96,17 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper
bool findObjectAtOrBelow(numtree_number idx, QPDFObjectHandle& oh,
numtree_number& offset);
class iterator: public std::iterator<
std::bidirectional_iterator_tag,
std::pair<numtree_number, QPDFObjectHandle>>
class iterator
{
friend class QPDFNumberTreeObjectHelper;
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;
QPDF_DLL
bool valid() const;

View File

@ -1479,12 +1479,17 @@ class QPDFObjectHandle::QPDFDictItems
QPDF_DLL
QPDFDictItems(QPDFObjectHandle const& oh);
class iterator: public std::iterator<
std::bidirectional_iterator_tag,
std::pair<std::string, QPDFObjectHandle>>
class iterator
{
friend class QPDFDictItems;
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
virtual ~iterator() = default;
QPDF_DLL
@ -1569,12 +1574,17 @@ class QPDFObjectHandle::QPDFArrayItems
QPDF_DLL
QPDFArrayItems(QPDFObjectHandle const& oh);
class iterator: public std::iterator<
std::bidirectional_iterator_tag,
QPDFObjectHandle>
class iterator
{
friend class QPDFArrayItems;
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
virtual ~iterator() = default;
QPDF_DLL

View File

@ -17,12 +17,17 @@ class NNTreeDetails
};
class NNTreeImpl;
class NNTreeIterator: public std::iterator<
std::bidirectional_iterator_tag,
std::pair<QPDFObjectHandle, QPDFObjectHandle>>
class NNTreeIterator
{
friend class NNTreeImpl;
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;
bool valid() const;
NNTreeIterator& operator++();