You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.4 KiB
59 lines
1.4 KiB
//========================================================================
|
|
//
|
|
// Parser.h
|
|
//
|
|
// Copyright 1996-2003 Glyph & Cog, LLC
|
|
//
|
|
//========================================================================
|
|
|
|
#ifndef PARSER_H
|
|
#define PARSER_H
|
|
|
|
#include <aconf.h>
|
|
|
|
#ifdef USE_GCC_PRAGMAS
|
|
#pragma interface
|
|
#endif
|
|
|
|
#include "Lexer.h"
|
|
|
|
//------------------------------------------------------------------------
|
|
// Parser
|
|
//------------------------------------------------------------------------
|
|
|
|
class Parser {
|
|
public:
|
|
|
|
// Constructor.
|
|
Parser(XRef *xrefA, Lexer *lexerA, GBool allowStreamsA);
|
|
|
|
// Destructor.
|
|
~Parser();
|
|
|
|
// Get the next object from the input stream.
|
|
Object *getObj(Object *obj, Guchar *fileKey = NULL,
|
|
CryptAlgorithm encAlgorithm = cryptRC4, int keyLength = 0,
|
|
int objNum = 0, int objGen = 0);
|
|
|
|
// Get stream.
|
|
Stream *getStream() { return lexer->getStream(); }
|
|
|
|
// Get current position in file.
|
|
int getPos() { return lexer->getPos(); }
|
|
|
|
private:
|
|
|
|
XRef *xref; // the xref table for this PDF file
|
|
Lexer *lexer; // input stream
|
|
GBool allowStreams; // parse stream objects?
|
|
Object buf1, buf2; // next two tokens
|
|
int inlineImg; // set when inline image data is encountered
|
|
|
|
Stream *makeStream(Object *dict, Guchar *fileKey,
|
|
CryptAlgorithm encAlgorithm, int keyLength,
|
|
int objNum, int objGen);
|
|
void shift();
|
|
};
|
|
|
|
#endif
|
|
|
|
|