aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-05-04 00:40:42 +0200
committerJay Berkenbilt <ejb@ql.org>2022-05-04 00:54:51 +0200
commit16139d97c83ba48ab31b0f7619bab77d6cdb79e6 (patch)
treedd53beacfaab649a98970469ef281e5c2aa67f6a /libqpdf
parent21d6e3231f627470ee58b06df018f31de9eb3201 (diff)
downloadqpdf-16139d97c83ba48ab31b0f7619bab77d6cdb79e6.tar.zst
Add new Pl_OStream Pipeline
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/CMakeLists.txt1
-rw-r--r--libqpdf/Pl_OStream.cc35
2 files changed, 36 insertions, 0 deletions
diff --git a/libqpdf/CMakeLists.txt b/libqpdf/CMakeLists.txt
index 72b87975..2d5685b4 100644
--- a/libqpdf/CMakeLists.txt
+++ b/libqpdf/CMakeLists.txt
@@ -44,6 +44,7 @@ set(libqpdf_SOURCES
Pl_Flate.cc
Pl_LZWDecoder.cc
Pl_MD5.cc
+ Pl_OStream.cc
Pl_PNGFilter.cc
Pl_QPDFTokenizer.cc
Pl_RC4.cc
diff --git a/libqpdf/Pl_OStream.cc b/libqpdf/Pl_OStream.cc
new file mode 100644
index 00000000..db0081df
--- /dev/null
+++ b/libqpdf/Pl_OStream.cc
@@ -0,0 +1,35 @@
+#include <qpdf/Pl_OStream.hh>
+
+#include <qpdf/QUtil.hh>
+#include <errno.h>
+#include <stdexcept>
+
+Pl_OStream::Members::Members(std::ostream& os) :
+ os(os)
+{
+}
+
+Pl_OStream::Pl_OStream(char const* identifier, std::ostream& os) :
+ Pipeline(identifier, 0),
+ m(new Members(os))
+{
+}
+
+Pl_OStream::~Pl_OStream()
+{
+ // Must be explicit and not inline -- see QPDF_DLL_CLASS in
+ // README-maintainer
+}
+
+void
+Pl_OStream::write(unsigned char const* buf, size_t len)
+{
+ this->m->os.write(
+ reinterpret_cast<char const*>(buf), static_cast<std::streamsize>(len));
+}
+
+void
+Pl_OStream::finish()
+{
+ this->m->os.flush();
+}