ANTLR Support Libraries 2.7.1+
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Friends
Macros
Pages
antlr
TokenBuffer.hpp
Go to the documentation of this file.
1
#ifndef INC_TokenBuffer_hpp__
2
#define INC_TokenBuffer_hpp__
3
4
/* ANTLR Translator Generator
5
* Project led by Terence Parr at http://www.jGuru.com
6
* Software rights: http://www.antlr.org/license.html
7
*
8
* $Id: //depot/code/org.antlr/release/antlr-2.7.7/lib/cpp/antlr/TokenBuffer.hpp#2 $
9
*/
10
11
#include <
antlr/config.hpp
>
12
#include <
antlr/TokenStream.hpp
>
13
#include <
antlr/CircularQueue.hpp
>
14
15
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
16
namespace
antlr {
17
#endif
18
36
class
ANTLR_API
TokenBuffer
{
37
public
:
39
TokenBuffer
(
TokenStream
& input_);
40
virtual
~
TokenBuffer
();
41
43
inline
void
reset(
void
)
44
{
45
nMarkers = 0;
46
markerOffset = 0;
47
numToConsume = 0;
48
queue.clear();
49
}
50
52
int
LA(
unsigned
int
i );
53
55
RefToken
LT(
unsigned
int
i );
56
60
unsigned
int
mark();
61
65
void
rewind(
unsigned
int
mark);
66
68
inline
void
consume()
69
{
70
numToConsume++;
71
}
72
74
virtual
unsigned
int
entries()
const
;
75
76
private
:
78
void
fill(
unsigned
int
amount);
80
void
syncConsume();
81
82
protected
:
84
TokenStream
&
input
;
85
87
unsigned
int
nMarkers
;
88
90
unsigned
int
markerOffset
;
91
93
unsigned
int
numToConsume
;
94
96
CircularQueue<RefToken>
queue
;
97
98
private
:
99
TokenBuffer
(
const
TokenBuffer
& other);
100
const
TokenBuffer
& operator=(
const
TokenBuffer
& other);
101
};
102
104
inline
void
TokenBuffer::syncConsume
()
105
{
106
if
(numToConsume > 0)
107
{
108
if
(nMarkers > 0)
109
markerOffset += numToConsume;
110
else
111
queue.removeItems( numToConsume );
112
113
numToConsume = 0;
114
}
115
}
116
117
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
118
}
119
#endif
120
121
#endif //INC_TokenBuffer_hpp__
Generated by
1.8.1.1