Mercurial > hg > octave-nkf
annotate libinterp/corefcn/input.h @ 20830:b65888ec820e draft default tip gccjit
dmalcom gcc jit import
author | Stefan Mahr <dac922@gmx.de> |
---|---|
date | Fri, 27 Feb 2015 16:59:36 +0100 |
parents | 1c9ed5b4c73d |
children |
rev | line source |
---|---|
1 | 1 /* |
2 | |
19898
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
3 Copyright (C) 1993-2015 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 |
20054
1c9ed5b4c73d
input.h: change meaning of interactive and forced_interactive global variables.
Carnë Draug <carandraug@octave.org>
parents:
19898
diff
changeset
|
41 // TRUE means this is an interactive shell (forced or not) |
3019 | 42 extern bool interactive; |
1 | 43 |
3019 | 44 // TRUE means the user forced this shell to be interactive (-i). |
20054
1c9ed5b4c73d
input.h: change meaning of interactive and forced_interactive global variables.
Carnë Draug <carandraug@octave.org>
parents:
19898
diff
changeset
|
45 // FALSE means the shell would be interactive, independent of user settings. |
3019 | 46 extern bool forced_interactive; |
1 | 47 |
3804 | 48 // TRUE after a call to completion_matches. |
2299 | 49 extern bool octave_completion_matches_called; |
50 | |
7409 | 51 // TRUE if the plotting system has requested a call to drawnow at |
52 // the next user prompt. | |
7414 | 53 extern OCTINTERP_API bool Vdrawnow_requested; |
7409 | 54 |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7414
diff
changeset
|
55 // 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
|
56 extern OCTINTERP_API bool Vdebugging; |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7414
diff
changeset
|
57 |
2927 | 58 extern void initialize_command_input (void); |
1 | 59 |
5640 | 60 extern bool octave_yes_or_no (const std::string& prompt); |
61 | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
62 extern octave_value do_keyboard (const octave_value_list& args |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
63 = octave_value_list ()); |
3707 | 64 |
16347
bf8397caeff1
allow add_input_event_hook to accept function handles
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
65 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
|
66 |
16528
9bc1f8278966
allow GUI to customize prompts at startup
John W. Eaton <jwe@octave.org>
parents:
16347
diff
changeset
|
67 extern void set_default_prompts (void); |
9bc1f8278966
allow GUI to customize prompts at startup
John W. Eaton <jwe@octave.org>
parents:
16347
diff
changeset
|
68 |
5794 | 69 extern std::string VPS4; |
2181 | 70 |
7818
5640a70cbab1
Add Ffilemarker and fix for 'dbstep in'
David Bateman <dbateman@free.fr>
parents:
7787
diff
changeset
|
71 extern char Vfilemarker; |
5640a70cbab1
Add Ffilemarker and fix for 'dbstep in'
David Bateman <dbateman@free.fr>
parents:
7787
diff
changeset
|
72 |
3019 | 73 enum echo_state |
74 { | |
75 ECHO_OFF = 0, | |
76 ECHO_SCRIPTS = 1, | |
77 ECHO_FUNCTIONS = 2, | |
78 ECHO_CMD_LINE = 4 | |
79 }; | |
80 | |
81 extern int Vecho_executing_commands; | |
82 | |
3255 | 83 extern octave_time Vlast_prompt_time; |
3165 | 84 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
85 class |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
86 octave_base_reader |
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 public: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
89 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
90 friend class octave_input_reader; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
91 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
92 octave_base_reader (octave_base_lexer *lxr) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
93 : count (1), pflag (0), lexer (lxr) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
94 { } |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
95 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
96 octave_base_reader (const octave_base_reader& x) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
97 : count (1), pflag (x.pflag), lexer (x.lexer) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
98 { } |
16195
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 ~octave_base_reader (void) { } |
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 get_input (bool& eof) = 0; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
103 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
104 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
|
105 |
16209
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
106 void reset (void) { promptflag (1); } |
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 increment_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 void decrement_promptflag (void) { 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 (void) const { return pflag; } |
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 promptflag (int n) |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
115 { |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
116 int retval = pflag; |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
117 pflag = n; |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
118 return retval; |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
119 } |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
120 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
121 std::string octave_gets (bool& eof); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
122 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
123 virtual bool reading_fcn_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_classdef_file (void) const; |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
126 |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
127 virtual bool reading_script_file (void) const; |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
128 |
17733
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_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
|
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_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
|
132 |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
133 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
|
134 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
135 private: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
136 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
137 int count; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
138 |
16209
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
139 int pflag; |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
140 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
141 octave_base_lexer *lexer; |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
142 |
16209
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
143 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
|
144 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
145 static const std::string in_src; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
146 }; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
147 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
148 class |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
149 octave_terminal_reader : public octave_base_reader |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
150 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
151 public: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
152 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
153 octave_terminal_reader (octave_base_lexer *lxr = 0) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
154 : octave_base_reader (lxr) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
155 { } |
16195
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 get_input (bool& eof); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
158 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
159 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
|
160 |
17733
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
161 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
|
162 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
163 private: |
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 static const std::string in_src; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
166 }; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
167 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
168 class |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
169 octave_file_reader : public octave_base_reader |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
170 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
171 public: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
172 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
173 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
|
174 : 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
|
175 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
176 std::string get_input (bool& eof); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
177 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
178 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
|
179 |
17733
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
180 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
|
181 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
182 private: |
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 FILE *file; |
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 static const std::string in_src; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
187 }; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
188 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
189 class |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
190 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
|
191 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
192 public: |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
193 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
194 octave_eval_string_reader (const std::string& str, |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
195 octave_base_lexer *lxr = 0) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
196 : 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
|
197 { } |
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 get_input (bool& eof); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
200 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
201 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
|
202 |
17733
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
203 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
|
204 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
205 private: |
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 std::string eval_string; |
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 static const std::string in_src; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
210 }; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
211 |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
212 class |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
213 octave_input_reader |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
214 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
215 public: |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
216 octave_input_reader (octave_base_lexer *lxr = 0) |
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
217 : rep (new octave_terminal_reader (lxr)) |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
218 { } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
219 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
220 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
|
221 : 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
|
222 { } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
223 |
17731
f79bf671a493
eliminate global LEXER variable
John W. Eaton <jwe@octave.org>
parents:
16892
diff
changeset
|
224 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
|
225 : 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
|
226 { } |
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 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
|
229 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
230 rep = ir.rep; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
231 rep->count++; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
232 } |
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 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
|
235 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
236 if (&ir != this) |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
237 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
238 rep = ir.rep; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
239 rep->count++; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
240 } |
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 return *this; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
243 } |
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 ~octave_input_reader (void) |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
246 { |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
247 if (--rep->count == 0) |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
248 delete rep; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
249 } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
250 |
16209
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
251 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
|
252 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
253 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
|
254 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
255 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
|
256 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
257 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
|
258 |
e7ff32e7cf82
move global promptflag variable to octave_reader class
John W. Eaton <jwe@octave.org>
parents:
16208
diff
changeset
|
259 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
|
260 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
261 std::string get_input (bool& 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 return rep->get_input (eof); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
264 } |
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 std::string input_source (void) const |
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 return rep->input_source (); |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
269 } |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
270 |
17733
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
271 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
|
272 { |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
273 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
|
274 } |
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 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
|
277 { |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
278 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
|
279 } |
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 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
|
282 { |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
283 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
|
284 } |
8ad59bef27b5
use more direct method for checking input source for lexer
John W. Eaton <jwe@octave.org>
parents:
17731
diff
changeset
|
285 |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
286 private: |
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 octave_base_reader *rep; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
289 }; |
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16098
diff
changeset
|
290 |
1 | 291 #endif |