aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTobias Hoffmann <thobi@worker>2012-06-27 07:00:18 +0200
committerJay Berkenbilt <ejb@ql.org>2012-06-27 16:20:38 +0200
commitf07e3370f029d1e4ab0df676ec1fb9ccfbeb708a (patch)
treefae43001f9a9f6f5c68d730f15956140ab6c4031 /include
parent43c404b45ab54583a33492adc93f54fa349c2f94 (diff)
downloadqpdf-f07e3370f029d1e4ab0df676ec1fb9ccfbeb708a.tar.zst
Add Pl_Concatenate filter
Diffstat (limited to 'include')
-rw-r--r--include/qpdf/Pl_Concatenate.hh32
1 files changed, 32 insertions, 0 deletions
diff --git a/include/qpdf/Pl_Concatenate.hh b/include/qpdf/Pl_Concatenate.hh
new file mode 100644
index 00000000..1b0cb1a9
--- /dev/null
+++ b/include/qpdf/Pl_Concatenate.hh
@@ -0,0 +1,32 @@
+#ifndef __PL_CONCATENATE_HH__
+#define __PL_CONCATENATE_HH__
+
+// This pipeline will drop all regular finished calls rather than
+// passing them onto next. To finish downstream streams, call
+// manualFinish. This makes it possible to pipe multiple streams
+// (e.g. with QPDFObjectHandle::pipeStreamData) to a downstream like
+// Pl_Flate that can't handle multiple calls to finish().
+
+#include <qpdf/Pipeline.hh>
+
+class Pl_Concatenate: public Pipeline
+{
+ public:
+ QPDF_DLL
+ Pl_Concatenate(char const* identifier, Pipeline* next);
+ QPDF_DLL
+ virtual ~Pl_Concatenate();
+
+ QPDF_DLL
+ virtual void write(unsigned char* data, size_t len);
+
+ QPDF_DLL
+ virtual void finish();
+
+ // At the very end, call manualFinish actually finish the rest of
+ // the pipeline.
+ QPDF_DLL
+ void manualFinish();
+};
+
+#endif // __PL_CONCATENATE_HH__