lib/antlr/antlr/TokenBuffer.hpp
Go to the documentation of this file.00001
#ifndef INC_TokenBuffer_hpp__
00002
#define INC_TokenBuffer_hpp__
00003
00004
00005
00006
00007
00008
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
00079 TokenStream& input;
00080
00081
private:
00082
00083 int nMarkers;
00084
00085
00086 int markerOffset;
00087
00088
00089 int numToConsume;
00090
00091
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__
This file is part of the documentation for KDevelop Version 3.0.4.