aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
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__