diff options
author | Jay Berkenbilt <ejb@ql.org> | 2018-02-16 02:25:49 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2018-02-19 03:05:47 +0100 |
commit | 1fdd86a04924e4ab9543133b74df3322cffbd358 (patch) | |
tree | a0f0a9fb4df59f65f0e4ae03174fa575d288899c /include | |
parent | 5708b5d0aa9c94ab663509fbb865aa27a134aeb3 (diff) | |
download | qpdf-1fdd86a04924e4ab9543133b74df3322cffbd358.tar.zst |
Move Pl_QPDFTokenizer to public interface
Diffstat (limited to 'include')
-rw-r--r-- | include/qpdf/Pl_QPDFTokenizer.hh | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/include/qpdf/Pl_QPDFTokenizer.hh b/include/qpdf/Pl_QPDFTokenizer.hh new file mode 100644 index 00000000..be34b32e --- /dev/null +++ b/include/qpdf/Pl_QPDFTokenizer.hh @@ -0,0 +1,74 @@ +// Copyright (c) 2005-2018 Jay Berkenbilt +// +// This file is part of qpdf. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Versions of qpdf prior to version 7 were released under the terms +// of version 2.0 of the Artistic License. At your option, you may +// continue to consider qpdf to be licensed under those terms. Please +// see the manual for additional information. + +#ifndef __PL_QPDFTOKENIZER_HH__ +#define __PL_QPDFTOKENIZER_HH__ + +#include <qpdf/Pipeline.hh> + +#include <qpdf/QPDFTokenizer.hh> +#include <qpdf/PointerHolder.hh> +#include <qpdf/QPDFObjectHandle.hh> + +// Tokenize the incoming text using QPDFTokenizer and pass the tokens +// in turn to a QPDFObjectHandle::TokenFilter object. All bytes of +// incoming content will be included in exactly one token and passed +// downstream. + +// This is a very low-level interface for working with token filters. +// Most code will want to use QPDFObjectHandle::filterPageContents or +// QPDFObjectHandle::addTokenFilter. See QPDFObjectHandle.hh for +// details. + +class Pl_QPDFTokenizer: public Pipeline +{ + public: + Pl_QPDFTokenizer(char const* identifier, + QPDFObjectHandle::TokenFilter* filter); + virtual ~Pl_QPDFTokenizer(); + virtual void write(unsigned char* buf, size_t len); + virtual void finish(); + + private: + void processChar(char ch); + void checkUnread(); + + class Members + { + friend class Pl_QPDFTokenizer; + + public: + ~Members(); + + private: + Members(); + Members(Members const&); + + QPDFObjectHandle::TokenFilter* filter; + QPDFTokenizer tokenizer; + bool last_char_was_cr; + bool unread_char; + char char_to_unread; + }; + PointerHolder<Members> m; +}; + +#endif // __PL_QPDFTOKENIZER_HH__ |