Commit c40f8b5329a645bd7ec2202af3433d11e6eae1d8
1 parent
cce715cd
Make object types available to C API
Showing
3 changed files
with
56 additions
and
23 deletions
ChangeLog
| 1 | 1 | 2021-12-17 Jay Berkenbilt <ejb@ql.org> |
| 2 | 2 | |
| 3 | + * QPDFObjectHandle object types have been moved from | |
| 4 | + QPDFObject::object_type_e to qpdf_object_type_e (defined in | |
| 5 | + Constants.h). Old values are available for backward compatibility. | |
| 6 | + | |
| 3 | 7 | * Add Pl_Buffer::getMallocBuffer() to initialize a buffer with |
| 4 | 8 | malloc in support of the C API |
| 5 | 9 | ... | ... |
include/qpdf/Constants.h
| ... | ... | @@ -41,6 +41,34 @@ enum qpdf_error_code_e |
| 41 | 41 | qpdf_e_object, /* type/bounds errors accessing objects */ |
| 42 | 42 | }; |
| 43 | 43 | |
| 44 | +/* Object Types */ | |
| 45 | + | |
| 46 | +/* PDF objects represented by QPDFObjectHandle or, in the C API, by | |
| 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 | |
| 49 | + * may be added to the list, so code that switches on these values | |
| 50 | + * should take that into consideration. | |
| 51 | + */ | |
| 52 | +enum qpdf_object_type_e { | |
| 53 | + /* Object types internal to qpdf */ | |
| 54 | + qpdf_ot_uninitialized, | |
| 55 | + qpdf_ot_reserved, | |
| 56 | + /* 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, | |
| 66 | + /* Additional object types that can occur in content streams */ | |
| 67 | + qpdf_ot_operator, | |
| 68 | + qpdf_ot_inlineimage, | |
| 69 | + /* NOTE: if adding to this list, update QPDFObject.hh */ | |
| 70 | +}; | |
| 71 | + | |
| 44 | 72 | /* Write Parameters. See QPDFWriter.hh for details. */ |
| 45 | 73 | |
| 46 | 74 | enum qpdf_object_stream_e | ... | ... |
include/qpdf/QPDFObject.hh
| ... | ... | @@ -25,6 +25,7 @@ |
| 25 | 25 | #include <qpdf/DLL.h> |
| 26 | 26 | #include <qpdf/Types.h> |
| 27 | 27 | #include <qpdf/JSON.hh> |
| 28 | +#include <qpdf/Constants.h> | |
| 28 | 29 | |
| 29 | 30 | #include <string> |
| 30 | 31 | |
| ... | ... | @@ -37,29 +38,29 @@ class QPDF_DLL_CLASS QPDFObject |
| 37 | 38 | QPDFObject(); |
| 38 | 39 | |
| 39 | 40 | // Objects derived from QPDFObject are accessible through |
| 40 | - // QPDFObjectHandle. Each object returns a unique type code that | |
| 41 | - // has one of the values in the list below. As new object types | |
| 42 | - // are added to qpdf, additional items may be added to the list, | |
| 43 | - // so code that switches on these values should take that into | |
| 44 | - // consideration. | |
| 45 | - enum object_type_e { | |
| 46 | - // Object types internal to qpdf | |
| 47 | - ot_uninitialized, | |
| 48 | - ot_reserved, | |
| 49 | - // Object types that can occur in the main document | |
| 50 | - ot_null, | |
| 51 | - ot_boolean, | |
| 52 | - ot_integer, | |
| 53 | - ot_real, | |
| 54 | - ot_string, | |
| 55 | - ot_name, | |
| 56 | - ot_array, | |
| 57 | - ot_dictionary, | |
| 58 | - ot_stream, | |
| 59 | - // Additional object types that can occur in content streams | |
| 60 | - ot_operator, | |
| 61 | - ot_inlineimage, | |
| 62 | - }; | |
| 41 | + // QPDFObjectHandle. Each object returns a unique type code that | |
| 42 | + // has one of the valid qpdf_object_type_e values. As new object | |
| 43 | + // types are added to qpdf, additional items may be added to the | |
| 44 | + // list, so code that switches on these values should take that | |
| 45 | + // into consideration. | |
| 46 | + | |
| 47 | + // Prior to qpdf 10.5, qpdf_object_type_e was | |
| 48 | + // QPDFObject::object_type_e but was moved to make it accessible | |
| 49 | + // to the C API. The code below is for backward compatibility. | |
| 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; | |
| 63 | 64 | |
| 64 | 65 | virtual ~QPDFObject() {} |
| 65 | 66 | virtual std::string unparse() = 0; | ... | ... |