Commit 80ed3076a02a40175760f8ddf88bbee2e1604d23
1 parent
496ca2e4
Remove deprecated name/number tree constructors
Remove the name/number tree object helper constructors that don't take a QPDF&.
Showing
11 changed files
with
31 additions
and
113 deletions
TODO
| @@ -481,10 +481,6 @@ Comments appear in the code prefixed by "ABI" | @@ -481,10 +481,6 @@ Comments appear in the code prefixed by "ABI" | ||
| 481 | * Search for ABI to find items not listed here. | 481 | * Search for ABI to find items not listed here. |
| 482 | * See where anonymous namespaces can be used to keep things private to | 482 | * See where anonymous namespaces can be used to keep things private to |
| 483 | a source file. Search for `(class|struct)` in **/*.cc. | 483 | a source file. Search for `(class|struct)` in **/*.cc. |
| 484 | -* After removing legacy QPDFNameTreeObjectHelper and | ||
| 485 | - QPDFNumberTreeObjectHelper constructors, NNTreeImpl can switch to | ||
| 486 | - having a QPDF reference and assume that the reference is always | ||
| 487 | - valid. | ||
| 488 | * Having QPDFObjectHandle setters return Class& to allow for | 484 | * Having QPDFObjectHandle setters return Class& to allow for |
| 489 | use of fluent interfaces. This includes array and dictionary | 485 | use of fluent interfaces. This includes array and dictionary |
| 490 | mutators. | 486 | mutators. |
include/qpdf/QPDFNameTreeObjectHelper.hh
| @@ -50,13 +50,6 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper | @@ -50,13 +50,6 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper | ||
| 50 | QPDF_DLL | 50 | QPDF_DLL |
| 51 | QPDFNameTreeObjectHelper(QPDFObjectHandle, QPDF&, bool auto_repair = true); | 51 | QPDFNameTreeObjectHelper(QPDFObjectHandle, QPDF&, bool auto_repair = true); |
| 52 | 52 | ||
| 53 | - // ABI: Legacy Constructor will be removed in QPDF 11. A | ||
| 54 | - // QPDFNameTreeObjectHelper constructed in this way can't be | ||
| 55 | - // modified or repaired and will silently ignore problems in the | ||
| 56 | - // structure. | ||
| 57 | - [[deprecated("use constructor that takes QPDF&")]] QPDF_DLL | ||
| 58 | - QPDFNameTreeObjectHelper(QPDFObjectHandle); | ||
| 59 | - | ||
| 60 | // Create an empty name tree | 53 | // Create an empty name tree |
| 61 | QPDF_DLL | 54 | QPDF_DLL |
| 62 | static QPDFNameTreeObjectHelper newEmpty(QPDF&, bool auto_repair = true); | 55 | static QPDFNameTreeObjectHelper newEmpty(QPDF&, bool auto_repair = true); |
| @@ -197,7 +190,7 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper | @@ -197,7 +190,7 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper | ||
| 197 | ~Members() = default; | 190 | ~Members() = default; |
| 198 | 191 | ||
| 199 | private: | 192 | private: |
| 200 | - Members(QPDFObjectHandle& oh, QPDF*, bool auto_repair); | 193 | + Members(QPDFObjectHandle& oh, QPDF&, bool auto_repair); |
| 201 | Members(Members const&) = delete; | 194 | Members(Members const&) = delete; |
| 202 | 195 | ||
| 203 | std::shared_ptr<NNTreeImpl> impl; | 196 | std::shared_ptr<NNTreeImpl> impl; |
include/qpdf/QPDFNumberTreeObjectHelper.hh
| @@ -48,13 +48,6 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper | @@ -48,13 +48,6 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper | ||
| 48 | QPDFNumberTreeObjectHelper( | 48 | QPDFNumberTreeObjectHelper( |
| 49 | QPDFObjectHandle, QPDF&, bool auto_repair = true); | 49 | QPDFObjectHandle, QPDF&, bool auto_repair = true); |
| 50 | 50 | ||
| 51 | - // ABI: Legacy Constructor will be removed in QPDF 11. A | ||
| 52 | - // QPDFNumberTreeObjectHelper constructed in this way can't be | ||
| 53 | - // modified or repaired and will silently ignore problems in the | ||
| 54 | - // structure. | ||
| 55 | - [[deprecated("use constructor that takes QPDF&")]] QPDF_DLL | ||
| 56 | - QPDFNumberTreeObjectHelper(QPDFObjectHandle); | ||
| 57 | - | ||
| 58 | QPDF_DLL | 51 | QPDF_DLL |
| 59 | virtual ~QPDFNumberTreeObjectHelper() = default; | 52 | virtual ~QPDFNumberTreeObjectHelper() = default; |
| 60 | 53 | ||
| @@ -217,7 +210,7 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper | @@ -217,7 +210,7 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper | ||
| 217 | ~Members() = default; | 210 | ~Members() = default; |
| 218 | 211 | ||
| 219 | private: | 212 | private: |
| 220 | - Members(QPDFObjectHandle& oh, QPDF*, bool auto_repair); | 213 | + Members(QPDFObjectHandle& oh, QPDF&, bool auto_repair); |
| 221 | Members(Members const&) = delete; | 214 | Members(Members const&) = delete; |
| 222 | 215 | ||
| 223 | std::shared_ptr<NNTreeImpl> impl; | 216 | std::shared_ptr<NNTreeImpl> impl; |
libqpdf/NNTree.cc
| @@ -16,37 +16,23 @@ get_description(QPDFObjectHandle& node) | @@ -16,37 +16,23 @@ get_description(QPDFObjectHandle& node) | ||
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | static void | 18 | static void |
| 19 | -warn(QPDF* qpdf, QPDFObjectHandle& node, std::string const& msg) | 19 | +warn(QPDF& qpdf, QPDFObjectHandle& node, std::string const& msg) |
| 20 | { | 20 | { |
| 21 | - // ABI: in qpdf 11, change to a reference. | ||
| 22 | - | ||
| 23 | - if (qpdf) { | ||
| 24 | - qpdf->warn( | ||
| 25 | - // line-break | ||
| 26 | - QPDFExc( | ||
| 27 | - qpdf_e_damaged_pdf, | ||
| 28 | - qpdf->getFilename(), | ||
| 29 | - get_description(node), | ||
| 30 | - 0, | ||
| 31 | - msg)); | ||
| 32 | - } | 21 | + qpdf.warn( |
| 22 | + // line-break | ||
| 23 | + QPDFExc( | ||
| 24 | + qpdf_e_damaged_pdf, | ||
| 25 | + qpdf.getFilename(), | ||
| 26 | + get_description(node), | ||
| 27 | + 0, | ||
| 28 | + msg)); | ||
| 33 | } | 29 | } |
| 34 | 30 | ||
| 35 | static void | 31 | static void |
| 36 | -error(QPDF* qpdf, QPDFObjectHandle& node, std::string const& msg) | 32 | +error(QPDF& qpdf, QPDFObjectHandle& node, std::string const& msg) |
| 37 | { | 33 | { |
| 38 | - // ABI: in qpdf 11, change to a reference. | ||
| 39 | - | ||
| 40 | - if (qpdf) { | ||
| 41 | - throw QPDFExc( | ||
| 42 | - qpdf_e_damaged_pdf, | ||
| 43 | - qpdf->getFilename(), | ||
| 44 | - get_description(node), | ||
| 45 | - 0, | ||
| 46 | - msg); | ||
| 47 | - } else { | ||
| 48 | - throw std::runtime_error(get_description(node) + ": " + msg); | ||
| 49 | - } | 34 | + throw QPDFExc( |
| 35 | + qpdf_e_damaged_pdf, qpdf.getFilename(), get_description(node), 0, msg); | ||
| 50 | } | 36 | } |
| 51 | 37 | ||
| 52 | NNTreeIterator::NNTreeIterator(NNTreeImpl& impl) : | 38 | NNTreeIterator::NNTreeIterator(NNTreeImpl& impl) : |
| @@ -293,9 +279,6 @@ NNTreeIterator::split( | @@ -293,9 +279,6 @@ NNTreeIterator::split( | ||
| 293 | // node: A | 279 | // node: A |
| 294 | // item_number: 0 | 280 | // item_number: 0 |
| 295 | 281 | ||
| 296 | - if (!this->impl.qpdf) { | ||
| 297 | - throw std::logic_error("NNTreeIterator::split called with null qpdf"); | ||
| 298 | - } | ||
| 299 | if (!valid()) { | 282 | if (!valid()) { |
| 300 | throw std::logic_error( | 283 | throw std::logic_error( |
| 301 | "NNTreeIterator::split called an invalid iterator"); | 284 | "NNTreeIterator::split called an invalid iterator"); |
| @@ -361,7 +344,7 @@ NNTreeIterator::split( | @@ -361,7 +344,7 @@ NNTreeIterator::split( | ||
| 361 | // same way. | 344 | // same way. |
| 362 | 345 | ||
| 363 | auto first_node = | 346 | auto first_node = |
| 364 | - impl.qpdf->makeIndirectObject(QPDFObjectHandle::newDictionary()); | 347 | + impl.qpdf.makeIndirectObject(QPDFObjectHandle::newDictionary()); |
| 365 | first_node.replaceKey(key, first_half); | 348 | first_node.replaceKey(key, first_half); |
| 366 | QPDFObjectHandle new_kids = QPDFObjectHandle::newArray(); | 349 | QPDFObjectHandle new_kids = QPDFObjectHandle::newArray(); |
| 367 | new_kids.appendItem(first_node); | 350 | new_kids.appendItem(first_node); |
| @@ -397,7 +380,7 @@ NNTreeIterator::split( | @@ -397,7 +380,7 @@ NNTreeIterator::split( | ||
| 397 | 380 | ||
| 398 | // Create a new node to contain the second half | 381 | // Create a new node to contain the second half |
| 399 | QPDFObjectHandle second_node = | 382 | QPDFObjectHandle second_node = |
| 400 | - impl.qpdf->makeIndirectObject(QPDFObjectHandle::newDictionary()); | 383 | + impl.qpdf.makeIndirectObject(QPDFObjectHandle::newDictionary()); |
| 401 | second_node.replaceKey(key, second_half); | 384 | second_node.replaceKey(key, second_half); |
| 402 | resetLimits(second_node, parent); | 385 | resetLimits(second_node, parent); |
| 403 | 386 | ||
| @@ -705,7 +688,7 @@ NNTreeIterator::deepen(QPDFObjectHandle node, bool first, bool allow_empty) | @@ -705,7 +688,7 @@ NNTreeIterator::deepen(QPDFObjectHandle node, bool first, bool allow_empty) | ||
| 705 | addPathElement(node, kid_number); | 688 | addPathElement(node, kid_number); |
| 706 | auto next = kids.getArrayItem(kid_number); | 689 | auto next = kids.getArrayItem(kid_number); |
| 707 | if (!next.isIndirect()) { | 690 | if (!next.isIndirect()) { |
| 708 | - if (impl.qpdf && impl.auto_repair) { | 691 | + if (impl.auto_repair) { |
| 709 | QTC::TC("qpdf", "NNTree fix indirect kid"); | 692 | QTC::TC("qpdf", "NNTree fix indirect kid"); |
| 710 | warn( | 693 | warn( |
| 711 | impl.qpdf, | 694 | impl.qpdf, |
| @@ -713,7 +696,7 @@ NNTreeIterator::deepen(QPDFObjectHandle node, bool first, bool allow_empty) | @@ -713,7 +696,7 @@ NNTreeIterator::deepen(QPDFObjectHandle node, bool first, bool allow_empty) | ||
| 713 | ("converting kid number " + | 696 | ("converting kid number " + |
| 714 | QUtil::int_to_string(kid_number) + | 697 | QUtil::int_to_string(kid_number) + |
| 715 | " to an indirect object")); | 698 | " to an indirect object")); |
| 716 | - next = impl.qpdf->makeIndirectObject(next); | 699 | + next = impl.qpdf.makeIndirectObject(next); |
| 717 | kids.setArrayItem(kid_number, next); | 700 | kids.setArrayItem(kid_number, next); |
| 718 | } else { | 701 | } else { |
| 719 | QTC::TC("qpdf", "NNTree warn indirect kid"); | 702 | QTC::TC("qpdf", "NNTree warn indirect kid"); |
| @@ -749,7 +732,7 @@ NNTreeIterator::deepen(QPDFObjectHandle node, bool first, bool allow_empty) | @@ -749,7 +732,7 @@ NNTreeIterator::deepen(QPDFObjectHandle node, bool first, bool allow_empty) | ||
| 749 | 732 | ||
| 750 | NNTreeImpl::NNTreeImpl( | 733 | NNTreeImpl::NNTreeImpl( |
| 751 | NNTreeDetails const& details, | 734 | NNTreeDetails const& details, |
| 752 | - QPDF* qpdf, | 735 | + QPDF& qpdf, |
| 753 | QPDFObjectHandle& oh, | 736 | QPDFObjectHandle& oh, |
| 754 | bool auto_repair) : | 737 | bool auto_repair) : |
| 755 | details(details), | 738 | details(details), |
libqpdf/QPDFNameTreeObjectHelper.cc
| @@ -32,7 +32,7 @@ class NameTreeDetails: public NNTreeDetails | @@ -32,7 +32,7 @@ class NameTreeDetails: public NNTreeDetails | ||
| 32 | static NameTreeDetails name_tree_details; | 32 | static NameTreeDetails name_tree_details; |
| 33 | 33 | ||
| 34 | QPDFNameTreeObjectHelper::Members::Members( | 34 | QPDFNameTreeObjectHelper::Members::Members( |
| 35 | - QPDFObjectHandle& oh, QPDF* q, bool auto_repair) : | 35 | + QPDFObjectHandle& oh, QPDF& q, bool auto_repair) : |
| 36 | impl(std::make_shared<NNTreeImpl>(name_tree_details, q, oh, auto_repair)) | 36 | impl(std::make_shared<NNTreeImpl>(name_tree_details, q, oh, auto_repair)) |
| 37 | { | 37 | { |
| 38 | } | 38 | } |
| @@ -40,13 +40,7 @@ QPDFNameTreeObjectHelper::Members::Members( | @@ -40,13 +40,7 @@ QPDFNameTreeObjectHelper::Members::Members( | ||
| 40 | QPDFNameTreeObjectHelper::QPDFNameTreeObjectHelper( | 40 | QPDFNameTreeObjectHelper::QPDFNameTreeObjectHelper( |
| 41 | QPDFObjectHandle oh, QPDF& q, bool auto_repair) : | 41 | QPDFObjectHandle oh, QPDF& q, bool auto_repair) : |
| 42 | QPDFObjectHelper(oh), | 42 | QPDFObjectHelper(oh), |
| 43 | - m(new Members(oh, &q, auto_repair)) | ||
| 44 | -{ | ||
| 45 | -} | ||
| 46 | - | ||
| 47 | -QPDFNameTreeObjectHelper::QPDFNameTreeObjectHelper(QPDFObjectHandle oh) : | ||
| 48 | - QPDFObjectHelper(oh), | ||
| 49 | - m(new Members(oh, nullptr, false)) | 43 | + m(new Members(oh, q, auto_repair)) |
| 50 | { | 44 | { |
| 51 | } | 45 | } |
| 52 | 46 |
libqpdf/QPDFNumberTreeObjectHelper.cc
| @@ -33,7 +33,7 @@ class NumberTreeDetails: public NNTreeDetails | @@ -33,7 +33,7 @@ class NumberTreeDetails: public NNTreeDetails | ||
| 33 | static NumberTreeDetails number_tree_details; | 33 | static NumberTreeDetails number_tree_details; |
| 34 | 34 | ||
| 35 | QPDFNumberTreeObjectHelper::Members::Members( | 35 | QPDFNumberTreeObjectHelper::Members::Members( |
| 36 | - QPDFObjectHandle& oh, QPDF* q, bool auto_repair) : | 36 | + QPDFObjectHandle& oh, QPDF& q, bool auto_repair) : |
| 37 | impl(std::make_shared<NNTreeImpl>(number_tree_details, q, oh, auto_repair)) | 37 | impl(std::make_shared<NNTreeImpl>(number_tree_details, q, oh, auto_repair)) |
| 38 | { | 38 | { |
| 39 | } | 39 | } |
| @@ -41,13 +41,7 @@ QPDFNumberTreeObjectHelper::Members::Members( | @@ -41,13 +41,7 @@ QPDFNumberTreeObjectHelper::Members::Members( | ||
| 41 | QPDFNumberTreeObjectHelper::QPDFNumberTreeObjectHelper( | 41 | QPDFNumberTreeObjectHelper::QPDFNumberTreeObjectHelper( |
| 42 | QPDFObjectHandle oh, QPDF& q, bool auto_repair) : | 42 | QPDFObjectHandle oh, QPDF& q, bool auto_repair) : |
| 43 | QPDFObjectHelper(oh), | 43 | QPDFObjectHelper(oh), |
| 44 | - m(new Members(oh, &q, auto_repair)) | ||
| 45 | -{ | ||
| 46 | -} | ||
| 47 | - | ||
| 48 | -QPDFNumberTreeObjectHelper::QPDFNumberTreeObjectHelper(QPDFObjectHandle oh) : | ||
| 49 | - QPDFObjectHelper(oh), | ||
| 50 | - m(new Members(oh, nullptr, false)) | 44 | + m(new Members(oh, q, auto_repair)) |
| 51 | { | 45 | { |
| 52 | } | 46 | } |
| 53 | 47 |
libqpdf/qpdf/NNTree.hh
| @@ -97,10 +97,9 @@ class NNTreeImpl | @@ -97,10 +97,9 @@ class NNTreeImpl | ||
| 97 | public: | 97 | public: |
| 98 | typedef NNTreeIterator iterator; | 98 | typedef NNTreeIterator iterator; |
| 99 | 99 | ||
| 100 | - // ABI: for qpdf 11, make qpdf a reference | ||
| 101 | NNTreeImpl( | 100 | NNTreeImpl( |
| 102 | NNTreeDetails const&, | 101 | NNTreeDetails const&, |
| 103 | - QPDF*, | 102 | + QPDF&, |
| 104 | QPDFObjectHandle&, | 103 | QPDFObjectHandle&, |
| 105 | bool auto_repair = true); | 104 | bool auto_repair = true); |
| 106 | iterator begin(); | 105 | iterator begin(); |
| @@ -132,7 +131,7 @@ class NNTreeImpl | @@ -132,7 +131,7 @@ class NNTreeImpl | ||
| 132 | int compareKeyKid(QPDFObjectHandle& key, QPDFObjectHandle& items, int idx); | 131 | int compareKeyKid(QPDFObjectHandle& key, QPDFObjectHandle& items, int idx); |
| 133 | 132 | ||
| 134 | NNTreeDetails const& details; | 133 | NNTreeDetails const& details; |
| 135 | - QPDF* qpdf; | 134 | + QPDF& qpdf; |
| 136 | int split_threshold; | 135 | int split_threshold; |
| 137 | QPDFObjectHandle oh; | 136 | QPDFObjectHandle oh; |
| 138 | bool auto_repair; | 137 | bool auto_repair; |
manual/release-notes.rst
| @@ -69,6 +69,10 @@ For a detailed list of changes, please see the file | @@ -69,6 +69,10 @@ For a detailed list of changes, please see the file | ||
| 69 | method never worked and only did something in qpdf version | 69 | method never worked and only did something in qpdf version |
| 70 | 10.2.x. | 70 | 10.2.x. |
| 71 | 71 | ||
| 72 | + - Remove ``QPDFNameTreeObjectHelper`` and | ||
| 73 | + ``QPDFNumberTreeObjectHelper`` constructors that don't take a | ||
| 74 | + ``QPDF&`` argument. | ||
| 75 | + | ||
| 72 | - Other changes | 76 | - Other changes |
| 73 | 77 | ||
| 74 | - A new chapter on contributing to qpdf has been added to the | 78 | - A new chapter on contributing to qpdf has been added to the |
qpdf/qtest/qpdf/name-tree.out
| @@ -21,8 +21,6 @@ insertAfter | @@ -21,8 +21,6 @@ insertAfter | ||
| 21 | 4 (4!) | 21 | 4 (4!) |
| 22 | /Empty1 | 22 | /Empty1 |
| 23 | /Empty2 | 23 | /Empty2 |
| 24 | -/Bad1: deprecated API | ||
| 25 | -Name/Number tree node (object 16): item at index 2 is not the right type | ||
| 26 | /Bad1 -- wrong key type | 24 | /Bad1 -- wrong key type |
| 27 | WARNING: name-tree.pdf (Name/Number tree node (object 16)): attempting to repair after error: name-tree.pdf (Name/Number tree node (object 16)): item at index 2 is not the right type | 25 | WARNING: name-tree.pdf (Name/Number tree node (object 16)): attempting to repair after error: name-tree.pdf (Name/Number tree node (object 16)): item at index 2 is not the right type |
| 28 | WARNING: name-tree.pdf (Name/Number tree node (object 16)): item 2 has the wrong type | 26 | WARNING: name-tree.pdf (Name/Number tree node (object 16)): item 2 has the wrong type |
qpdf/qtest/qpdf/number-tree.out
| @@ -29,7 +29,6 @@ | @@ -29,7 +29,6 @@ | ||
| 29 | insertAfter | 29 | insertAfter |
| 30 | 3 (3!) | 30 | 3 (3!) |
| 31 | 4 (4!) | 31 | 4 (4!) |
| 32 | -/Bad1: deprecated API | ||
| 33 | /Bad1 | 32 | /Bad1 |
| 34 | WARNING: number-tree.pdf (Name/Number tree node (object 14)): name/number tree node has neither non-empty /Nums nor /Kids | 33 | WARNING: number-tree.pdf (Name/Number tree node (object 14)): name/number tree node has neither non-empty /Nums nor /Kids |
| 35 | WARNING: number-tree.pdf (Name/Number tree node (object 13)): loop detected while traversing name/number tree | 34 | WARNING: number-tree.pdf (Name/Number tree node (object 13)): loop detected while traversing name/number tree |
qpdf/test_driver.cc
| @@ -1733,23 +1733,8 @@ test_46(QPDF& pdf, char const* arg2) | @@ -1733,23 +1733,8 @@ test_46(QPDF& pdf, char const* arg2) | ||
| 1733 | std::cout << i.first << " " << i.second.unparse() << std::endl; | 1733 | std::cout << i.first << " " << i.second.unparse() << std::endl; |
| 1734 | } | 1734 | } |
| 1735 | 1735 | ||
| 1736 | - // Exercise deprecated API until qpdf 11 | ||
| 1737 | - std::cout << "/Bad1: deprecated API" << std::endl; | ||
| 1738 | -#ifdef _MSC_VER | ||
| 1739 | -# pragma warning(disable : 4996) | ||
| 1740 | -#endif | ||
| 1741 | -#if (defined(__GNUC__) || defined(__clang__)) | ||
| 1742 | -# pragma GCC diagnostic push | ||
| 1743 | -# pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||
| 1744 | -#endif | ||
| 1745 | - auto bad1 = QPDFNumberTreeObjectHelper(pdf.getTrailer().getKey("/Bad1")); | ||
| 1746 | -#if (defined(__GNUC__) || defined(__clang__)) | ||
| 1747 | -# pragma GCC diagnostic pop | ||
| 1748 | -#endif | ||
| 1749 | - assert(bad1.begin() == bad1.end()); | ||
| 1750 | - | ||
| 1751 | std::cout << "/Bad1" << std::endl; | 1736 | std::cout << "/Bad1" << std::endl; |
| 1752 | - bad1 = QPDFNumberTreeObjectHelper(pdf.getTrailer().getKey("/Bad1"), pdf); | 1737 | + auto bad1 = QPDFNumberTreeObjectHelper(pdf.getTrailer().getKey("/Bad1"), pdf); |
| 1753 | assert(bad1.begin() == bad1.end()); | 1738 | assert(bad1.begin() == bad1.end()); |
| 1754 | assert(bad1.last() == bad1.end()); | 1739 | assert(bad1.last() == bad1.end()); |
| 1755 | 1740 | ||
| @@ -1931,28 +1916,8 @@ test_48(QPDF& pdf, char const* arg2) | @@ -1931,28 +1916,8 @@ test_48(QPDF& pdf, char const* arg2) | ||
| 1931 | assert(empty.last()->second.getStringValue() == "6"); | 1916 | assert(empty.last()->second.getStringValue() == "6"); |
| 1932 | } | 1917 | } |
| 1933 | 1918 | ||
| 1934 | - // Exercise deprecated API until qpdf 11 | ||
| 1935 | - std::cout << "/Bad1: deprecated API" << std::endl; | ||
| 1936 | -#ifdef _MSC_VER | ||
| 1937 | -# pragma warning(disable : 4996) | ||
| 1938 | -#endif | ||
| 1939 | -#if (defined(__GNUC__) || defined(__clang__)) | ||
| 1940 | -# pragma GCC diagnostic push | ||
| 1941 | -# pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||
| 1942 | -#endif | ||
| 1943 | - auto bad1 = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey("/Bad1")); | ||
| 1944 | -#if (defined(__GNUC__) || defined(__clang__)) | ||
| 1945 | -# pragma GCC diagnostic pop | ||
| 1946 | -#endif | ||
| 1947 | - try { | ||
| 1948 | - bad1.find("G", true); | ||
| 1949 | - assert(false); | ||
| 1950 | - } catch (std::runtime_error& e) { | ||
| 1951 | - std::cout << e.what() << std::endl; | ||
| 1952 | - } | ||
| 1953 | - | ||
| 1954 | std::cout << "/Bad1 -- wrong key type" << std::endl; | 1919 | std::cout << "/Bad1 -- wrong key type" << std::endl; |
| 1955 | - bad1 = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey("/Bad1"), pdf); | 1920 | + auto bad1 = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey("/Bad1"), pdf); |
| 1956 | assert(bad1.find("G", true)->first == "A"); | 1921 | assert(bad1.find("G", true)->first == "A"); |
| 1957 | for (auto const& i : bad1) { | 1922 | for (auto const& i : bad1) { |
| 1958 | std::cout << i.first << std::endl; | 1923 | std::cout << i.first << std::endl; |