diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-06-18 20:56:58 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-06-19 14:46:58 +0200 |
commit | 3a7ee7e93847d41cae414ff77cc75fd6394751ef (patch) | |
tree | 4d28778c0b1fe2c9f8feaad5adaab4b1ff29693a /libqpdf | |
parent | 8e361d98f0bb23d58cbc773367ba76dffced7bdb (diff) | |
download | qpdf-3a7ee7e93847d41cae414ff77cc75fd6394751ef.tar.zst |
Move C-based ProgressReporter helper into QPDFWriter
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDFWriter.cc | 24 | ||||
-rw-r--r-- | libqpdf/qpdf-c.cc | 30 |
2 files changed, 26 insertions, 28 deletions
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 <algorithm> #include <stdlib.h> +QPDFWriter::ProgressReporter::~ProgressReporter() +{ + // Must be explicit and not inline -- see QPDF_DLL_CLASS in + // README-maintainer +} + +QPDFWriter::FunctionProgressReporter::FunctionProgressReporter( + std::function<void(int)> 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<QPDFWriter::ProgressReporter>( - new ProgressReporter(report_progress, data))); + new QPDFWriter::FunctionProgressReporter( + std::bind(report_progress, std::placeholders::_1, data)))); } QPDF_ERROR_CODE |