Commit af3f74de8cada6cc9fe0962164f4aca8393b7774

Authored by Jay Berkenbilt
1 parent 2e476e18

Stop using std::iterator (fixes #618)

Create the typedefs directly in iterators rather than deriving from
the deprecated std::iterator class.
include/qpdf/QPDFNameTreeObjectHelper.hh
... ... @@ -77,12 +77,17 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper
77 77 QPDF_DLL
78 78 bool findObject(std::string const& utf8, QPDFObjectHandle& oh);
79 79  
80   - class iterator: public std::iterator<
81   - std::bidirectional_iterator_tag,
82   - std::pair<std::string, QPDFObjectHandle>>
  80 + class iterator
83 81 {
84 82 friend class QPDFNameTreeObjectHelper;
85 83 public:
  84 + typedef std::pair<std::string, QPDFObjectHandle> T;
  85 + using iterator_category = std::bidirectional_iterator_tag;
  86 + using value_type = T;
  87 + using difference_type = long;
  88 + using pointer = T*;
  89 + using reference = T&;
  90 +
86 91 virtual ~iterator() = default;
87 92 QPDF_DLL
88 93 bool valid() const;
... ...
include/qpdf/QPDFNumberTreeObjectHelper.hh
... ... @@ -96,12 +96,17 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper
96 96 bool findObjectAtOrBelow(numtree_number idx, QPDFObjectHandle& oh,
97 97 numtree_number& offset);
98 98  
99   - class iterator: public std::iterator<
100   - std::bidirectional_iterator_tag,
101   - std::pair<numtree_number, QPDFObjectHandle>>
  99 + class iterator
102 100 {
103 101 friend class QPDFNumberTreeObjectHelper;
104 102 public:
  103 + typedef std::pair<numtree_number, QPDFObjectHandle> T;
  104 + using iterator_category = std::bidirectional_iterator_tag;
  105 + using value_type = T;
  106 + using difference_type = long;
  107 + using pointer = T*;
  108 + using reference = T&;
  109 +
105 110 virtual ~iterator() = default;
106 111 QPDF_DLL
107 112 bool valid() const;
... ...
include/qpdf/QPDFObjectHandle.hh
... ... @@ -1479,12 +1479,17 @@ class QPDFObjectHandle::QPDFDictItems
1479 1479 QPDF_DLL
1480 1480 QPDFDictItems(QPDFObjectHandle const& oh);
1481 1481  
1482   - class iterator: public std::iterator<
1483   - std::bidirectional_iterator_tag,
1484   - std::pair<std::string, QPDFObjectHandle>>
  1482 + class iterator
1485 1483 {
1486 1484 friend class QPDFDictItems;
1487 1485 public:
  1486 + typedef std::pair<std::string, QPDFObjectHandle> T;
  1487 + using iterator_category = std::bidirectional_iterator_tag;
  1488 + using value_type = T;
  1489 + using difference_type = long;
  1490 + using pointer = T*;
  1491 + using reference = T&;
  1492 +
1488 1493 QPDF_DLL
1489 1494 virtual ~iterator() = default;
1490 1495 QPDF_DLL
... ... @@ -1569,12 +1574,17 @@ class QPDFObjectHandle::QPDFArrayItems
1569 1574 QPDF_DLL
1570 1575 QPDFArrayItems(QPDFObjectHandle const& oh);
1571 1576  
1572   - class iterator: public std::iterator<
1573   - std::bidirectional_iterator_tag,
1574   - QPDFObjectHandle>
  1577 + class iterator
1575 1578 {
1576 1579 friend class QPDFArrayItems;
1577 1580 public:
  1581 + typedef QPDFObjectHandle T;
  1582 + using iterator_category = std::bidirectional_iterator_tag;
  1583 + using value_type = T;
  1584 + using difference_type = long;
  1585 + using pointer = T*;
  1586 + using reference = T&;
  1587 +
1578 1588 QPDF_DLL
1579 1589 virtual ~iterator() = default;
1580 1590 QPDF_DLL
... ...
libqpdf/qpdf/NNTree.hh
... ... @@ -17,12 +17,17 @@ class NNTreeDetails
17 17 };
18 18  
19 19 class NNTreeImpl;
20   -class NNTreeIterator: public std::iterator<
21   - std::bidirectional_iterator_tag,
22   - std::pair<QPDFObjectHandle, QPDFObjectHandle>>
  20 +class NNTreeIterator
23 21 {
24 22 friend class NNTreeImpl;
25 23 public:
  24 + typedef std::pair<QPDFObjectHandle, QPDFObjectHandle> T;
  25 + using iterator_category = std::bidirectional_iterator_tag;
  26 + using value_type = T;
  27 + using difference_type = long;
  28 + using pointer = T*;
  29 + using reference = T&;
  30 +
26 31 virtual ~NNTreeIterator() = default;
27 32 bool valid() const;
28 33 NNTreeIterator& operator++();
... ...