KDevelop API Documentation

TokenBuffer.hpp

Go to the documentation of this file.
00001 #ifndef INC_TokenBuffer_hpp__
00002 #define INC_TokenBuffer_hpp__
00003 
00004 /* ANTLR Translator Generator
00005  * Project led by Terence Parr at http://www.jGuru.com
00006  * Software rights: http://www.antlr.org/RIGHTS.html
00007  *
00008  * $Id: TokenBuffer.hpp,v 1.3 2003/06/30 13:46:50 aclu Exp $
00009  */
00010 
00011 #include <antlr/config.hpp>
00012 #include <antlr/TokenStream.hpp>
00013 #include <antlr/CircularQueue.hpp>
00014 
00015 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00016 namespace antlr {
00017 #endif
00018 
00036 class ANTLR_API TokenBuffer {
00037 public:
00039     TokenBuffer(TokenStream& input_);
00040 
00042     inline void reset( void )
00043     {
00044         nMarkers = 0;
00045         markerOffset = 0;
00046         numToConsume = 0;
00047         queue.clear();
00048     }
00049 
00051     int LA(int i);
00052 
00054     RefToken LT(int i);
00055 
00059     int mark();
00060 
00064     void rewind(int mark);
00065 
00067     inline void consume()
00068     {
00069         numToConsume++;
00070     }
00071 private:
00073     void fill(int amount);
00075     void syncConsume();
00076 
00077 protected:
00078     // Token source
00079     TokenStream& input;
00080 
00081 private:
00082     // Number of active markers
00083     int nMarkers;
00084 
00085     // Additional offset used when markers are active
00086     int markerOffset;
00087 
00088     // Number of calls to consume() since last LA() or LT() call
00089     int numToConsume;
00090 
00091     // Circular queue
00092     CircularQueue<RefToken> queue;
00093 
00094 private:
00095     TokenBuffer(const TokenBuffer& other);
00096     const TokenBuffer& operator=(const TokenBuffer& other);
00097 };
00098 
00100 inline void TokenBuffer::syncConsume()
00101 {
00102     if (numToConsume > 0)
00103     {
00104         if (nMarkers > 0)
00105             markerOffset += numToConsume;
00106         else
00107             queue.removeItems( numToConsume );
00108 
00109         numToConsume = 0;
00110     }
00111 }
00112 
00113 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00114 }
00115 #endif
00116 
00117 #endif //INC_TokenBuffer_hpp__
KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Feb 22 09:22:34 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003