1 #ifndef INC_CharBuffer_hpp__
2 #define INC_CharBuffer_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/CharBuffer.hpp#2 $
9  */
10 
11 #include <antlr/config.hpp>
12 
13 #include <istream>
14 
15 #include <antlr/InputBuffer.hpp>
16 
17 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
18 namespace antlr {
19 #endif
20 
21 /**A Stream of characters fed to the lexer from a InputStream that can
22  * be rewound via mark()/rewind() methods.
23  * <p>
24  * A dynamic array is used to buffer up all the input characters.  Normally,
25  * "k" characters are stored in the buffer.  More characters may be stored
26  * during guess mode (testing syntactic predicate), or when LT(i>k) is
27  * referenced.
28  * Consumption of characters is deferred.  In other words, reading the next
29  * character is not done by consume(), but deferred until needed by LA or LT.
30  * <p>
31  *
32  * @see antlr.CharQueue
33  */
34 
35 class ANTLR_API CharBuffer : public InputBuffer {
36 public:
37 	/// Create a character buffer
38 	CharBuffer( ANTLR_USE_NAMESPACE(std)istream& input );
39 	/// Get the next character from the stream
40 	int getChar();
41 
42 protected:
43 	// character source
44 	ANTLR_USE_NAMESPACE(std)istream& input;
45 
46 private:
47 	// NOTE: Unimplemented
48 	CharBuffer(const CharBuffer& other);
49 	CharBuffer& operator=(const CharBuffer& other);
50 };
51 
52 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
53 }
54 #endif
55 
56 #endif //INC_CharBuffer_hpp__
57