diff options
Diffstat (limited to 'src/FlexLexer.h')
-rw-r--r-- | src/FlexLexer.h | 41 |
1 files changed, 30 insertions, 11 deletions
diff --git a/src/FlexLexer.h b/src/FlexLexer.h index bad4ce0..b725b1f 100644 --- a/src/FlexLexer.h +++ b/src/FlexLexer.h @@ -69,22 +69,33 @@ public: yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0; virtual struct yy_buffer_state* yy_create_buffer( FLEX_STD istream* s, int size ) = 0; + virtual struct yy_buffer_state* + yy_create_buffer( FLEX_STD istream& s, int size ) = 0; virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0; - virtual void yyrestart( FLEX_STD istream* s ) = 0; + virtual void yyrestart( FLEX_STD istream* s ) = 0; + virtual void yyrestart( FLEX_STD istream& s ) = 0; virtual int yylex() = 0; // Call yylex with new input/output sources. - int yylex( FLEX_STD istream* new_in, FLEX_STD ostream* new_out = 0 ) - { + int yylex( FLEX_STD istream& new_in, FLEX_STD ostream& new_out ) + { + switch_streams( new_in, new_out ); + return yylex(); + } + + int yylex( FLEX_STD istream* new_in, FLEX_STD ostream* new_out = 0) + { switch_streams( new_in, new_out ); return yylex(); - } + } // Switch to new input/output streams. A nil stream pointer // indicates "keep the current one". - virtual void switch_streams( FLEX_STD istream* new_in = 0, - FLEX_STD ostream* new_out = 0 ) = 0; + virtual void switch_streams( FLEX_STD istream* new_in, + FLEX_STD ostream* new_out ) = 0; + virtual void switch_streams( FLEX_STD istream& new_in, + FLEX_STD ostream& new_out ) = 0; int lineno() const { return yylineno; } @@ -113,20 +124,28 @@ class yyFlexLexer : public FlexLexer { public: // arg_yyin and arg_yyout default to the cin and cout, but we // only make that assignment when initializing in yylex(). + yyFlexLexer( FLEX_STD istream& arg_yyin, FLEX_STD ostream& arg_yyout ); yyFlexLexer( FLEX_STD istream* arg_yyin = 0, FLEX_STD ostream* arg_yyout = 0 ); +private: + void ctor_common(); + +public: virtual ~yyFlexLexer(); void yy_switch_to_buffer( struct yy_buffer_state* new_buffer ); - struct yy_buffer_state* yy_create_buffer( FLEX_STD istream* s, int size ); + struct yy_buffer_state* yy_create_buffer( FLEX_STD istream* s, int size ); + struct yy_buffer_state* yy_create_buffer( FLEX_STD istream& s, int size ); void yy_delete_buffer( struct yy_buffer_state* b ); void yyrestart( FLEX_STD istream* s ); + void yyrestart( FLEX_STD istream& s ); void yypush_buffer_state( struct yy_buffer_state* new_buffer ); void yypop_buffer_state(); virtual int yylex(); - virtual void switch_streams( FLEX_STD istream* new_in, FLEX_STD ostream* new_out = 0 ); + virtual void switch_streams( FLEX_STD istream& new_in, FLEX_STD ostream& new_out ); + virtual void switch_streams( FLEX_STD istream* new_in = 0, FLEX_STD ostream* new_out = 0 ); virtual int yywrap(); protected: @@ -138,7 +157,7 @@ protected: int yyinput(); void yy_load_buffer_state(); - void yy_init_buffer( struct yy_buffer_state* b, FLEX_STD istream* s ); + void yy_init_buffer( struct yy_buffer_state* b, FLEX_STD istream& s ); void yy_flush_buffer( struct yy_buffer_state* b ); int yy_start_stack_ptr; @@ -153,8 +172,8 @@ protected: yy_state_type yy_try_NUL_trans( yy_state_type current_state ); int yy_get_next_buffer(); - FLEX_STD istream* yyin; // input source for default LexerInput - FLEX_STD ostream* yyout; // output sink for default LexerOutput + FLEX_STD istream yyin; // input source for default LexerInput + FLEX_STD ostream yyout; // output sink for default LexerOutput // yy_hold_char holds the character lost when yytext is formed. char yy_hold_char; |