From e410b0fe0d8c1da3e0b0e075b54f247b952389ef Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Thu, 15 Feb 2018 20:45:19 -0500 Subject: Simplify TokenFilter interface Expose Pl_QPDFTokenizer, and have it do more of the work of managing the token filter's pipeline. --- libqpdf/QPDFObjectHandle.cc | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) (limited to 'libqpdf/QPDFObjectHandle.cc') diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 5d7b0bb9..195442ca 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -16,7 +16,6 @@ #include #include #include -#include #include #include @@ -64,6 +63,11 @@ CoalesceProvider::provideStreamData(int, int, Pipeline* p) concat.manualFinish(); } +void +QPDFObjectHandle::TokenFilter::handleEOF() +{ +} + void QPDFObjectHandle::TokenFilter::setPipeline(Pipeline* p) { @@ -75,8 +79,7 @@ QPDFObjectHandle::TokenFilter::write(char const* data, size_t len) { if (! this->pipeline) { - throw std::logic_error( - "TokenFilter::write called before setPipeline"); + return; } if (len) { @@ -97,17 +100,6 @@ QPDFObjectHandle::TokenFilter::writeToken(QPDFTokenizer::Token const& token) write(value.c_str(), value.length()); } -void -QPDFObjectHandle::TokenFilter::finish() -{ - if (! this->pipeline) - { - throw std::logic_error( - "TokenFilter::finish called before setPipeline"); - } - this->pipeline->finish(); -} - void QPDFObjectHandle::ParserCallbacks::terminateParsing() { @@ -1007,14 +999,7 @@ QPDFObjectHandle::filterPageContents(TokenFilter* filter, Pipeline* next) std::string description = "token filter for page object " + QUtil::int_to_string(this->objid) + " " + QUtil::int_to_string(this->generation); - Pl_QPDFTokenizer token_pipeline(description.c_str(), filter); - PointerHolder next_p; - if (next == 0) - { - next_p = new Pl_Discard(); - next = next_p.getPointer(); - } - filter->setPipeline(next); + Pl_QPDFTokenizer token_pipeline(description.c_str(), filter, next); this->pipePageContents(&token_pipeline); } -- cgit v1.2.3-54-g00ecf