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	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;
--- 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);