From 8b073eed280abcd926a37100ea740efb1cdc85c4 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Tue, 20 Oct 2009 00:46:26 +0000 Subject: checkpoint git-svn-id: svn+q:///qpdf/trunk@831 71b93d88-0707-0410-a8cf-f5a4172ac649 --- libqpdf/qpdf-c.cc | 54 +++++++++++++++++++----------------------------------- 1 file changed, 19 insertions(+), 35 deletions(-) (limited to 'libqpdf') diff --git a/libqpdf/qpdf-c.cc b/libqpdf/qpdf-c.cc index 2f65b0f7..d6e8882a 100644 --- a/libqpdf/qpdf-c.cc +++ b/libqpdf/qpdf-c.cc @@ -30,14 +30,6 @@ struct _qpdf_data // Parameters for functions we call char const* filename; char const* password; - - // must set filename and password - void call_read(); - - // must set filename - void call_init_write(); - - void call_write(); }; _qpdf_data::_qpdf_data() : @@ -52,43 +44,29 @@ _qpdf_data::~_qpdf_data() delete qpdf; } -void -_qpdf_data::call_read() +// must set qpdf->filename and qpdf->password +static void call_read(qpdf_data qpdf) { - qpdf->processFile(filename, password); + qpdf->qpdf->processFile(qpdf->filename, qpdf->password); } -void -_qpdf_data::call_init_write() +// must set qpdf->filename +static void call_init_write(qpdf_data qpdf) { - if (qpdf_writer) - { - QTC::TC("qpdf", "qpdf-c called qpdf_init_write multiple times"); - delete qpdf_writer; - qpdf_writer = 0; - } - try - { - qpdf_writer = new QPDFWriter(*qpdf, filename); - } - catch (...) - { - throw; - } + qpdf->qpdf_writer = new QPDFWriter(*(qpdf->qpdf), qpdf->filename); } -void -_qpdf_data::call_write() +static void call_write(qpdf_data qpdf) { - qpdf_writer->write(); + qpdf->qpdf_writer->write(); } -static QPDF_ERROR_CODE trap_errors(qpdf_data qpdf, void (_qpdf_data::*fn)()) +static QPDF_ERROR_CODE trap_errors(qpdf_data qpdf, void (*fn)(qpdf_data)) { QPDF_ERROR_CODE status = QPDF_SUCCESS; try { - (qpdf->*fn)(); + fn(qpdf); } catch (QPDFExc& e) { @@ -227,7 +205,7 @@ QPDF_ERROR_CODE qpdf_read(qpdf_data qpdf, char const* filename, QPDF_ERROR_CODE status = QPDF_SUCCESS; qpdf->filename = filename; qpdf->password = password; - status = trap_errors(qpdf, &_qpdf_data::call_read); + status = trap_errors(qpdf, &call_read); QTC::TC("qpdf", "qpdf-c called qpdf_read", status); return status; } @@ -315,8 +293,14 @@ QPDF_BOOL qpdf_allow_modify_all(qpdf_data qpdf) QPDF_ERROR_CODE qpdf_init_write(qpdf_data qpdf, char const* filename) { QPDF_ERROR_CODE status = QPDF_SUCCESS; + if (qpdf->qpdf_writer) + { + QTC::TC("qpdf", "qpdf-c called qpdf_init_write multiple times"); + delete qpdf->qpdf_writer; + qpdf->qpdf_writer = 0; + } qpdf->filename = filename; - status = trap_errors(qpdf, &_qpdf_data::call_init_write); + status = trap_errors(qpdf, &call_init_write); QTC::TC("qpdf", "qpdf-c called qpdf_init_write", status); return status; } @@ -426,7 +410,7 @@ void qpdf_force_pdf_version(qpdf_data qpdf, char const* version) QPDF_ERROR_CODE qpdf_write(qpdf_data qpdf) { QPDF_ERROR_CODE status = QPDF_SUCCESS; - status = trap_errors(qpdf, &_qpdf_data::call_write); + status = trap_errors(qpdf, &call_write); QTC::TC("qpdf", "qpdf-c called qpdf_write", status); return status; } -- cgit v1.2.3-54-g00ecf