Commit af3f74de8cada6cc9fe0962164f4aca8393b7774
1 parent
2e476e18
Stop using std::iterator (fixes #618)
Create the typedefs directly in iterators rather than deriving from the deprecated std::iterator class.
Showing
4 changed files
with
40 additions
and
15 deletions
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++(); |