diff options
Diffstat (limited to 'libqpdf/qpdf-c.cc')
-rw-r--r-- | libqpdf/qpdf-c.cc | 510 |
1 files changed, 188 insertions, 322 deletions
diff --git a/libqpdf/qpdf-c.cc b/libqpdf/qpdf-c.cc index 8f36195a..05568558 100644 --- a/libqpdf/qpdf-c.cc +++ b/libqpdf/qpdf-c.cc @@ -32,18 +32,14 @@ static void call_read_memory(qpdf_data qpdf) { qpdf->qpdf->processMemoryFile( - qpdf->filename, - qpdf->buffer, - QIntC::to_size(qpdf->size), - qpdf->password); + qpdf->filename, qpdf->buffer, QIntC::to_size(qpdf->size), qpdf->password); } // must set qpdf->filename static void call_init_write(qpdf_data qpdf) { - qpdf->qpdf_writer = - std::make_shared<QPDFWriter>(*(qpdf->qpdf), qpdf->filename); + qpdf->qpdf_writer = std::make_shared<QPDFWriter>(*(qpdf->qpdf), qpdf->filename); } static void @@ -79,12 +75,10 @@ trap_errors(qpdf_data qpdf, std::function<void(qpdf_data)> fn) qpdf->error = std::make_shared<QPDFExc>(e); status |= QPDF_ERRORS; } catch (std::runtime_error& e) { - qpdf->error = - std::make_shared<QPDFExc>(qpdf_e_system, "", "", 0, e.what()); + qpdf->error = std::make_shared<QPDFExc>(qpdf_e_system, "", "", 0, e.what()); status |= QPDF_ERRORS; } catch (std::exception& e) { - qpdf->error = - std::make_shared<QPDFExc>(qpdf_e_internal, "", "", 0, e.what()); + qpdf->error = std::make_shared<QPDFExc>(qpdf_e_internal, "", "", 0, e.what()); status |= QPDF_ERRORS; } @@ -119,8 +113,7 @@ qpdf_cleanup(qpdf_data* qpdf) if ((*qpdf)->error.get()) { QTC::TC("qpdf", "qpdf-c cleanup warned about unhandled error"); *QPDFLogger::defaultLogger()->getWarn() - << "WARNING: application did not handle error: " - << (*qpdf)->error->what() << "\n"; + << "WARNING: application did not handle error: " << (*qpdf)->error->what() << "\n"; } delete *qpdf; *qpdf = nullptr; @@ -377,8 +370,7 @@ qpdf_set_info_key(qpdf_data qpdf, char const* key, char const* value) if (!trailer.hasKey("/Info")) { QTC::TC("qpdf", "qpdf-c add info to trailer"); trailer.replaceKey( - "/Info", - qpdf->qpdf->makeIndirectObject(QPDFObjectHandle::newDictionary())); + "/Info", qpdf->qpdf->makeIndirectObject(QPDFObjectHandle::newDictionary())); } else { QTC::TC("qpdf", "qpdf-c set-info-key use existing info"); } @@ -765,8 +757,7 @@ qpdf_set_minimum_pdf_version(qpdf_data qpdf, char const* version) } void -qpdf_set_minimum_pdf_version_and_extension( - qpdf_data qpdf, char const* version, int extension_level) +qpdf_set_minimum_pdf_version_and_extension(qpdf_data qpdf, char const* version, int extension_level) { QTC::TC("qpdf", "qpdf-c called qpdf_set_minimum_pdf_version"); qpdf->qpdf_writer->setMinimumPDFVersion(version, extension_level); @@ -779,8 +770,7 @@ qpdf_force_pdf_version(qpdf_data qpdf, char const* version) } void -qpdf_force_pdf_version_and_extension( - qpdf_data qpdf, char const* version, int extension_level) +qpdf_force_pdf_version_and_extension(qpdf_data qpdf, char const* version, int extension_level) { QTC::TC("qpdf", "qpdf-c called qpdf_force_pdf_version"); qpdf->qpdf_writer->forcePDFVersion(version, extension_level); @@ -788,15 +778,12 @@ qpdf_force_pdf_version_and_extension( void qpdf_register_progress_reporter( - qpdf_data qpdf, - void (*report_progress)(int percent, void* data), - void* data) + qpdf_data qpdf, void (*report_progress)(int percent, void* data), void* data) { QTC::TC("qpdf", "qpdf-c registered progress reporter"); qpdf->qpdf_writer->registerProgressReporter( - std::shared_ptr<QPDFWriter::ProgressReporter>( - new QPDFWriter::FunctionProgressReporter( - std::bind(report_progress, std::placeholders::_1, data)))); + std::shared_ptr<QPDFWriter::ProgressReporter>(new QPDFWriter::FunctionProgressReporter( + std::bind(report_progress, std::placeholders::_1, data)))); } QPDF_ERROR_CODE @@ -817,23 +804,16 @@ qpdf_silence_errors(qpdf_data qpdf) template <class RET> static RET -trap_oh_errors( - qpdf_data qpdf, - std::function<RET()> fallback, - std::function<RET(qpdf_data)> fn) +trap_oh_errors(qpdf_data qpdf, std::function<RET()> fallback, std::function<RET(qpdf_data)> fn) { // Note: fallback is a function so we don't have to evaluate it // unless needed. This is important because sometimes the fallback // creates an object. RET ret; - QPDF_ERROR_CODE status = - trap_errors(qpdf, [&ret, fn](qpdf_data q) { ret = fn(q); }); + QPDF_ERROR_CODE status = trap_errors(qpdf, [&ret, fn](qpdf_data q) { ret = fn(q); }); if (status & QPDF_ERRORS) { if (!qpdf->silence_errors) { - QTC::TC( - "qpdf", - "qpdf-c warn about oh error", - qpdf->oh_error_occurred ? 0 : 1); + QTC::TC("qpdf", "qpdf-c warn about oh error", qpdf->oh_error_occurred ? 0 : 1); if (!qpdf->oh_error_occurred) { qpdf->warnings.push_back(QPDFExc( qpdf_e_internal, @@ -845,8 +825,7 @@ trap_oh_errors( " to ERROR HANDLING in qpdf-c.h")); qpdf->oh_error_occurred = true; } - *QPDFLogger::defaultLogger()->getError() - << qpdf->error->what() << "\n"; + *QPDFLogger::defaultLogger()->getError() << qpdf->error->what() << "\n"; } return fallback(); } @@ -911,20 +890,18 @@ qpdf_oh qpdf_get_trailer(qpdf_data qpdf) { QTC::TC("qpdf", "qpdf-c called qpdf_get_trailer"); - return trap_oh_errors<qpdf_oh>( - qpdf, return_uninitialized(qpdf), [](qpdf_data q) { - return new_object(q, q->qpdf->getTrailer()); - }); + return trap_oh_errors<qpdf_oh>(qpdf, return_uninitialized(qpdf), [](qpdf_data q) { + return new_object(q, q->qpdf->getTrailer()); + }); } qpdf_oh qpdf_get_root(qpdf_data qpdf) { QTC::TC("qpdf", "qpdf-c called qpdf_get_root"); - return trap_oh_errors<qpdf_oh>( - qpdf, return_uninitialized(qpdf), [](qpdf_data q) { - return new_object(q, q->qpdf->getRoot()); - }); + return trap_oh_errors<qpdf_oh>(qpdf, return_uninitialized(qpdf), [](qpdf_data q) { + return new_object(q, q->qpdf->getRoot()); + }); } qpdf_oh @@ -959,14 +936,12 @@ do_with_oh( } static void -do_with_oh_void( - qpdf_data qpdf, qpdf_oh oh, std::function<void(QPDFObjectHandle&)> fn) +do_with_oh_void(qpdf_data qpdf, qpdf_oh oh, std::function<void(QPDFObjectHandle&)> fn) { - do_with_oh<bool>( - qpdf, oh, return_T<bool>(false), [fn](QPDFObjectHandle& o) { - fn(o); - return true; // unused - }); + do_with_oh<bool>(qpdf, oh, return_T<bool>(false), [fn](QPDFObjectHandle& o) { + fn(o); + return true; // unused + }); } void @@ -983,9 +958,7 @@ qpdf_oh_is_initialized(qpdf_data qpdf, qpdf_oh oh) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_initialized"); return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - return o.isInitialized(); - }); + qpdf, oh, return_false, [](QPDFObjectHandle& o) { return o.isInitialized(); }); } QPDF_BOOL @@ -1009,9 +982,7 @@ qpdf_oh_is_integer(qpdf_data qpdf, qpdf_oh oh) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_integer"); return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - return o.isInteger(); - }); + qpdf, oh, return_false, [](QPDFObjectHandle& o) { return o.isInteger(); }); } QPDF_BOOL @@ -1035,9 +1006,7 @@ qpdf_oh_is_string(qpdf_data qpdf, qpdf_oh oh) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_string"); return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - return o.isString(); - }); + qpdf, oh, return_false, [](QPDFObjectHandle& o) { return o.isString(); }); } QPDF_BOOL @@ -1045,9 +1014,7 @@ qpdf_oh_is_operator(qpdf_data qpdf, qpdf_oh oh) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_operator"); return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - return o.isOperator(); - }); + qpdf, oh, return_false, [](QPDFObjectHandle& o) { return o.isOperator(); }); } QPDF_BOOL @@ -1055,9 +1022,7 @@ qpdf_oh_is_inline_image(qpdf_data qpdf, qpdf_oh oh) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_inline_image"); return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - return o.isInlineImage(); - }); + qpdf, oh, return_false, [](QPDFObjectHandle& o) { return o.isInlineImage(); }); } QPDF_BOOL @@ -1065,9 +1030,7 @@ qpdf_oh_is_array(qpdf_data qpdf, qpdf_oh oh) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_array"); return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - return o.isArray(); - }); + qpdf, oh, return_false, [](QPDFObjectHandle& o) { return o.isArray(); }); } QPDF_BOOL @@ -1075,9 +1038,7 @@ qpdf_oh_is_dictionary(qpdf_data qpdf, qpdf_oh oh) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_dictionary"); return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - return o.isDictionary(); - }); + qpdf, oh, return_false, [](QPDFObjectHandle& o) { return o.isDictionary(); }); } QPDF_BOOL @@ -1085,9 +1046,7 @@ qpdf_oh_is_stream(qpdf_data qpdf, qpdf_oh oh) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_stream"); return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - return o.isStream(); - }); + qpdf, oh, return_false, [](QPDFObjectHandle& o) { return o.isStream(); }); } QPDF_BOOL @@ -1095,9 +1054,7 @@ qpdf_oh_is_indirect(qpdf_data qpdf, qpdf_oh oh) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_indirect"); return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - return o.isIndirect(); - }); + qpdf, oh, return_false, [](QPDFObjectHandle& o) { return o.isIndirect(); }); } QPDF_BOOL @@ -1105,51 +1062,42 @@ qpdf_oh_is_scalar(qpdf_data qpdf, qpdf_oh oh) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_scalar"); return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - return o.isScalar(); - }); + qpdf, oh, return_false, [](QPDFObjectHandle& o) { return o.isScalar(); }); } QPDF_BOOL qpdf_oh_is_number(qpdf_data qpdf, qpdf_oh oh) { - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_number"); - return o.isNumber(); - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_number"); + return o.isNumber(); + }); } QPDF_BOOL qpdf_oh_is_name_and_equals(qpdf_data qpdf, qpdf_oh oh, char const* name) { - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [name](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_name_and_equals"); - return o.isNameAndEquals(name); - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [name](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_name_and_equals"); + return o.isNameAndEquals(name); + }); } QPDF_BOOL -qpdf_oh_is_dictionary_of_type( - qpdf_data qpdf, qpdf_oh oh, char const* type, char const* subtype) +qpdf_oh_is_dictionary_of_type(qpdf_data qpdf, qpdf_oh oh, char const* type, char const* subtype) { auto stype = (subtype == nullptr) ? "" : subtype; - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [type, stype](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_dictionary_of_type"); - return o.isDictionaryOfType(type, stype); - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [type, stype](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_dictionary_of_type"); + return o.isDictionaryOfType(type, stype); + }); } qpdf_object_type_e qpdf_oh_get_type_code(qpdf_data qpdf, qpdf_oh oh) { return do_with_oh<qpdf_object_type_e>( - qpdf, - oh, - return_T<qpdf_object_type_e>(ot_uninitialized), - [](QPDFObjectHandle& o) { + qpdf, oh, return_T<qpdf_object_type_e>(ot_uninitialized), [](QPDFObjectHandle& o) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_type_code"); return o.getTypeCode(); }); @@ -1180,9 +1128,7 @@ qpdf_oh_wrap_in_array(qpdf_data qpdf, qpdf_oh oh) } else { QTC::TC("qpdf", "qpdf-c non-array to wrap_in_array"); return new_object( - qpdf, - QPDFObjectHandle::newArray( - std::vector<QPDFObjectHandle>{qoh})); + qpdf, QPDFObjectHandle::newArray(std::vector<QPDFObjectHandle>{qoh})); } }); } @@ -1191,55 +1137,50 @@ qpdf_oh qpdf_oh_parse(qpdf_data qpdf, char const* object_str) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_parse"); - return trap_oh_errors<qpdf_oh>( - qpdf, return_uninitialized(qpdf), [object_str](qpdf_data q) { - return new_object(q, QPDFObjectHandle::parse(object_str)); - }); + return trap_oh_errors<qpdf_oh>(qpdf, return_uninitialized(qpdf), [object_str](qpdf_data q) { + return new_object(q, QPDFObjectHandle::parse(object_str)); + }); } QPDF_BOOL qpdf_oh_get_bool_value(qpdf_data qpdf, qpdf_oh oh) { - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_bool_value"); - return o.getBoolValue(); - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_bool_value"); + return o.getBoolValue(); + }); } QPDF_BOOL qpdf_oh_get_value_as_bool(qpdf_data qpdf, qpdf_oh oh, QPDF_BOOL* value) { - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [value](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_bool"); - bool v = *value; - QPDF_BOOL result = o.getValueAsBool(v); - if (result) { - *value = v; - } - return result; - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [value](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_bool"); + bool v = *value; + QPDF_BOOL result = o.getValueAsBool(v); + if (result) { + *value = v; + } + return result; + }); } long long qpdf_oh_get_int_value(qpdf_data qpdf, qpdf_oh oh) { - return do_with_oh<long long>( - qpdf, oh, return_T<long long>(0LL), [](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_int_value"); - return o.getIntValue(); - }); + return do_with_oh<long long>(qpdf, oh, return_T<long long>(0LL), [](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_int_value"); + return o.getIntValue(); + }); } QPDF_BOOL qpdf_oh_get_value_as_longlong(qpdf_data qpdf, qpdf_oh oh, long long* value) { - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [value](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_longlong"); - return o.getValueAsInt(*value); - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [value](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_longlong"); + return o.getValueAsInt(*value); + }); } int @@ -1254,11 +1195,10 @@ qpdf_oh_get_int_value_as_int(qpdf_data qpdf, qpdf_oh oh) QPDF_BOOL qpdf_oh_get_value_as_int(qpdf_data qpdf, qpdf_oh oh, int* value) { - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [value](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_int"); - return o.getValueAsInt(*value); - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [value](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_int"); + return o.getValueAsInt(*value); + }); } unsigned long long @@ -1272,34 +1212,30 @@ qpdf_oh_get_uint_value(qpdf_data qpdf, qpdf_oh oh) } QPDF_BOOL -qpdf_oh_get_value_as_ulonglong( - qpdf_data qpdf, qpdf_oh oh, unsigned long long* value) +qpdf_oh_get_value_as_ulonglong(qpdf_data qpdf, qpdf_oh oh, unsigned long long* value) { - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [value](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_ulonglong"); - return o.getValueAsUInt(*value); - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [value](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_ulonglong"); + return o.getValueAsUInt(*value); + }); } unsigned int qpdf_oh_get_uint_value_as_uint(qpdf_data qpdf, qpdf_oh oh) { - return do_with_oh<unsigned int>( - qpdf, oh, return_T<unsigned int>(0U), [](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_uint_value_as_uint"); - return o.getUIntValueAsUInt(); - }); + return do_with_oh<unsigned int>(qpdf, oh, return_T<unsigned int>(0U), [](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_uint_value_as_uint"); + return o.getUIntValueAsUInt(); + }); } QPDF_BOOL qpdf_oh_get_value_as_uint(qpdf_data qpdf, qpdf_oh oh, unsigned int* value) { - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [value](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_uint"); - return o.getValueAsUInt(*value); - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [value](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_uint"); + return o.getValueAsUInt(*value); + }); } char const* @@ -1314,8 +1250,7 @@ qpdf_oh_get_real_value(qpdf_data qpdf, qpdf_oh oh) } QPDF_BOOL -qpdf_oh_get_value_as_real( - qpdf_data qpdf, qpdf_oh oh, char const** value, size_t* length) +qpdf_oh_get_value_as_real(qpdf_data qpdf, qpdf_oh oh, char const** value, size_t* length) { return do_with_oh<QPDF_BOOL>( qpdf, oh, return_false, [qpdf, value, length](QPDFObjectHandle& o) { @@ -1332,21 +1267,19 @@ qpdf_oh_get_value_as_real( double qpdf_oh_get_numeric_value(qpdf_data qpdf, qpdf_oh oh) { - return do_with_oh<double>( - qpdf, oh, return_T<double>(0.0), [](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_numeric_value"); - return o.getNumericValue(); - }); + return do_with_oh<double>(qpdf, oh, return_T<double>(0.0), [](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_numeric_value"); + return o.getNumericValue(); + }); } QPDF_BOOL qpdf_oh_get_value_as_number(qpdf_data qpdf, qpdf_oh oh, double* value) { - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [value](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_number"); - return o.getValueAsNumber(*value); - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [value](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_value_as_number"); + return o.getValueAsNumber(*value); + }); } char const* @@ -1361,8 +1294,7 @@ qpdf_oh_get_name(qpdf_data qpdf, qpdf_oh oh) } QPDF_BOOL -qpdf_oh_get_value_as_name( - qpdf_data qpdf, qpdf_oh oh, char const** value, size_t* length) +qpdf_oh_get_value_as_name(qpdf_data qpdf, qpdf_oh oh, char const** value, size_t* length) { return do_with_oh<QPDF_BOOL>( qpdf, oh, return_false, [qpdf, value, length](QPDFObjectHandle& o) { @@ -1388,8 +1320,7 @@ qpdf_oh_get_string_value(qpdf_data qpdf, qpdf_oh oh) } QPDF_BOOL -qpdf_oh_get_value_as_string( - qpdf_data qpdf, qpdf_oh oh, char const** value, size_t* length) +qpdf_oh_get_value_as_string(qpdf_data qpdf, qpdf_oh oh, char const** value, size_t* length) { return do_with_oh<QPDF_BOOL>( qpdf, oh, return_false, [qpdf, value, length](QPDFObjectHandle& o) { @@ -1415,8 +1346,7 @@ qpdf_oh_get_utf8_value(qpdf_data qpdf, qpdf_oh oh) } QPDF_BOOL -qpdf_oh_get_value_as_utf8( - qpdf_data qpdf, qpdf_oh oh, char const** value, size_t* length) +qpdf_oh_get_value_as_utf8(qpdf_data qpdf, qpdf_oh oh, char const** value, size_t* length) { return do_with_oh<QPDF_BOOL>( qpdf, oh, return_false, [qpdf, value, length](QPDFObjectHandle& o) { @@ -1434,10 +1364,7 @@ char const* qpdf_oh_get_binary_string_value(qpdf_data qpdf, qpdf_oh oh, size_t* length) { return do_with_oh<char const*>( - qpdf, - oh, - return_T<char const*>(""), - [qpdf, length](QPDFObjectHandle& o) { + qpdf, oh, return_T<char const*>(""), [qpdf, length](QPDFObjectHandle& o) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_binary_string_value"); qpdf->tmp_string = o.getStringValue(); *length = qpdf->tmp_string.length(); @@ -1449,10 +1376,7 @@ char const* qpdf_oh_get_binary_utf8_value(qpdf_data qpdf, qpdf_oh oh, size_t* length) { return do_with_oh<char const*>( - qpdf, - oh, - return_T<char const*>(""), - [qpdf, length](QPDFObjectHandle& o) { + qpdf, oh, return_T<char const*>(""), [qpdf, length](QPDFObjectHandle& o) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_binary_utf8_value"); qpdf->tmp_string = o.getUTF8Value(); *length = qpdf->tmp_string.length(); @@ -1472,11 +1396,10 @@ qpdf_oh_get_array_n_items(qpdf_data qpdf, qpdf_oh oh) qpdf_oh qpdf_oh_get_array_item(qpdf_data qpdf, qpdf_oh oh, int n) { - return do_with_oh<qpdf_oh>( - qpdf, oh, return_null(qpdf), [qpdf, n](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_array_item"); - return new_object(qpdf, o.getArrayItem(n)); - }); + return do_with_oh<qpdf_oh>(qpdf, oh, return_null(qpdf), [qpdf, n](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_array_item"); + return new_object(qpdf, o.getArrayItem(n)); + }); } void @@ -1516,41 +1439,37 @@ qpdf_oh_dict_next_key(qpdf_data qpdf) QPDF_BOOL qpdf_oh_has_key(qpdf_data qpdf, qpdf_oh oh, char const* key) { - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [key](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_has_key"); - return o.hasKey(key); - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [key](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_has_key"); + return o.hasKey(key); + }); } qpdf_oh qpdf_oh_get_key(qpdf_data qpdf, qpdf_oh oh, char const* key) { - return do_with_oh<qpdf_oh>( - qpdf, oh, return_null(qpdf), [qpdf, key](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_key"); - return new_object(qpdf, o.getKey(key)); - }); + return do_with_oh<qpdf_oh>(qpdf, oh, return_null(qpdf), [qpdf, key](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_key"); + return new_object(qpdf, o.getKey(key)); + }); } qpdf_oh qpdf_oh_get_key_if_dict(qpdf_data qpdf, qpdf_oh oh, char const* key) { - return do_with_oh<qpdf_oh>( - qpdf, oh, return_null(qpdf), [qpdf, key](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_key_if_dict"); - return new_object(qpdf, o.getKeyIfDict(key)); - }); + return do_with_oh<qpdf_oh>(qpdf, oh, return_null(qpdf), [qpdf, key](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_key_if_dict"); + return new_object(qpdf, o.getKeyIfDict(key)); + }); } QPDF_BOOL qpdf_oh_is_or_has_name(qpdf_data qpdf, qpdf_oh oh, char const* key) { - return do_with_oh<QPDF_BOOL>( - qpdf, oh, return_false, [key](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_or_has_name"); - return o.isOrHasName(key); - }); + return do_with_oh<QPDF_BOOL>(qpdf, oh, return_false, [key](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_is_or_has_name"); + return o.isOrHasName(key); + }); } qpdf_oh @@ -1620,18 +1539,14 @@ qpdf_oh qpdf_oh_new_binary_string(qpdf_data qpdf, char const* str, size_t length) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_new_binary_string"); - return new_object( - qpdf, QPDFObjectHandle::newString(std::string(str, length))); + return new_object(qpdf, QPDFObjectHandle::newString(std::string(str, length))); } qpdf_oh -qpdf_oh_new_binary_unicode_string( - qpdf_data qpdf, char const* utf8_str, size_t length) +qpdf_oh_new_binary_unicode_string(qpdf_data qpdf, char const* utf8_str, size_t length) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_new_binary_unicode_string"); - return new_object( - qpdf, - QPDFObjectHandle::newUnicodeString(std::string(utf8_str, length))); + return new_object(qpdf, QPDFObjectHandle::newUnicodeString(std::string(utf8_str, length))); } qpdf_oh @@ -1667,10 +1582,9 @@ qpdf_oh_make_direct(qpdf_data qpdf, qpdf_oh oh) qpdf_oh qpdf_make_indirect_object(qpdf_data qpdf, qpdf_oh oh) { - return do_with_oh<qpdf_oh>( - qpdf, oh, return_uninitialized(qpdf), [qpdf](QPDFObjectHandle& o) { - return new_object(qpdf, qpdf->qpdf->makeIndirectObject(o)); - }); + return do_with_oh<qpdf_oh>(qpdf, oh, return_uninitialized(qpdf), [qpdf](QPDFObjectHandle& o) { + return new_object(qpdf, qpdf->qpdf->makeIndirectObject(o)); + }); } static QPDFObjectHandle @@ -1738,8 +1652,7 @@ qpdf_oh_remove_key(qpdf_data qpdf, qpdf_oh oh, char const* key) } void -qpdf_oh_replace_or_remove_key( - qpdf_data qpdf, qpdf_oh oh, char const* key, qpdf_oh item) +qpdf_oh_replace_or_remove_key(qpdf_data qpdf, qpdf_oh oh, char const* key, qpdf_oh item) { do_with_oh_void(qpdf, oh, [qpdf, key, item](QPDFObjectHandle& o) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_replace_or_remove_key"); @@ -1750,11 +1663,10 @@ qpdf_oh_replace_or_remove_key( qpdf_oh qpdf_oh_get_dict(qpdf_data qpdf, qpdf_oh oh) { - return do_with_oh<qpdf_oh>( - qpdf, oh, return_null(qpdf), [qpdf](QPDFObjectHandle& o) { - QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_dict"); - return new_object(qpdf, o.getDict()); - }); + return do_with_oh<qpdf_oh>(qpdf, oh, return_null(qpdf), [qpdf](QPDFObjectHandle& o) { + QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_dict"); + return new_object(qpdf, o.getDict()); + }); } int @@ -1809,14 +1721,10 @@ qpdf_oh_unparse_binary(qpdf_data qpdf, qpdf_oh oh) } qpdf_oh -qpdf_oh_copy_foreign_object( - qpdf_data qpdf, qpdf_data other_qpdf, qpdf_oh foreign_oh) +qpdf_oh_copy_foreign_object(qpdf_data qpdf, qpdf_data other_qpdf, qpdf_oh foreign_oh) { return do_with_oh<qpdf_oh>( - other_qpdf, - foreign_oh, - return_uninitialized(qpdf), - [qpdf](QPDFObjectHandle& o) { + other_qpdf, foreign_oh, return_uninitialized(qpdf), [qpdf](QPDFObjectHandle& o) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_copy_foreign_object"); return new_object(qpdf, qpdf->qpdf->copyForeignObject(o)); }); @@ -1831,39 +1739,31 @@ qpdf_oh_get_stream_data( unsigned char** bufp, size_t* len) { - return trap_errors( - qpdf, [stream_oh, decode_level, filtered, bufp, len](qpdf_data q) { - auto stream = qpdf_oh_item_internal(q, stream_oh); - Pipeline* p = nullptr; - Pl_Buffer buf("stream data"); - if (bufp) { - p = &buf; + return trap_errors(qpdf, [stream_oh, decode_level, filtered, bufp, len](qpdf_data q) { + auto stream = qpdf_oh_item_internal(q, stream_oh); + Pipeline* p = nullptr; + Pl_Buffer buf("stream data"); + if (bufp) { + p = &buf; + } + bool was_filtered = false; + if (stream.pipeStreamData(p, &was_filtered, 0, decode_level, false, false)) { + QTC::TC("qpdf", "qpdf-c stream data buf set", bufp ? 0 : 1); + if (p && bufp && len) { + buf.getMallocBuffer(bufp, len); } - bool was_filtered = false; - if (stream.pipeStreamData( - p, &was_filtered, 0, decode_level, false, false)) { - QTC::TC("qpdf", "qpdf-c stream data buf set", bufp ? 0 : 1); - if (p && bufp && len) { - buf.getMallocBuffer(bufp, len); - } - QTC::TC( - "qpdf", - "qpdf-c stream data filtered set", - filtered ? 0 : 1); - if (filtered) { - *filtered = was_filtered ? QPDF_TRUE : QPDF_FALSE; - } - } else { - throw std::runtime_error( - "unable to access stream data for stream " + - stream.unparse()); + QTC::TC("qpdf", "qpdf-c stream data filtered set", filtered ? 0 : 1); + if (filtered) { + *filtered = was_filtered ? QPDF_TRUE : QPDF_FALSE; } - }); + } else { + throw std::runtime_error("unable to access stream data for stream " + stream.unparse()); + } + }); } QPDF_ERROR_CODE -qpdf_oh_get_page_content_data( - qpdf_data qpdf, qpdf_oh page_oh, unsigned char** bufp, size_t* len) +qpdf_oh_get_page_content_data(qpdf_data qpdf, qpdf_oh page_oh, unsigned char** bufp, size_t* len) { return trap_errors(qpdf, [page_oh, bufp, len](qpdf_data q) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_get_page_content_data"); @@ -1884,17 +1784,13 @@ qpdf_oh_replace_stream_data( qpdf_oh decode_parms_oh) { do_with_oh_void( - qpdf, - stream_oh, - [qpdf, buf, len, filter_oh, decode_parms_oh](QPDFObjectHandle& o) { + qpdf, stream_oh, [qpdf, buf, len, filter_oh, decode_parms_oh](QPDFObjectHandle& o) { QTC::TC("qpdf", "qpdf-c called qpdf_oh_replace_stream_data"); auto filter = qpdf_oh_item_internal(qpdf, filter_oh); auto decode_parms = qpdf_oh_item_internal(qpdf, decode_parms_oh); // XXX test with binary data with null o.replaceStreamData( - std::string(reinterpret_cast<char const*>(buf), len), - filter, - decode_parms); + std::string(reinterpret_cast<char const*>(buf), len), filter, decode_parms); }); } @@ -1903,9 +1799,8 @@ qpdf_get_num_pages(qpdf_data qpdf) { QTC::TC("qpdf", "qpdf-c called qpdf_num_pages"); int n = -1; - QPDF_ERROR_CODE code = trap_errors(qpdf, [&n](qpdf_data q) { - n = QIntC::to_int(q->qpdf->getAllPages().size()); - }); + QPDF_ERROR_CODE code = + trap_errors(qpdf, [&n](qpdf_data q) { n = QIntC::to_int(q->qpdf->getAllPages().size()); }); if (code & QPDF_ERRORS) { return -1; } @@ -1917,9 +1812,8 @@ qpdf_get_page_n(qpdf_data qpdf, size_t i) { QTC::TC("qpdf", "qpdf-c called qpdf_get_page_n"); qpdf_oh result = 0; - QPDF_ERROR_CODE code = trap_errors(qpdf, [&result, i](qpdf_data q) { - result = new_object(q, q->qpdf->getAllPages().at(i)); - }); + QPDF_ERROR_CODE code = trap_errors( + qpdf, [&result, i](qpdf_data q) { result = new_object(q, q->qpdf->getAllPages().at(i)); }); if ((code & QPDF_ERRORS) || (result == 0)) { return qpdf_oh_new_uninitialized(qpdf); } @@ -1930,8 +1824,7 @@ QPDF_ERROR_CODE qpdf_update_all_pages_cache(qpdf_data qpdf) { QTC::TC("qpdf", "qpdf-c called qpdf_update_all_pages_cache"); - return trap_errors( - qpdf, [](qpdf_data q) { q->qpdf->updateAllPagesCache(); }); + return trap_errors(qpdf, [](qpdf_data q) { q->qpdf->updateAllPagesCache(); }); } int @@ -1940,9 +1833,8 @@ qpdf_find_page_by_id(qpdf_data qpdf, int objid, int generation) QTC::TC("qpdf", "qpdf-c called qpdf_find_page_by_id"); int n = -1; QPDFObjGen og(objid, generation); - QPDF_ERROR_CODE code = trap_errors(qpdf, [&n, &og](qpdf_data q) { - n = QIntC::to_int(q->qpdf->findPage(og)); - }); + QPDF_ERROR_CODE code = + trap_errors(qpdf, [&n, &og](qpdf_data q) { n = QIntC::to_int(q->qpdf->findPage(og)); }); if (code & QPDF_ERRORS) { return -1; } @@ -1953,44 +1845,35 @@ int qpdf_find_page_by_oh(qpdf_data qpdf, qpdf_oh oh) { QTC::TC("qpdf", "qpdf-c called qpdf_find_page_by_oh"); - return do_with_oh<int>( - qpdf, oh, return_T<int>(-1), [qpdf](QPDFObjectHandle& o) { - return qpdf->qpdf->findPage(o); - }); + return do_with_oh<int>(qpdf, oh, return_T<int>(-1), [qpdf](QPDFObjectHandle& o) { + return qpdf->qpdf->findPage(o); + }); } QPDF_ERROR_CODE qpdf_push_inherited_attributes_to_page(qpdf_data qpdf) { QTC::TC("qpdf", "qpdf-c called qpdf_push_inherited_attributes_to_page"); - return trap_errors( - qpdf, [](qpdf_data q) { q->qpdf->pushInheritedAttributesToPage(); }); + return trap_errors(qpdf, [](qpdf_data q) { q->qpdf->pushInheritedAttributesToPage(); }); } QPDF_ERROR_CODE -qpdf_add_page( - qpdf_data qpdf, qpdf_data newpage_qpdf, qpdf_oh newpage, QPDF_BOOL first) +qpdf_add_page(qpdf_data qpdf, qpdf_data newpage_qpdf, qpdf_oh newpage, QPDF_BOOL first) { QTC::TC("qpdf", "qpdf-c called qpdf_add_page"); auto page = qpdf_oh_item_internal(newpage_qpdf, newpage); - return trap_errors( - qpdf, [&page, first](qpdf_data q) { q->qpdf->addPage(page, first); }); + return trap_errors(qpdf, [&page, first](qpdf_data q) { q->qpdf->addPage(page, first); }); } QPDF_ERROR_CODE qpdf_add_page_at( - qpdf_data qpdf, - qpdf_data newpage_qpdf, - qpdf_oh newpage, - QPDF_BOOL before, - qpdf_oh refpage) + qpdf_data qpdf, qpdf_data newpage_qpdf, qpdf_oh newpage, QPDF_BOOL before, qpdf_oh refpage) { QTC::TC("qpdf", "qpdf-c called qpdf_add_page_at"); auto page = qpdf_oh_item_internal(newpage_qpdf, newpage); auto ref = qpdf_oh_item_internal(qpdf, refpage); - return trap_errors(qpdf, [&page, before, &ref](qpdf_data q) { - q->qpdf->addPageAt(page, before, ref); - }); + return trap_errors( + qpdf, [&page, before, &ref](qpdf_data q) { q->qpdf->addPageAt(page, before, ref); }); } QPDF_ERROR_CODE @@ -2006,24 +1889,20 @@ qpdf_create_from_json_file(qpdf_data qpdf, char const* filename) { QPDF_ERROR_CODE status = QPDF_SUCCESS; qpdf->filename = filename; - status = trap_errors( - qpdf, [](qpdf_data q) { q->qpdf->createFromJSON(q->filename); }); + status = trap_errors(qpdf, [](qpdf_data q) { q->qpdf->createFromJSON(q->filename); }); return status; } QPDF_ERROR_CODE -qpdf_create_from_json_data( - qpdf_data qpdf, char const* buffer, unsigned long long size) +qpdf_create_from_json_data(qpdf_data qpdf, char const* buffer, unsigned long long size) { QPDF_ERROR_CODE status = QPDF_SUCCESS; qpdf->filename = "json buffer"; qpdf->buffer = buffer; qpdf->size = size; - auto b = - new Buffer(QUtil::unsigned_char_pointer(buffer), QIntC::to_size(size)); + auto b = new Buffer(QUtil::unsigned_char_pointer(buffer), QIntC::to_size(size)); auto is = std::make_shared<BufferInputSource>(qpdf->filename, b, true); - status = - trap_errors(qpdf, [&is](qpdf_data q) { q->qpdf->createFromJSON(is); }); + status = trap_errors(qpdf, [&is](qpdf_data q) { q->qpdf->createFromJSON(is); }); return status; } @@ -2031,21 +1910,17 @@ QPDF_ERROR_CODE qpdf_update_from_json_file(qpdf_data qpdf, char const* filename) { QPDF_ERROR_CODE status = QPDF_SUCCESS; - status = trap_errors( - qpdf, [filename](qpdf_data q) { q->qpdf->updateFromJSON(filename); }); + status = trap_errors(qpdf, [filename](qpdf_data q) { q->qpdf->updateFromJSON(filename); }); return status; } QPDF_ERROR_CODE -qpdf_update_from_json_data( - qpdf_data qpdf, char const* buffer, unsigned long long size) +qpdf_update_from_json_data(qpdf_data qpdf, char const* buffer, unsigned long long size) { QPDF_ERROR_CODE status = QPDF_SUCCESS; - auto b = - new Buffer(QUtil::unsigned_char_pointer(buffer), QIntC::to_size(size)); + auto b = new Buffer(QUtil::unsigned_char_pointer(buffer), QIntC::to_size(size)); auto is = std::make_shared<BufferInputSource>(qpdf->filename, b, true); - status = - trap_errors(qpdf, [&is](qpdf_data q) { q->qpdf->updateFromJSON(is); }); + status = trap_errors(qpdf, [&is](qpdf_data q) { q->qpdf->updateFromJSON(is); }); return status; } @@ -2070,19 +1945,10 @@ qpdf_write_json( } status = trap_errors( qpdf, - [version, - p, - decode_level, - json_stream_data, - file_prefix, - &wanted_objects_set](qpdf_data q) { + [version, p, decode_level, json_stream_data, file_prefix, &wanted_objects_set]( + qpdf_data q) { q->qpdf->writeJSON( - version, - p.get(), - decode_level, - json_stream_data, - file_prefix, - wanted_objects_set); + version, p.get(), decode_level, json_stream_data, file_prefix, wanted_objects_set); }); return status; } |