Back to index

tetex-bin  3.0
Parser.h
Go to the documentation of this file.
00001 //========================================================================
00002 //
00003 // Parser.h
00004 //
00005 // Copyright 1996-2003 Glyph & Cog, LLC
00006 //
00007 //========================================================================
00008 
00009 #ifndef PARSER_H
00010 #define PARSER_H
00011 
00012 #include <aconf.h>
00013 
00014 #ifdef USE_GCC_PRAGMAS
00015 #pragma interface
00016 #endif
00017 
00018 #include "Lexer.h"
00019 
00020 //------------------------------------------------------------------------
00021 // Parser
00022 //------------------------------------------------------------------------
00023 
00024 class Parser {
00025 public:
00026 
00027   // Constructor.
00028   Parser(XRef *xrefA, Lexer *lexerA);
00029 
00030   // Destructor.
00031   ~Parser();
00032 
00033   // Get the next object from the input stream.
00034 #ifndef NO_DECRYPTION
00035   Object *getObj(Object *obj,
00036                Guchar *fileKey = NULL, int keyLength = 0,
00037                int objNum = 0, int objGen = 0);
00038 #else
00039   Object *getObj(Object *obj);
00040 #endif
00041 
00042   // Get stream.
00043   Stream *getStream() { return lexer->getStream(); }
00044 
00045   // Get current position in file.
00046   int getPos() { return lexer->getPos(); }
00047 
00048 private:
00049 
00050   XRef *xref;               // the xref table for this PDF file
00051   Lexer *lexer;                    // input stream
00052   Object buf1, buf2;        // next two tokens
00053   int inlineImg;            // set when inline image data is encountered
00054 
00055   Stream *makeStream(Object *dict);
00056   void shift();
00057 };
00058 
00059 #endif
00060