ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-2.0/src/antlr/CharInputBuffer.hpp
Revision: 2469
Committed: Fri Dec 2 15:38:03 2005 UTC (18 years, 7 months ago) by tim
File size: 1819 byte(s)
Log Message:
End of the Link --> List
Return of the Oject-Oriented
replace yacc/lex parser with antlr parser

File Contents

# Content
1 #ifndef INC_CharInputBuffer_hpp__
2 # define INC_CharInputBuffer_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: CharInputBuffer.hpp,v 1.1 2005-12-02 15:38:02 tim Exp $
9 */
10
11 # include <antlr/config.hpp>
12 # include <antlr/InputBuffer.hpp>
13
14 # ifdef HAS_NOT_CCTYPE_H
15 # include <ctype.h>
16 # else
17 # include <cctype>
18 # endif
19
20 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
21 namespace antlr {
22 #endif
23
24 /** CharInputBuffer.hpp provides an InputBuffer for plain character arrays (buffers).
25 */
26 class CharInputBuffer : public InputBuffer
27 {
28 public:
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[]!
32 */
33 CharInputBuffer( unsigned char* buf, size_t size, bool owner = false )
34 : buffer(buf)
35 , ptr(buf)
36 , end(buf + size)
37 , delete_buffer(owner)
38 {
39 }
40
41 /** Destructor
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.
44 */
45 ~CharInputBuffer( void )
46 {
47 if( delete_buffer && buffer )
48 delete [] buffer;
49 }
50
51 /** Reset the CharInputBuffer to initial state
52 * Called from LexerInputState::reset.
53 * @see LexerInputState
54 */
55 virtual inline void reset( void )
56 {
57 InputBuffer::reset();
58 ptr = buffer;
59 }
60
61 virtual int getChar( void )
62 {
63 return (ptr < end) ? *ptr++ : EOF;
64 }
65
66 protected:
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
71 };
72
73 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
74 }
75 #endif
76
77 #endif