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,12 +77,17 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper
77 QPDF_DLL 77 QPDF_DLL
78 bool findObject(std::string const& utf8, QPDFObjectHandle& oh); 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 friend class QPDFNameTreeObjectHelper; 82 friend class QPDFNameTreeObjectHelper;
85 public: 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 virtual ~iterator() = default; 91 virtual ~iterator() = default;
87 QPDF_DLL 92 QPDF_DLL
88 bool valid() const; 93 bool valid() const;
include/qpdf/QPDFNumberTreeObjectHelper.hh
@@ -96,12 +96,17 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper @@ -96,12 +96,17 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper
96 bool findObjectAtOrBelow(numtree_number idx, QPDFObjectHandle& oh, 96 bool findObjectAtOrBelow(numtree_number idx, QPDFObjectHandle& oh,
97 numtree_number& offset); 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 friend class QPDFNumberTreeObjectHelper; 101 friend class QPDFNumberTreeObjectHelper;
104 public: 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 virtual ~iterator() = default; 110 virtual ~iterator() = default;
106 QPDF_DLL 111 QPDF_DLL
107 bool valid() const; 112 bool valid() const;
include/qpdf/QPDFObjectHandle.hh
@@ -1479,12 +1479,17 @@ class QPDFObjectHandle::QPDFDictItems @@ -1479,12 +1479,17 @@ class QPDFObjectHandle::QPDFDictItems
1479 QPDF_DLL 1479 QPDF_DLL
1480 QPDFDictItems(QPDFObjectHandle const& oh); 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 friend class QPDFDictItems; 1484 friend class QPDFDictItems;
1487 public: 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 QPDF_DLL 1493 QPDF_DLL
1489 virtual ~iterator() = default; 1494 virtual ~iterator() = default;
1490 QPDF_DLL 1495 QPDF_DLL
@@ -1569,12 +1574,17 @@ class QPDFObjectHandle::QPDFArrayItems @@ -1569,12 +1574,17 @@ class QPDFObjectHandle::QPDFArrayItems
1569 QPDF_DLL 1574 QPDF_DLL
1570 QPDFArrayItems(QPDFObjectHandle const& oh); 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 friend class QPDFArrayItems; 1579 friend class QPDFArrayItems;
1577 public: 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 QPDF_DLL 1588 QPDF_DLL
1579 virtual ~iterator() = default; 1589 virtual ~iterator() = default;
1580 QPDF_DLL 1590 QPDF_DLL
libqpdf/qpdf/NNTree.hh
@@ -17,12 +17,17 @@ class NNTreeDetails @@ -17,12 +17,17 @@ class NNTreeDetails
17 }; 17 };
18 18
19 class NNTreeImpl; 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 friend class NNTreeImpl; 22 friend class NNTreeImpl;
25 public: 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 virtual ~NNTreeIterator() = default; 31 virtual ~NNTreeIterator() = default;
27 bool valid() const; 32 bool valid() const;
28 NNTreeIterator& operator++(); 33 NNTreeIterator& operator++();