Mercurial > octave
annotate libinterp/corefcn/input.h @ 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 | f79bf671a493 |
children | d63878346099 |
rev | line source |
---|---|
1 | 1 /* |
2 | |
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
3 Copyright (C) 1993-2012 John W. Eaton |
1 | 4 |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
7016 | 9 Free Software Foundation; either version 3 of the License, or (at your |
10 option) any later version. | |
1 | 11 |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
1 | 20 |
21 */ | |
22 | |
23 // Use the GNU readline library for command line editing and hisory. | |
24 | |
383 | 25 #if !defined (octave_input_h) |
26 #define octave_input_h 1 | |
1 | 27 |
1342 | 28 #include <cstdio> |
1 | 29 |
1750 | 30 #include <string> |
31 | |
3255 | 32 #include "oct-time.h" |
6208 | 33 #include "oct-obj.h" |
3770 | 34 #include "pager.h" |
3255 | 35 |
3707 | 36 class octave_value; |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
37 class octave_base_lexer; |
3707 | 38 |
9247
b2790fd23800
More export symbols to allow usage from an IDE.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
9237
diff
changeset
|
39 extern OCTINTERP_API FILE *get_input_from_stdin (void); |
1 | 40 |
3019 | 41 // TRUE means this is an interactive shell. |
42 extern bool interactive; | |
1 | 43 |
3019 | 44 // TRUE means the user forced this shell to be interactive (-i). |
45 extern bool forced_interactive; | |
1 | 46 |
3804 | 47 // TRUE after a call to completion_matches. |
2299 | 48 extern bool octave_completion_matches_called; |
49 | |
7409 | 50 // TRUE if the plotting system has requested a call to drawnow at |
51 // the next user prompt. | |
7414 | 52 extern OCTINTERP_API bool Vdrawnow_requested; |
7409 | 53 |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7414
diff
changeset
|
54 // TRUE if we are in debugging mode. |
9237
3c1762c7e787
Add missing xxx_API decoration and remove misplaced ones
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
55 extern OCTINTERP_API bool Vdebugging; |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7414
diff
changeset
|
56 |
2927 | 57 extern void initialize_command_input (void); |
1 | 58 |
5640 | 59 extern bool octave_yes_or_no (const std::string& prompt); |
60 | |
3770 | 61 extern octave_value do_keyboard (const octave_value_list& args = octave_value_list ()); |
3707 | 62 |
16347
bf8397caeff1
allow add_input_event_hook to accept function handles
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
63 extern void remove_input_event_hook_functions (void); |
bf8397caeff1
allow add_input_event_hook to accept function handles
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
64 |
16528
9bc1f8278966
allow GUI to customize prompts at startup
John W. Eaton <jwe@octave.org>
parents:
16347
diff
changeset
|
65 extern void set_default_prompts (void); |
9bc1f8278966
allow GUI to customize prompts at startup
John W. Eaton <jwe@octave.org>
parents:
16347
diff
changeset
|
66 |
5794 | 67 extern std::string VPS4; |
2181 | 68 |
7818
5640a70cbab1
Add Ffilemarker and fix for 'dbstep in'
David Bateman <dbateman@free.fr>
parents:
7787
diff
changeset
|
69 extern char Vfilemarker; |
5640a70cbab1
Add Ffilemarker and fix for 'dbstep in'
David Bateman <dbateman@free.fr>
parents:
7787
diff
changeset
|
70 |
3019 | 71 enum echo_state |
72 { | |
73 ECHO_OFF = 0, | |
74 ECHO_SCRIPTS = 1, | |
75 ECHO_FUNCTIONS = 2, | |
76 ECHO_CMD_LINE = 4 | |
77 }; | |
78 | |
79 extern int Vecho_executing_commands; | |
80 | |
3255 | 81 extern octave_time Vlast_prompt_time; |
3165 | 82 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
83 class |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
84 octave_base_reader |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
85 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
86 public: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
87 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
88 friend class octave_input_reader; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
89 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
90 octave_base_reader (octave_base_lexer *lxr) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
91 : count (1), pflag (0), lexer (lxr) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
92 { } |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
93 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
94 octave_base_reader (const octave_base_reader& x) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
95 : count (1), pflag (x.pflag), lexer (x.lexer) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
96 { } |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
97 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
98 virtual ~octave_base_reader (void) { } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
99 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
100 virtual std::string get_input (bool& eof) = 0; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
101 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
102 virtual std::string input_source (void) const { return in_src; } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
103 |
16209
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
104 void reset (void) { promptflag (1); } |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
105 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
106 void increment_promptflag (void) { pflag++; } |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
107 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
108 void decrement_promptflag (void) { pflag--; } |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
109 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
110 int promptflag (void) const { return pflag; } |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
111 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
112 int promptflag (int n) |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
113 { |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
114 int retval = pflag; |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
115 pflag = n; |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
116 return retval; |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
117 } |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
118 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
119 std::string octave_gets (bool& eof); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
120 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
121 virtual bool reading_fcn_file (void) const; |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
122 |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
123 virtual bool reading_classdef_file (void) const; |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
124 |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
125 virtual bool reading_script_file (void) const; |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
126 |
17733
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
127 virtual bool input_from_terminal (void) const { return false; } |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
128 |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
129 virtual bool input_from_file (void) const { return false; } |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
130 |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
131 virtual bool input_from_eval_string (void) const { return false; } |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
132 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
133 private: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
134 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
135 int count; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
136 |
16209
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
137 int pflag; |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
138 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
139 octave_base_lexer *lexer; |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
140 |
16209
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
141 void do_input_echo (const std::string&) const; |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
142 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
143 static const std::string in_src; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
144 }; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
145 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
146 class |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
147 octave_terminal_reader : public octave_base_reader |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
148 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
149 public: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
150 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
151 octave_terminal_reader (octave_base_lexer *lxr = 0) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
152 : octave_base_reader (lxr) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
153 { } |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
154 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
155 std::string get_input (bool& eof); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
156 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
157 std::string input_source (void) const { return in_src; } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
158 |
17733
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
159 bool input_from_terminal (void) const { return true; } |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
160 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
161 private: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
162 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
163 static const std::string in_src; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
164 }; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
165 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
166 class |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
167 octave_file_reader : public octave_base_reader |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
168 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
169 public: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
170 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
171 octave_file_reader (FILE *f_arg, octave_base_lexer *lxr = 0) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
172 : octave_base_reader (lxr), file (f_arg) { } |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
173 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
174 std::string get_input (bool& eof); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
175 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
176 std::string input_source (void) const { return in_src; } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
177 |
17733
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
178 bool input_from_file (void) const { return true; } |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
179 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
180 private: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
181 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
182 FILE *file; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
183 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
184 static const std::string in_src; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
185 }; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
186 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
187 class |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
188 octave_eval_string_reader : public octave_base_reader |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
189 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
190 public: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
191 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
192 octave_eval_string_reader (const std::string& str, |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
193 octave_base_lexer *lxr = 0) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
194 : octave_base_reader (lxr), eval_string (str) |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
195 { } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
196 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
197 std::string get_input (bool& eof); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
198 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
199 std::string input_source (void) const { return in_src; } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
200 |
17733
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
201 bool input_from_eval_string (void) const { return true; } |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
202 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
203 private: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
204 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
205 std::string eval_string; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
206 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
207 static const std::string in_src; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
208 }; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
209 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
210 class |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
211 octave_input_reader |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
212 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
213 public: |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
214 octave_input_reader (octave_base_lexer *lxr = 0) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
215 : rep (new octave_terminal_reader (lxr)) |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
216 { } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
217 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
218 octave_input_reader (FILE *file, octave_base_lexer *lxr = 0) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
219 : rep (new octave_file_reader (file, lxr)) |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
220 { } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
221 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
222 octave_input_reader (const std::string& str, octave_base_lexer *lxr = 0) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
223 : rep (new octave_eval_string_reader (str, lxr)) |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
224 { } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
225 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
226 octave_input_reader (const octave_input_reader& ir) |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
227 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
228 rep = ir.rep; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
229 rep->count++; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
230 } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
231 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
232 octave_input_reader& operator = (const octave_input_reader& ir) |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
233 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
234 if (&ir != this) |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
235 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
236 rep = ir.rep; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
237 rep->count++; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
238 } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
239 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
240 return *this; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
241 } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
242 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
243 ~octave_input_reader (void) |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
244 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
245 if (--rep->count == 0) |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
246 delete rep; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
247 } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
248 |
16209
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
249 void reset (void) { return rep->reset (); } |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
250 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
251 void increment_promptflag (void) { rep->increment_promptflag (); } |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
252 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
253 void decrement_promptflag (void) { rep->decrement_promptflag (); } |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
254 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
255 int promptflag (void) const { return rep->promptflag (); } |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
256 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
257 int promptflag (int n) { return rep->promptflag (n); } |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
258 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
259 std::string get_input (bool& eof) |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
260 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
261 return rep->get_input (eof); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
262 } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
263 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
264 std::string input_source (void) const |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
265 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
266 return rep->input_source (); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
267 } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
268 |
17733
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
269 bool input_from_terminal (void) const |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
270 { |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
271 return rep->input_from_terminal (); |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
272 } |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
273 |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
274 bool input_from_file (void) const |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
275 { |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
276 return rep->input_from_file (); |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
277 } |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
278 |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
279 bool input_from_eval_string (void) const |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
280 { |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
281 return rep->input_from_eval_string (); |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
282 } |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
283 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
284 private: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
285 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
286 octave_base_reader *rep; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
287 }; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
288 |
1 | 289 #endif |