Mercurial > hg > octave-nkf
changeset 17733:8ad59bef27b5
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".
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 22 Oct 2013 19:39:50 -0400 |
parents | dcc88366f94b |
children | 64ad713b3a64 |
files | libinterp/corefcn/input.h libinterp/parse-tree/lex.h |
diffstat | 2 files changed, 30 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/input.h +++ b/libinterp/corefcn/input.h @@ -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;
--- a/libinterp/parse-tree/lex.h +++ b/libinterp/parse-tree/lex.h @@ -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);