Commit f07e3370f029d1e4ab0df676ec1fb9ccfbeb708a
Committed by
Jay Berkenbilt
1 parent
43c404b4
Add Pl_Concatenate filter
Showing
3 changed files
with
61 additions
and
0 deletions
include/qpdf/Pl_Concatenate.hh
0 → 100644
| 1 | +#ifndef __PL_CONCATENATE_HH__ | |
| 2 | +#define __PL_CONCATENATE_HH__ | |
| 3 | + | |
| 4 | +// This pipeline will drop all regular finished calls rather than | |
| 5 | +// passing them onto next. To finish downstream streams, call | |
| 6 | +// manualFinish. This makes it possible to pipe multiple streams | |
| 7 | +// (e.g. with QPDFObjectHandle::pipeStreamData) to a downstream like | |
| 8 | +// Pl_Flate that can't handle multiple calls to finish(). | |
| 9 | + | |
| 10 | +#include <qpdf/Pipeline.hh> | |
| 11 | + | |
| 12 | +class Pl_Concatenate: public Pipeline | |
| 13 | +{ | |
| 14 | + public: | |
| 15 | + QPDF_DLL | |
| 16 | + Pl_Concatenate(char const* identifier, Pipeline* next); | |
| 17 | + QPDF_DLL | |
| 18 | + virtual ~Pl_Concatenate(); | |
| 19 | + | |
| 20 | + QPDF_DLL | |
| 21 | + virtual void write(unsigned char* data, size_t len); | |
| 22 | + | |
| 23 | + QPDF_DLL | |
| 24 | + virtual void finish(); | |
| 25 | + | |
| 26 | + // At the very end, call manualFinish actually finish the rest of | |
| 27 | + // the pipeline. | |
| 28 | + QPDF_DLL | |
| 29 | + void manualFinish(); | |
| 30 | +}; | |
| 31 | + | |
| 32 | +#endif // __PL_CONCATENATE_HH__ | ... | ... |
libqpdf/Pl_Concatenate.cc
0 → 100644
| 1 | +#include <qpdf/Pl_Concatenate.hh> | |
| 2 | + | |
| 3 | +Pl_Concatenate::Pl_Concatenate(char const* identifier, Pipeline* next) : | |
| 4 | + Pipeline(identifier, next) | |
| 5 | +{ | |
| 6 | +} | |
| 7 | + | |
| 8 | +Pl_Concatenate::~Pl_Concatenate() | |
| 9 | +{ | |
| 10 | +} | |
| 11 | + | |
| 12 | +void | |
| 13 | +Pl_Concatenate::write(unsigned char* data, size_t len) | |
| 14 | +{ | |
| 15 | + getNext()->write(data, len); | |
| 16 | +} | |
| 17 | + | |
| 18 | +void | |
| 19 | +Pl_Concatenate::finish() | |
| 20 | +{ | |
| 21 | +} | |
| 22 | + | |
| 23 | +void | |
| 24 | +Pl_Concatenate::manualFinish() | |
| 25 | +{ | |
| 26 | + getNext()->finish(); | |
| 27 | +} | |
| 28 | + | ... | ... |
libqpdf/build.mk