From 3a7ee7e93847d41cae414ff77cc75fd6394751ef Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sat, 18 Jun 2022 14:56:58 -0400 Subject: Move C-based ProgressReporter helper into QPDFWriter --- libqpdf/QPDFWriter.cc | 24 ++++++++++++++++++++++++ libqpdf/qpdf-c.cc | 30 ++---------------------------- 2 files changed, 26 insertions(+), 28 deletions(-) (limited to 'libqpdf') diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index b1bb4ad7..d160ff99 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -25,6 +25,30 @@ #include #include +QPDFWriter::ProgressReporter::~ProgressReporter() +{ + // Must be explicit and not inline -- see QPDF_DLL_CLASS in + // README-maintainer +} + +QPDFWriter::FunctionProgressReporter::FunctionProgressReporter( + std::function handler) : + handler(handler) +{ +} + +QPDFWriter::FunctionProgressReporter::~FunctionProgressReporter() +{ + // Must be explicit and not inline -- see QPDF_DLL_CLASS in + // README-maintainer +} + +void +QPDFWriter::FunctionProgressReporter::reportProgress(int progress) +{ + this->handler(progress); +} + QPDFWriter::Members::Members(QPDF& pdf) : pdf(pdf), filename("unspecified"), diff --git a/libqpdf/qpdf-c.cc b/libqpdf/qpdf-c.cc index 468811b3..bde0ac72 100644 --- a/libqpdf/qpdf-c.cc +++ b/libqpdf/qpdf-c.cc @@ -61,33 +61,6 @@ _qpdf_data::_qpdf_data() : { } -namespace -{ - class ProgressReporter: public QPDFWriter::ProgressReporter - { - public: - ProgressReporter(void (*handler)(int, void*), void* data); - virtual ~ProgressReporter() = default; - virtual void reportProgress(int); - - private: - void (*handler)(int, void*); - void* data; - }; -} // namespace - -ProgressReporter::ProgressReporter(void (*handler)(int, void*), void* data) : - handler(handler), - data(data) -{ -} - -void -ProgressReporter::reportProgress(int progress) -{ - this->handler(progress, this->data); -} - // must set qpdf->filename and qpdf->password static void call_read(qpdf_data qpdf) @@ -851,7 +824,8 @@ qpdf_register_progress_reporter( QTC::TC("qpdf", "qpdf-c registered progress reporter"); qpdf->qpdf_writer->registerProgressReporter( std::shared_ptr( - new ProgressReporter(report_progress, data))); + new QPDFWriter::FunctionProgressReporter( + std::bind(report_progress, std::placeholders::_1, data)))); } QPDF_ERROR_CODE -- cgit v1.2.3-54-g00ecf