From 3dbab589e32d3ed5bd98e0634255ba7dfab4c892 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Fri, 9 Sep 2022 08:03:21 -0400 Subject: Add C API functions for using custom loggers Expose functions to the C API to create new loggers and to setLogger and getLogger for QPDF and QPDFJob. --- libqpdf/qpdf-c.cc | 13 +++++++++++++ libqpdf/qpdf/qpdflogger-c_impl.hh | 11 +++++++++++ libqpdf/qpdfjob-c.cc | 13 +++++++++++++ libqpdf/qpdflogger-c.cc | 22 ++++++++++++++-------- 4 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 libqpdf/qpdf/qpdflogger-c_impl.hh (limited to 'libqpdf') diff --git a/libqpdf/qpdf-c.cc b/libqpdf/qpdf-c.cc index a8ae8102..b183c8fb 100644 --- a/libqpdf/qpdf-c.cc +++ b/libqpdf/qpdf-c.cc @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -279,6 +280,18 @@ qpdf_check_pdf(qpdf_data qpdf) return status; } +void +qpdf_set_logger(qpdf_data qpdf, qpdflogger_handle logger) +{ + qpdf->qpdf->setLogger(logger->l); +} + +qpdflogger_handle +qpdf_get_logger(qpdf_data qpdf) +{ + return new _qpdflogger_handle(qpdf->qpdf->getLogger()); +} + void qpdf_set_suppress_warnings(qpdf_data qpdf, QPDF_BOOL value) { diff --git a/libqpdf/qpdf/qpdflogger-c_impl.hh b/libqpdf/qpdf/qpdflogger-c_impl.hh new file mode 100644 index 00000000..d9787a2d --- /dev/null +++ b/libqpdf/qpdf/qpdflogger-c_impl.hh @@ -0,0 +1,11 @@ +#include + +#include + +struct _qpdflogger_handle +{ + _qpdflogger_handle(std::shared_ptr l); + ~_qpdflogger_handle() = default; + + std::shared_ptr l; +}; diff --git a/libqpdf/qpdfjob-c.cc b/libqpdf/qpdfjob-c.cc index 9367547c..889afec6 100644 --- a/libqpdf/qpdfjob-c.cc +++ b/libqpdf/qpdfjob-c.cc @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -41,6 +42,18 @@ wrap_qpdfjob(qpdfjob_handle j, std::function fn) return QPDFJob::EXIT_ERROR; } +void +qpdfjob_set_logger(qpdfjob_handle j, qpdflogger_handle logger) +{ + j->j.setLogger(logger->l); +} + +qpdflogger_handle +qpdfjob_get_logger(qpdfjob_handle j) +{ + return new _qpdflogger_handle(j->j.getLogger()); +} + int qpdfjob_initialize_from_argv(qpdfjob_handle j, char const* const argv[]) { diff --git a/libqpdf/qpdflogger-c.cc b/libqpdf/qpdflogger-c.cc index 290b2667..2a6d1052 100644 --- a/libqpdf/qpdflogger-c.cc +++ b/libqpdf/qpdflogger-c.cc @@ -1,5 +1,7 @@ #include +#include + #include #include #include @@ -7,14 +9,6 @@ #include #include -struct _qpdflogger_handle -{ - _qpdflogger_handle(std::shared_ptr l); - ~_qpdflogger_handle() = default; - - std::shared_ptr l; -}; - _qpdflogger_handle::_qpdflogger_handle(std::shared_ptr l) : l(l) { @@ -26,6 +20,12 @@ qpdflogger_default_logger() return new _qpdflogger_handle(QPDFLogger::defaultLogger()); } +qpdflogger_handle +qpdflogger_create() +{ + return new _qpdflogger_handle(QPDFLogger::create()); +} + void qpdflogger_cleanup(qpdflogger_handle* l) { @@ -125,3 +125,9 @@ qpdflogger_save_to_standard_output(qpdflogger_handle l, int only_if_not_set) qpdflogger_set_save( l, qpdf_log_dest_stdout, nullptr, nullptr, only_if_not_set); } + +int +qpdflogger_equal(qpdflogger_handle l1, qpdflogger_handle l2) +{ + return l1->l.get() == l2->l.get(); +} -- cgit v1.2.3-54-g00ecf