summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-06-18 19:38:36 +0200
committerJay Berkenbilt <ejb@ql.org>2022-06-19 14:46:58 +0200
commit8130d50e3b5aa0235a133c3c5a3018ac01afb5e1 (patch)
tree461c961df0299707b628f4fa6a41539fafa2d193 /include
parentdaef4e8fb856e84e2a9151cd7715a941a0ae9c6c (diff)
downloadqpdf-8130d50e3b5aa0235a133c3c5a3018ac01afb5e1.tar.zst
Add C API to QPDFLogger
Diffstat (limited to 'include')
-rw-r--r--include/qpdf/QPDFLogger.hh4
-rw-r--r--include/qpdf/qpdflogger-c.h100
2 files changed, 102 insertions, 2 deletions
diff --git a/include/qpdf/QPDFLogger.hh b/include/qpdf/QPDFLogger.hh
index cd439caa..54ab7efe 100644
--- a/include/qpdf/QPDFLogger.hh
+++ b/include/qpdf/QPDFLogger.hh
@@ -130,9 +130,9 @@ class QPDFLogger
void setError(std::shared_ptr<Pipeline>);
// See notes above about the save pipeline
QPDF_DLL
- void setSave(std::shared_ptr<Pipeline>);
+ void setSave(std::shared_ptr<Pipeline>, bool only_if_not_set);
QPDF_DLL
- void saveToStandardOutput();
+ void saveToStandardOutput(bool only_if_not_set);
// Shortcut for logic to reset output to new output/error streams.
// out_stream is used for info, err_stream is used for error, and
diff --git a/include/qpdf/qpdflogger-c.h b/include/qpdf/qpdflogger-c.h
new file mode 100644
index 00000000..9d31f79c
--- /dev/null
+++ b/include/qpdf/qpdflogger-c.h
@@ -0,0 +1,100 @@
+/* Copyright (c) 2005-2022 Jay Berkenbilt
+ *
+ * This file is part of qpdf.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Versions of qpdf prior to version 7 were released under the terms
+ * of version 2.0 of the Artistic License. At your option, you may
+ * continue to consider qpdf to be licensed under those terms. Please
+ * see the manual for additional information.
+ */
+
+#ifndef QPDFLOGGER_H
+#define QPDFLOGGER_H
+
+/*
+ * This file provides a C API for QPDFLogger. See QPDFLogger.hh for
+ * information about the logger.
+ */
+
+#include <qpdf/DLL.h>
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /* To operate on a logger, you need a handle to it. call
+ * qpdflogger_default_logger to get a handle for the default
+ * logger. The qpdf and qpdfjob functions may offer ways to get
+ * other logger handles. When you're done with the logger handler,
+ * call qpdflogger_cleanup. This does not destroy the underlying
+ * log object. It just cleans up the handle to it.
+ */
+
+ typedef struct _qpdflogger_handle* qpdflogger_handle;
+ QPDF_DLL
+ qpdflogger_handle qpdflogger_default_logger();
+
+ QPDF_DLL
+ void qpdflogger_cleanup(qpdflogger_handle* l);
+
+ enum qpdf_log_dest_e {
+ qpdf_log_dest_default = 0,
+ qpdf_log_dest_stdout = 1,
+ qpdf_log_dest_stderr = 2,
+ qpdf_log_dest_discard = 3,
+ qpdf_log_dest_custom = 4,
+ };
+
+ typedef void (*qpdf_log_fn_t)(char const* data, size_t len, void* udata);
+
+ QPDF_DLL
+ void qpdflogger_set_info(
+ qpdflogger_handle l,
+ enum qpdf_log_dest_e dest,
+ qpdf_log_fn_t fn,
+ void* udata);
+ QPDF_DLL
+ void qpdflogger_set_warn(
+ qpdflogger_handle l,
+ enum qpdf_log_dest_e dest,
+ qpdf_log_fn_t fn,
+ void* udata);
+ QPDF_DLL
+ void qpdflogger_set_error(
+ qpdflogger_handle l,
+ enum qpdf_log_dest_e dest,
+ qpdf_log_fn_t fn,
+ void* udata);
+
+ /* A non-zero value for only_if_not_set means that the save
+ * pipeline will only be changed if it is not already set.
+ */
+ QPDF_DLL
+ void qpdflogger_set_save(
+ qpdflogger_handle l,
+ enum qpdf_log_dest_e dest,
+ qpdf_log_fn_t fn,
+ void* udata,
+ int only_if_not_set);
+ QPDF_DLL
+ void qpdflogger_save_to_standard_output(
+ qpdflogger_handle l, int only_if_not_set);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // QPDFLOGGER_H