# HG changeset patch # User John W. Eaton # Date 1382485190 14400 # Node ID 8ad59bef27b57c894490b09957cd912c1c568720 # Parent dcc88366f94bae2297bbf2be947bb3747a877beb use more direct method for checking input source for lexer * input.h (octave_base_reader::input_from_terminal, octave_base_reader::input_from_file, octave_base_reader::input_from_eval_string): New virtual functions. (octave_terminal_reader::input_from_terminal): New function. (octave_file_reader::input_from_file): New function. (octave_eval_string_reader::input_from_eval_string): New function. (octave_input_reader::input_from_terminal, octave_input_reader::input_from_file,: New function. octave_input_string_reader::input_from_eval_string): New functions * lex.h (octave_base_lexer::input_from_terminal): Call input_reader.input_from_terminal instead of comparing input_source to "terminal". (octave_base_lexer::input_from_file): Call input_reader.input_from_file instead of comparing input_source to "file". (octave_base_lexer::input_from_eval_string): Call input_reader.input_from_eval_string instead of comparing input_source to "eval_string". diff -r dcc88366f94b -r 8ad59bef27b5 libinterp/corefcn/input.h --- a/libinterp/corefcn/input.h Tue Oct 22 16:20:33 2013 -0700 +++ b/libinterp/corefcn/input.h Tue Oct 22 19:39:50 2013 -0400 @@ -124,6 +124,12 @@ virtual bool reading_script_file (void) const; + virtual bool input_from_terminal (void) const { return false; } + + virtual bool input_from_file (void) const { return false; } + + virtual bool input_from_eval_string (void) const { return false; } + private: int count; @@ -150,6 +156,8 @@ std::string input_source (void) const { return in_src; } + bool input_from_terminal (void) const { return true; } + private: static const std::string in_src; @@ -167,6 +175,8 @@ std::string input_source (void) const { return in_src; } + bool input_from_file (void) const { return true; } + private: FILE *file; @@ -188,6 +198,8 @@ std::string input_source (void) const { return in_src; } + bool input_from_eval_string (void) const { return true; } + private: std::string eval_string; @@ -254,6 +266,21 @@ return rep->input_source (); } + bool input_from_terminal (void) const + { + return rep->input_from_terminal (); + } + + bool input_from_file (void) const + { + return rep->input_from_file (); + } + + bool input_from_eval_string (void) const + { + return rep->input_from_eval_string (); + } + private: octave_base_reader *rep; diff -r dcc88366f94b -r 8ad59bef27b5 libinterp/parse-tree/lex.h --- a/libinterp/parse-tree/lex.h Tue Oct 22 16:20:33 2013 -0700 +++ b/libinterp/parse-tree/lex.h Tue Oct 22 19:39:50 2013 -0400 @@ -732,17 +732,17 @@ bool input_from_terminal (void) const { - return input_source () == "terminal"; + return input_reader.input_from_terminal (); } bool input_from_file (void) const { - return input_source () == "file"; + return input_reader.input_from_file (); } bool input_from_eval_string (void) const { - return input_source () == "eval_string"; + return input_reader.input_from_eval_string (); } int fill_flex_buffer (char *buf, unsigned int max_size);