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