KDevelop API Documentation

lib/antlr/antlr/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.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Oct 19 08:01:47 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003