aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-09-09 14:03:21 +0200
committerJay Berkenbilt <ejb@ql.org>2022-09-09 16:49:25 +0200
commit3dbab589e32d3ed5bd98e0634255ba7dfab4c892 (patch)
tree132391fe89db1b2fbf50929721e0eb8bb167e47d /libqpdf
parent0ad4e190ffbb85ea2db5a05d43cd4f81d98cfe63 (diff)
downloadqpdf-3dbab589e32d3ed5bd98e0634255ba7dfab4c892.tar.zst
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.
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/qpdf-c.cc13
-rw-r--r--libqpdf/qpdf/qpdflogger-c_impl.hh11
-rw-r--r--libqpdf/qpdfjob-c.cc13
-rw-r--r--libqpdf/qpdflogger-c.cc22
4 files changed, 51 insertions, 8 deletions
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 <qpdf/QPDFWriter.hh>
#include <qpdf/QTC.hh>
#include <qpdf/QUtil.hh>
+#include <qpdf/qpdflogger-c_impl.hh>
#include <cstring>
#include <functional>
@@ -280,6 +281,18 @@ qpdf_check_pdf(qpdf_data qpdf)
}
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)
{
QTC::TC("qpdf", "qpdf-c called qpdf_set_suppress_warnings");
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 <qpdf/qpdflogger-c.h>
+
+#include <qpdf/QPDFLogger.hh>
+
+struct _qpdflogger_handle
+{
+ _qpdflogger_handle(std::shared_ptr<QPDFLogger> l);
+ ~_qpdflogger_handle() = default;
+
+ std::shared_ptr<QPDFLogger> 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 <qpdf/QPDFLogger.hh>
#include <qpdf/QPDFUsage.hh>
#include <qpdf/QUtil.hh>
+#include <qpdf/qpdflogger-c_impl.hh>
#include <cstdio>
#include <cstring>
@@ -41,6 +42,18 @@ wrap_qpdfjob(qpdfjob_handle j, std::function<int(qpdfjob_handle j)> 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 <qpdf/qpdflogger-c.h>
+#include <qpdf/qpdflogger-c_impl.hh>
+
#include <qpdf/Pipeline.hh>
#include <qpdf/Pl_Function.hh>
#include <qpdf/QIntC.hh>
@@ -7,14 +9,6 @@
#include <functional>
#include <memory>
-struct _qpdflogger_handle
-{
- _qpdflogger_handle(std::shared_ptr<QPDFLogger> l);
- ~_qpdflogger_handle() = default;
-
- std::shared_ptr<QPDFLogger> l;
-};
-
_qpdflogger_handle::_qpdflogger_handle(std::shared_ptr<QPDFLogger> 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();
+}