1 #ifndef INC_CharInputBuffer_hpp__
2 # define INC_CharInputBuffer_hpp__
4 /* ANTLR Translator Generator
5 * Project led by Terence Parr at http://www.jGuru.com
6 * Software rights: http://www.antlr.org/license.html
11 # include <antlr/config.hpp>
12 # include <antlr/InputBuffer.hpp>
14 # ifdef HAS_NOT_CCTYPE_H
20 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
24 /** CharInputBuffer.hpp provides an InputBuffer for plain character arrays (buffers).
26 class CharInputBuffer : public InputBuffer
29 /** Construct a CharInputBuffer.hpp object with a char* buffer of 'size'
30 * if 'owner' is true, then the buffer will be delete[]-ed on destruction.
31 * @note it is assumed the buffer was allocated with new[]!
33 CharInputBuffer( unsigned char* buf, size_t size, bool owner = false )
37 , delete_buffer(owner)
42 * @note If you're using malloced data, then you probably need to change
43 * this destructor. Or better use this class as template for your own.
45 ~CharInputBuffer( void )
47 if( delete_buffer && buffer )
51 /** Reset the CharInputBuffer to initial state
52 * Called from LexerInputState::reset.
53 * @see LexerInputState
55 virtual inline void reset( void )
61 virtual int getChar( void )
63 return (ptr < end) ? *ptr++ : EOF;
67 unsigned char* buffer; ///< the buffer with data
68 unsigned char* ptr; ///< position ptr into the buffer
69 unsigned char* end; ///< end sentry for buffer
70 bool delete_buffer; ///< flag signifying if we have to delete the buffer
73 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE