Commit d866f480813169208efba0e4f32ecde4a5b54ebc
1 parent
cf7b2b57
Change names of qpdf_object_type_e enumerations
They have to be ot_* rather than qpdf_ot_* for compatibility. * Different enumerated types are not assignment-compatible in C++, at least with strict compiler settings * While you can do `constexpr ot_xyz = ::qpdf_ot_xyz` in QPDFObject.hh to make QPDFObject::ot_xyz work, QPDFObject::object_type_e::ot_xyz will only work if the enumerated type names are the same.
Showing
4 changed files
with
44 additions
and
40 deletions
include/qpdf/Constants.h
| @@ -47,25 +47,29 @@ enum qpdf_error_code_e | @@ -47,25 +47,29 @@ enum qpdf_error_code_e | ||
| 47 | * qpdf_oh, have a unique type code that has one of the values in the | 47 | * qpdf_oh, have a unique type code that has one of the values in the |
| 48 | * list below. As new object types are added to qpdf, additional items | 48 | * list below. As new object types are added to qpdf, additional items |
| 49 | * may be added to the list, so code that switches on these values | 49 | * may be added to the list, so code that switches on these values |
| 50 | - * should take that into consideration. | 50 | + * should take that into consideration. (Maintainer note: it would be |
| 51 | + * better to call this qpdf_ot_* rather than ot_* to reduce likelihood | ||
| 52 | + * of name collision, but since QPDFObject::object_type_e is an alias | ||
| 53 | + * to this type, changing the names of the values breaks backward | ||
| 54 | + * compatibility.) | ||
| 51 | */ | 55 | */ |
| 52 | enum qpdf_object_type_e { | 56 | enum qpdf_object_type_e { |
| 53 | /* Object types internal to qpdf */ | 57 | /* Object types internal to qpdf */ |
| 54 | - qpdf_ot_uninitialized, | ||
| 55 | - qpdf_ot_reserved, | 58 | + ot_uninitialized, |
| 59 | + ot_reserved, | ||
| 56 | /* Object types that can occur in the main document */ | 60 | /* Object types that can occur in the main document */ |
| 57 | - qpdf_ot_null, | ||
| 58 | - qpdf_ot_boolean, | ||
| 59 | - qpdf_ot_integer, | ||
| 60 | - qpdf_ot_real, | ||
| 61 | - qpdf_ot_string, | ||
| 62 | - qpdf_ot_name, | ||
| 63 | - qpdf_ot_array, | ||
| 64 | - qpdf_ot_dictionary, | ||
| 65 | - qpdf_ot_stream, | 61 | + ot_null, |
| 62 | + ot_boolean, | ||
| 63 | + ot_integer, | ||
| 64 | + ot_real, | ||
| 65 | + ot_string, | ||
| 66 | + ot_name, | ||
| 67 | + ot_array, | ||
| 68 | + ot_dictionary, | ||
| 69 | + ot_stream, | ||
| 66 | /* Additional object types that can occur in content streams */ | 70 | /* Additional object types that can occur in content streams */ |
| 67 | - qpdf_ot_operator, | ||
| 68 | - qpdf_ot_inlineimage, | 71 | + ot_operator, |
| 72 | + ot_inlineimage, | ||
| 69 | /* NOTE: if adding to this list, update QPDFObject.hh */ | 73 | /* NOTE: if adding to this list, update QPDFObject.hh */ |
| 70 | }; | 74 | }; |
| 71 | 75 |
include/qpdf/QPDFObject.hh
| @@ -48,19 +48,19 @@ class QPDF_DLL_CLASS QPDFObject | @@ -48,19 +48,19 @@ class QPDF_DLL_CLASS QPDFObject | ||
| 48 | // QPDFObject::object_type_e but was moved to make it accessible | 48 | // QPDFObject::object_type_e but was moved to make it accessible |
| 49 | // to the C API. The code below is for backward compatibility. | 49 | // to the C API. The code below is for backward compatibility. |
| 50 | typedef enum qpdf_object_type_e object_type_e; | 50 | typedef enum qpdf_object_type_e object_type_e; |
| 51 | - static constexpr object_type_e ot_uninitialized = ::qpdf_ot_uninitialized; | ||
| 52 | - static constexpr object_type_e ot_reserved = ::qpdf_ot_reserved; | ||
| 53 | - static constexpr object_type_e ot_null = ::qpdf_ot_null; | ||
| 54 | - static constexpr object_type_e ot_boolean = ::qpdf_ot_boolean; | ||
| 55 | - static constexpr object_type_e ot_integer = ::qpdf_ot_integer; | ||
| 56 | - static constexpr object_type_e ot_real = ::qpdf_ot_real; | ||
| 57 | - static constexpr object_type_e ot_string = ::qpdf_ot_string; | ||
| 58 | - static constexpr object_type_e ot_name = ::qpdf_ot_name; | ||
| 59 | - static constexpr object_type_e ot_array = ::qpdf_ot_array; | ||
| 60 | - static constexpr object_type_e ot_dictionary = ::qpdf_ot_dictionary; | ||
| 61 | - static constexpr object_type_e ot_stream = ::qpdf_ot_stream; | ||
| 62 | - static constexpr object_type_e ot_operator = ::qpdf_ot_operator; | ||
| 63 | - static constexpr object_type_e ot_inlineimage = ::qpdf_ot_inlineimage; | 51 | + static constexpr object_type_e ot_uninitialized = ::ot_uninitialized; |
| 52 | + static constexpr object_type_e ot_reserved = ::ot_reserved; | ||
| 53 | + static constexpr object_type_e ot_null = ::ot_null; | ||
| 54 | + static constexpr object_type_e ot_boolean = ::ot_boolean; | ||
| 55 | + static constexpr object_type_e ot_integer = ::ot_integer; | ||
| 56 | + static constexpr object_type_e ot_real = ::ot_real; | ||
| 57 | + static constexpr object_type_e ot_string = ::ot_string; | ||
| 58 | + static constexpr object_type_e ot_name = ::ot_name; | ||
| 59 | + static constexpr object_type_e ot_array = ::ot_array; | ||
| 60 | + static constexpr object_type_e ot_dictionary = ::ot_dictionary; | ||
| 61 | + static constexpr object_type_e ot_stream = ::ot_stream; | ||
| 62 | + static constexpr object_type_e ot_operator = ::ot_operator; | ||
| 63 | + static constexpr object_type_e ot_inlineimage = ::ot_inlineimage; | ||
| 64 | 64 | ||
| 65 | virtual ~QPDFObject() {} | 65 | virtual ~QPDFObject() {} |
| 66 | virtual std::string unparse() = 0; | 66 | virtual std::string unparse() = 0; |
libqpdf/qpdf-c.cc
| @@ -1151,7 +1151,7 @@ QPDF_BOOL qpdf_oh_is_number(qpdf_data qpdf, qpdf_oh oh) | @@ -1151,7 +1151,7 @@ QPDF_BOOL qpdf_oh_is_number(qpdf_data qpdf, qpdf_oh oh) | ||
| 1151 | qpdf_object_type_e qpdf_oh_get_type_code(qpdf_data qpdf, qpdf_oh oh) | 1151 | qpdf_object_type_e qpdf_oh_get_type_code(qpdf_data qpdf, qpdf_oh oh) |
| 1152 | { | 1152 | { |
| 1153 | return do_with_oh<qpdf_object_type_e>( | 1153 | return do_with_oh<qpdf_object_type_e>( |
| 1154 | - qpdf, oh, return_T<qpdf_object_type_e>(qpdf_ot_uninitialized), | 1154 | + qpdf, oh, return_T<qpdf_object_type_e>(ot_uninitialized), |
| 1155 | [](QPDFObjectHandle& o) { | 1155 | [](QPDFObjectHandle& o) { |
| 1156 | QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_type_code"); | 1156 | QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_type_code"); |
| 1157 | return o.getTypeCode(); | 1157 | return o.getTypeCode(); |
qpdf/qpdf-ctest.c
| @@ -537,12 +537,12 @@ static void test24(char const* infile, | @@ -537,12 +537,12 @@ static void test24(char const* infile, | ||
| 537 | /* Go to the first page and look at all the keys */ | 537 | /* Go to the first page and look at all the keys */ |
| 538 | qpdf_oh pages = qpdf_oh_get_key(qpdf, root, "/Pages"); | 538 | qpdf_oh pages = qpdf_oh_get_key(qpdf, root, "/Pages"); |
| 539 | assert(qpdf_oh_is_dictionary(qpdf, pages)); | 539 | assert(qpdf_oh_is_dictionary(qpdf, pages)); |
| 540 | - assert(qpdf_oh_get_type_code(qpdf, pages) == qpdf_ot_dictionary); | 540 | + assert(qpdf_oh_get_type_code(qpdf, pages) == ot_dictionary); |
| 541 | assert(strcmp(qpdf_oh_get_type_name(qpdf, pages), "dictionary") == 0); | 541 | assert(strcmp(qpdf_oh_get_type_name(qpdf, pages), "dictionary") == 0); |
| 542 | assert(qpdf_oh_is_initialized(qpdf, pages)); | 542 | assert(qpdf_oh_is_initialized(qpdf, pages)); |
| 543 | qpdf_oh kids = qpdf_oh_get_key(qpdf, pages, "/Kids"); | 543 | qpdf_oh kids = qpdf_oh_get_key(qpdf, pages, "/Kids"); |
| 544 | assert(qpdf_oh_is_array(qpdf, kids)); | 544 | assert(qpdf_oh_is_array(qpdf, kids)); |
| 545 | - assert(qpdf_oh_get_type_code(qpdf, kids) == qpdf_ot_array); | 545 | + assert(qpdf_oh_get_type_code(qpdf, kids) == ot_array); |
| 546 | assert(strcmp(qpdf_oh_get_type_name(qpdf, kids), "array") == 0); | 546 | assert(strcmp(qpdf_oh_get_type_name(qpdf, kids), "array") == 0); |
| 547 | assert(qpdf_oh_get_array_n_items(qpdf, kids) == 1); | 547 | assert(qpdf_oh_get_array_n_items(qpdf, kids) == 1); |
| 548 | qpdf_oh page1 = qpdf_oh_get_array_item(qpdf, kids, 0); | 548 | qpdf_oh page1 = qpdf_oh_get_array_item(qpdf, kids, 0); |
| @@ -555,7 +555,7 @@ static void test24(char const* infile, | @@ -555,7 +555,7 @@ static void test24(char const* infile, | ||
| 555 | /* Inspect the first page */ | 555 | /* Inspect the first page */ |
| 556 | qpdf_oh type = qpdf_oh_get_key(qpdf, page1, "/Type"); | 556 | qpdf_oh type = qpdf_oh_get_key(qpdf, page1, "/Type"); |
| 557 | assert(qpdf_oh_is_name(qpdf, type)); | 557 | assert(qpdf_oh_is_name(qpdf, type)); |
| 558 | - assert(qpdf_oh_get_type_code(qpdf, type) == qpdf_ot_name); | 558 | + assert(qpdf_oh_get_type_code(qpdf, type) == ot_name); |
| 559 | assert(strcmp(qpdf_oh_get_type_name(qpdf, type), "name") == 0); | 559 | assert(strcmp(qpdf_oh_get_type_name(qpdf, type), "name") == 0); |
| 560 | assert(strcmp(qpdf_oh_get_name(qpdf, type), "/Page") == 0); | 560 | assert(strcmp(qpdf_oh_get_name(qpdf, type), "/Page") == 0); |
| 561 | qpdf_oh parent = qpdf_oh_get_key(qpdf, page1, "/Parent"); | 561 | qpdf_oh parent = qpdf_oh_get_key(qpdf, page1, "/Parent"); |
| @@ -595,14 +595,14 @@ static void test24(char const* infile, | @@ -595,14 +595,14 @@ static void test24(char const* infile, | ||
| 595 | /* Look at page contents to exercise stream functions */ | 595 | /* Look at page contents to exercise stream functions */ |
| 596 | qpdf_oh contents = qpdf_oh_get_key(qpdf, page1, "/Contents"); | 596 | qpdf_oh contents = qpdf_oh_get_key(qpdf, page1, "/Contents"); |
| 597 | assert(qpdf_oh_is_stream(qpdf, contents)); | 597 | assert(qpdf_oh_is_stream(qpdf, contents)); |
| 598 | - assert(qpdf_oh_get_type_code(qpdf, contents) == qpdf_ot_stream); | 598 | + assert(qpdf_oh_get_type_code(qpdf, contents) == ot_stream); |
| 599 | assert(strcmp(qpdf_oh_get_type_name(qpdf, contents), "stream") == 0); | 599 | assert(strcmp(qpdf_oh_get_type_name(qpdf, contents), "stream") == 0); |
| 600 | qpdf_oh contents_dict = qpdf_oh_get_dict(qpdf, contents); | 600 | qpdf_oh contents_dict = qpdf_oh_get_dict(qpdf, contents); |
| 601 | assert(! qpdf_oh_is_scalar(qpdf, contents)); | 601 | assert(! qpdf_oh_is_scalar(qpdf, contents)); |
| 602 | assert(! qpdf_oh_is_scalar(qpdf, contents_dict)); | 602 | assert(! qpdf_oh_is_scalar(qpdf, contents_dict)); |
| 603 | qpdf_oh contents_length = qpdf_oh_get_key(qpdf, contents_dict, "/Length"); | 603 | qpdf_oh contents_length = qpdf_oh_get_key(qpdf, contents_dict, "/Length"); |
| 604 | assert(qpdf_oh_is_integer(qpdf, contents_length)); | 604 | assert(qpdf_oh_is_integer(qpdf, contents_length)); |
| 605 | - assert(qpdf_oh_get_type_code(qpdf, contents_length) == qpdf_ot_integer); | 605 | + assert(qpdf_oh_get_type_code(qpdf, contents_length) == ot_integer); |
| 606 | assert(strcmp(qpdf_oh_get_type_name(qpdf, contents_length), "integer") == 0); | 606 | assert(strcmp(qpdf_oh_get_type_name(qpdf, contents_length), "integer") == 0); |
| 607 | assert(qpdf_oh_is_scalar(qpdf, contents_length)); | 607 | assert(qpdf_oh_is_scalar(qpdf, contents_length)); |
| 608 | assert(qpdf_oh_is_number(qpdf, contents_length)); | 608 | assert(qpdf_oh_is_number(qpdf, contents_length)); |
| @@ -643,7 +643,7 @@ static void test24(char const* infile, | @@ -643,7 +643,7 @@ static void test24(char const* infile, | ||
| 643 | qpdf_oh_release(qpdf, page1); | 643 | qpdf_oh_release(qpdf, page1); |
| 644 | contents = qpdf_oh_get_key(qpdf, page1, "/Contents"); | 644 | contents = qpdf_oh_get_key(qpdf, page1, "/Contents"); |
| 645 | assert(qpdf_oh_is_null(qpdf, contents)); | 645 | assert(qpdf_oh_is_null(qpdf, contents)); |
| 646 | - assert(qpdf_oh_get_type_code(qpdf, contents) == qpdf_ot_null); | 646 | + assert(qpdf_oh_get_type_code(qpdf, contents) == ot_null); |
| 647 | assert(strcmp(qpdf_oh_get_type_name(qpdf, contents), "null") == 0); | 647 | assert(strcmp(qpdf_oh_get_type_name(qpdf, contents), "null") == 0); |
| 648 | assert(qpdf_oh_is_array(qpdf, mediabox)); | 648 | assert(qpdf_oh_is_array(qpdf, mediabox)); |
| 649 | qpdf_oh_release_all(qpdf); | 649 | qpdf_oh_release_all(qpdf); |
| @@ -682,18 +682,18 @@ static void test25(char const* infile, | @@ -682,18 +682,18 @@ static void test25(char const* infile, | ||
| 682 | qpdf_oh p_bool = qpdf_oh_get_array_item(qpdf, parsed, 5); | 682 | qpdf_oh p_bool = qpdf_oh_get_array_item(qpdf, parsed, 5); |
| 683 | assert(qpdf_oh_is_integer(qpdf, p_int) && | 683 | assert(qpdf_oh_is_integer(qpdf, p_int) && |
| 684 | qpdf_oh_get_int_value_as_int(qpdf, p_int) == 1); | 684 | qpdf_oh_get_int_value_as_int(qpdf, p_int) == 1); |
| 685 | - assert(qpdf_oh_get_type_code(qpdf, p_int) == qpdf_ot_integer); | 685 | + assert(qpdf_oh_get_type_code(qpdf, p_int) == ot_integer); |
| 686 | assert(strcmp(qpdf_oh_get_type_name(qpdf, p_int), "integer") == 0); | 686 | assert(strcmp(qpdf_oh_get_type_name(qpdf, p_int), "integer") == 0); |
| 687 | assert(qpdf_oh_is_real(qpdf, p_real) && | 687 | assert(qpdf_oh_is_real(qpdf, p_real) && |
| 688 | (strcmp(qpdf_oh_get_real_value(qpdf, p_real), "2.0") == 0) && | 688 | (strcmp(qpdf_oh_get_real_value(qpdf, p_real), "2.0") == 0) && |
| 689 | qpdf_oh_get_numeric_value(qpdf, p_real) == 2.0); | 689 | qpdf_oh_get_numeric_value(qpdf, p_real) == 2.0); |
| 690 | - assert(qpdf_oh_get_type_code(qpdf, p_real) == qpdf_ot_real); | 690 | + assert(qpdf_oh_get_type_code(qpdf, p_real) == ot_real); |
| 691 | assert(strcmp(qpdf_oh_get_type_name(qpdf, p_real), "real") == 0); | 691 | assert(strcmp(qpdf_oh_get_type_name(qpdf, p_real), "real") == 0); |
| 692 | assert(qpdf_oh_is_string(qpdf, p_string) && | 692 | assert(qpdf_oh_is_string(qpdf, p_string) && |
| 693 | (strcmp(qpdf_oh_get_string_value(qpdf, p_string), "3\xf7") == 0) && | 693 | (strcmp(qpdf_oh_get_string_value(qpdf, p_string), "3\xf7") == 0) && |
| 694 | (strcmp(qpdf_oh_get_utf8_value(qpdf, p_string), "3\xc3\xb7") == 0) && | 694 | (strcmp(qpdf_oh_get_utf8_value(qpdf, p_string), "3\xc3\xb7") == 0) && |
| 695 | (strcmp(qpdf_oh_unparse_binary(qpdf, p_string), "<33f7>") == 0)); | 695 | (strcmp(qpdf_oh_unparse_binary(qpdf, p_string), "<33f7>") == 0)); |
| 696 | - assert(qpdf_oh_get_type_code(qpdf, p_string) == qpdf_ot_string); | 696 | + assert(qpdf_oh_get_type_code(qpdf, p_string) == ot_string); |
| 697 | assert(strcmp(qpdf_oh_get_type_name(qpdf, p_string), "string") == 0); | 697 | assert(strcmp(qpdf_oh_get_type_name(qpdf, p_string), "string") == 0); |
| 698 | assert(qpdf_oh_is_dictionary(qpdf, p_dict)); | 698 | assert(qpdf_oh_is_dictionary(qpdf, p_dict)); |
| 699 | qpdf_oh p_five = qpdf_oh_get_key(qpdf, p_dict, "/Four"); | 699 | qpdf_oh p_five = qpdf_oh_get_key(qpdf, p_dict, "/Four"); |
| @@ -701,11 +701,11 @@ static void test25(char const* infile, | @@ -701,11 +701,11 @@ static void test25(char const* infile, | ||
| 701 | assert(qpdf_oh_is_or_has_name( | 701 | assert(qpdf_oh_is_or_has_name( |
| 702 | qpdf, qpdf_oh_get_array_item(qpdf, p_five, 0), "/Five")); | 702 | qpdf, qpdf_oh_get_array_item(qpdf, p_five, 0), "/Five")); |
| 703 | assert(qpdf_oh_is_null(qpdf, p_null)); | 703 | assert(qpdf_oh_is_null(qpdf, p_null)); |
| 704 | - assert(qpdf_oh_get_type_code(qpdf, p_null) == qpdf_ot_null); | 704 | + assert(qpdf_oh_get_type_code(qpdf, p_null) == ot_null); |
| 705 | assert(strcmp(qpdf_oh_get_type_name(qpdf, p_null), "null") == 0); | 705 | assert(strcmp(qpdf_oh_get_type_name(qpdf, p_null), "null") == 0); |
| 706 | assert(qpdf_oh_is_bool(qpdf, p_bool) && | 706 | assert(qpdf_oh_is_bool(qpdf, p_bool) && |
| 707 | (qpdf_oh_get_bool_value(qpdf, p_bool) == QPDF_TRUE)); | 707 | (qpdf_oh_get_bool_value(qpdf, p_bool) == QPDF_TRUE)); |
| 708 | - assert(qpdf_oh_get_type_code(qpdf, p_bool) == qpdf_ot_boolean); | 708 | + assert(qpdf_oh_get_type_code(qpdf, p_bool) == ot_boolean); |
| 709 | assert(strcmp(qpdf_oh_get_type_name(qpdf, p_bool), "boolean") == 0); | 709 | assert(strcmp(qpdf_oh_get_type_name(qpdf, p_bool), "boolean") == 0); |
| 710 | qpdf_oh_erase_item(qpdf, parsed, 4); | 710 | qpdf_oh_erase_item(qpdf, parsed, 4); |
| 711 | qpdf_oh_insert_item( | 711 | qpdf_oh_insert_item( |
| @@ -763,7 +763,7 @@ static void test26(char const* infile, | @@ -763,7 +763,7 @@ static void test26(char const* infile, | ||
| 763 | qpdf_data qpdf2 = qpdf_init(); | 763 | qpdf_data qpdf2 = qpdf_init(); |
| 764 | qpdf_oh trailer = qpdf_get_trailer(qpdf2); | 764 | qpdf_oh trailer = qpdf_get_trailer(qpdf2); |
| 765 | assert(! qpdf_oh_is_initialized(qpdf2, trailer)); | 765 | assert(! qpdf_oh_is_initialized(qpdf2, trailer)); |
| 766 | - assert(qpdf_oh_get_type_code(qpdf, trailer) == qpdf_ot_uninitialized); | 766 | + assert(qpdf_oh_get_type_code(qpdf, trailer) == ot_uninitialized); |
| 767 | qpdf_cleanup(&qpdf2); | 767 | qpdf_cleanup(&qpdf2); |
| 768 | } | 768 | } |
| 769 | 769 |