2008-04-29 12:55:25 +00:00
|
|
|
#ifndef __PL_QPDFTOKENIZER_HH__
|
|
|
|
#define __PL_QPDFTOKENIZER_HH__
|
|
|
|
|
|
|
|
#include <qpdf/Pipeline.hh>
|
|
|
|
|
|
|
|
#include <qpdf/QPDFTokenizer.hh>
|
|
|
|
|
|
|
|
//
|
|
|
|
// Treat incoming text as a stream consisting of valid PDF tokens, but
|
|
|
|
// output bad tokens just the same. The idea here is to be able to
|
|
|
|
// use pipeline for content streams to normalize newlines without
|
|
|
|
// interfering with meaningful newlines such as those that occur
|
|
|
|
// inside of strings.
|
|
|
|
//
|
|
|
|
|
|
|
|
class Pl_QPDFTokenizer: public Pipeline
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Pl_QPDFTokenizer(char const* identifier, Pipeline* next);
|
|
|
|
virtual ~Pl_QPDFTokenizer();
|
2012-06-20 15:20:57 +00:00
|
|
|
virtual void write(unsigned char* buf, size_t len);
|
2008-04-29 12:55:25 +00:00
|
|
|
virtual void finish();
|
|
|
|
|
|
|
|
private:
|
|
|
|
void processChar(char ch);
|
|
|
|
void checkUnread();
|
2012-06-20 15:20:57 +00:00
|
|
|
void writeNext(char const*, size_t len);
|
2008-04-29 12:55:25 +00:00
|
|
|
void writeToken(QPDFTokenizer::Token&);
|
|
|
|
|
|
|
|
QPDFTokenizer tokenizer;
|
|
|
|
bool just_wrote_nl;
|
|
|
|
bool last_char_was_cr;
|
|
|
|
bool unread_char;
|
|
|
|
char char_to_unread;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // __PL_QPDFTOKENIZER_HH__
|