Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

LexerSharedInputState.hpp

Go to the documentation of this file.
00001 #ifndef INC_LexerSharedInputState_hpp__
00002 #define INC_LexerSharedInputState_hpp__
00003 
00004 /* ANTLR Translator Generator
00005  * Project led by Terence Parr at http://www.jGuru.com
00006  * Software rights: http://www.antlr.org/license.html
00007  *
00008  * $Id: LexerSharedInputState.hpp,v 1.1 2004/10/08 16:27:34 dfisher Exp $
00009  */
00010 
00011 #include <antlr/config.hpp>
00012 #include <antlr/InputBuffer.hpp>
00013 #include <antlr/RefCount.hpp>
00014 #include <antlr/CharBuffer.hpp>
00015 #include <string>
00016 
00017 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00018 namespace antlr {
00019 #endif
00020 
00026 class ANTLR_API LexerInputState {
00027 public:
00032         LexerInputState(InputBuffer* inbuf)
00033         : column(1)
00034         , line(1)
00035         , tokenStartColumn(1)
00036         , tokenStartLine(1)
00037         , guessing(0)
00038         , filename("")
00039         , input(inbuf)
00040         , inputResponsible(true)
00041         {
00042         }
00043 
00047         LexerInputState(InputBuffer& inbuf)
00048         : column(1)
00049         , line(1)
00050         , tokenStartColumn(1)
00051         , tokenStartLine(1)
00052         , guessing(0)
00053         , filename("")
00054         , input(&inbuf)
00055         , inputResponsible(false)
00056         {
00057         }
00058 
00063         LexerInputState(ANTLR_USE_NAMESPACE(std)istream& in)
00064         : column(1)
00065         , line(1)
00066         , tokenStartColumn(1)
00067         , tokenStartLine(1)
00068         , guessing(0)
00069         , filename("")
00070         , input(new CharBuffer(in))
00071         , inputResponsible(true)
00072         {
00073         }
00074 
00080         virtual void initialize( ANTLR_USE_NAMESPACE(std)istream& in, const char* file = "" )
00081         {
00082                 column = 1;
00083                 line = 1;
00084                 tokenStartColumn = 1;
00085                 tokenStartLine = 1;
00086                 guessing = 0;
00087                 filename = file;
00088 
00089                 if( input && inputResponsible )
00090                         delete input;
00091 
00092                 input = new CharBuffer(in);
00093                 inputResponsible = true;
00094         }
00095 
00099         virtual void reset( void )
00100         {
00101                 column = 1;
00102                 line = 1;
00103                 tokenStartColumn = 1;
00104                 tokenStartLine = 1;
00105                 guessing = 0;
00106                 input->reset();
00107         }
00108 
00113         void setPosition( int line_, int column_ )
00114         {
00115                 line = line_;
00116                 column = column_;
00117         }
00118 
00119         virtual ~LexerInputState()
00120         {
00121                 if (inputResponsible)
00122                         delete input;
00123         }
00124 
00125         int column;
00126         int line;
00127         int tokenStartColumn;
00128         int tokenStartLine;
00129         int guessing;
00131         ANTLR_USE_NAMESPACE(std)string filename;
00132         InputBuffer& getInput();
00133 private:
00135         InputBuffer* input;
00137         bool inputResponsible;
00138 
00139         // we don't want these:
00140         LexerInputState(const LexerInputState&);
00141         LexerInputState& operator=(const LexerInputState&);
00142 };
00143 
00144 inline InputBuffer& LexerInputState::getInput()
00145 {
00146         return *input;
00147 }
00148 
00150 typedef RefCount<LexerInputState> LexerSharedInputState;
00151 
00152 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00153 }
00154 #endif
00155 
00156 #endif //INC_LexerSharedInputState_hpp__

Generated on Wed Nov 3 12:58:59 2004 for Lemur Toolkit by doxygen1.2.18