annotate libinterp/interpfcn/input.h @ 16208:ed91ab4d4515

eliminate stdin_is_tty global variable * input.h, input.cc (stdin_is_tty): Delete. * octave.cc (octave_initialize_interpreter): Declare stdin_is_tty as a local variable.
author John W. Eaton <jwe@octave.org>
date Wed, 06 Mar 2013 19:45:53 -0500
parents 0467d68ca891
children e7ff32e7cf82
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
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
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
4
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
6
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6208
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6208
diff changeset
10 option) any later version.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
11
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
15 for more details.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
16
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6208
diff changeset
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6208
diff changeset
19 <http://www.gnu.org/licenses/>.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
20
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
21 */
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
22
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
23 // Use the GNU readline library for command line editing and hisory.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
24
383
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 339
diff changeset
25 #if !defined (octave_input_h)
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 339
diff changeset
26 #define octave_input_h 1
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
27
1342
61bb2bdee11e [project @ 1995-09-04 00:19:22 by jwe]
jwe
parents: 1315
diff changeset
28 #include <cstdio>
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
29
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1606
diff changeset
30 #include <string>
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1606
diff changeset
31
3255
4d33b1e56bff [project @ 1999-07-15 20:54:14 by jwe]
jwe
parents: 3165
diff changeset
32 #include "oct-time.h"
6208
323be5eeed1f [project @ 2006-12-06 20:23:18 by jwe]
jwe
parents: 6206
diff changeset
33 #include "oct-obj.h"
3770
bf6116ca10eb [project @ 2001-02-02 02:21:40 by jwe]
jwe
parents: 3707
diff changeset
34 #include "pager.h"
3255
4d33b1e56bff [project @ 1999-07-15 20:54:14 by jwe]
jwe
parents: 3165
diff changeset
35
3707
58140935c812 [project @ 2000-07-28 09:40:52 by jwe]
jwe
parents: 3523
diff changeset
36 class octave_value;
58140935c812 [project @ 2000-07-28 09:40:52 by jwe]
jwe
parents: 3523
diff changeset
37
9247
b2790fd23800 More export symbols to allow usage from an IDE.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9237
diff changeset
38 extern OCTINTERP_API FILE *get_input_from_stdin (void);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
39
3019
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
40 // TRUE means this is an interactive shell.
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
41 extern bool interactive;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
42
3019
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
43 // TRUE means the user forced this shell to be interactive (-i).
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
44 extern bool forced_interactive;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
45
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
46 // Should we issue a prompt?
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
47 extern int promptflag;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
48
3804
4073be5aefa1 [project @ 2001-02-28 08:36:04 by jwe]
jwe
parents: 3770
diff changeset
49 // TRUE after a call to completion_matches.
2299
f296bbc757a1 [project @ 1996-06-23 03:45:44 by jwe]
jwe
parents: 2275
diff changeset
50 extern bool octave_completion_matches_called;
f296bbc757a1 [project @ 1996-06-23 03:45:44 by jwe]
jwe
parents: 2275
diff changeset
51
7409
73036cdd855d [project @ 2008-01-22 20:31:59 by jwe]
jwe
parents: 7017
diff changeset
52 // TRUE if the plotting system has requested a call to drawnow at
73036cdd855d [project @ 2008-01-22 20:31:59 by jwe]
jwe
parents: 7017
diff changeset
53 // the next user prompt.
7414
905bceea061b [project @ 2008-01-23 08:14:38 by jwe]
jwe
parents: 7409
diff changeset
54 extern OCTINTERP_API bool Vdrawnow_requested;
7409
73036cdd855d [project @ 2008-01-22 20:31:59 by jwe]
jwe
parents: 7017
diff changeset
55
7752
40c428ea3408 initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents: 7414
diff changeset
56 // 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
57 extern OCTINTERP_API bool Vdebugging;
7752
40c428ea3408 initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents: 7414
diff changeset
58
2927
8722c6284b72 [project @ 1997-05-05 03:44:04 by jwe]
jwe
parents: 2907
diff changeset
59 extern void initialize_command_input (void);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
60
5640
426719471ac6 [project @ 2006-03-04 06:02:14 by jwe]
jwe
parents: 5307
diff changeset
61 extern bool octave_yes_or_no (const std::string& prompt);
426719471ac6 [project @ 2006-03-04 06:02:14 by jwe]
jwe
parents: 5307
diff changeset
62
3770
bf6116ca10eb [project @ 2001-02-02 02:21:40 by jwe]
jwe
parents: 3707
diff changeset
63 extern octave_value do_keyboard (const octave_value_list& args = octave_value_list ());
3707
58140935c812 [project @ 2000-07-28 09:40:52 by jwe]
jwe
parents: 3523
diff changeset
64
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5640
diff changeset
65 extern std::string VPS4;
2181
138b3c98dc85 [project @ 1996-05-13 18:02:31 by jwe]
jwe
parents: 1996
diff changeset
66
7818
5640a70cbab1 Add Ffilemarker and fix for 'dbstep in'
David Bateman <dbateman@free.fr>
parents: 7787
diff changeset
67 extern char Vfilemarker;
5640a70cbab1 Add Ffilemarker and fix for 'dbstep in'
David Bateman <dbateman@free.fr>
parents: 7787
diff changeset
68
3019
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
69 enum echo_state
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
70 {
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
71 ECHO_OFF = 0,
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
72 ECHO_SCRIPTS = 1,
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
73 ECHO_FUNCTIONS = 2,
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
74 ECHO_CMD_LINE = 4
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
75 };
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
76
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
77 extern int Vecho_executing_commands;
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 2927
diff changeset
78
3255
4d33b1e56bff [project @ 1999-07-15 20:54:14 by jwe]
jwe
parents: 3165
diff changeset
79 extern octave_time Vlast_prompt_time;
3165
e4bbfc196e53 [project @ 1998-04-16 03:01:47 by jwe]
jwe
parents: 3019
diff changeset
80
16195
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
81 class
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
82 octave_base_reader
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
83 {
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
84 public:
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 friend class octave_input_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 octave_base_reader (void) : count (1) { }
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 octave_base_reader (const octave_base_reader&) : count (1) { }
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
91
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
92 virtual ~octave_base_reader (void) { }
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
93
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
94 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
95
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
96 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
97
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
98 std::string octave_gets (bool& eof);
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 private:
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 int count;
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 static const std::string in_src;
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
105 };
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
106
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
107 class
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
108 octave_terminal_reader : public octave_base_reader
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
109 {
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
110 public:
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
111
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
112 octave_terminal_reader (void) : octave_base_reader () { }
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
113
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
114 std::string get_input (bool& eof);
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
115
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
116 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
117
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
118 private:
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
119
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
120 static const std::string in_src;
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
121 };
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
122
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
123 class
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
124 octave_file_reader : public octave_base_reader
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
125 {
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
126 public:
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
127
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
128 octave_file_reader (FILE *f_arg)
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
129 : octave_base_reader (), file (f_arg) { }
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
130
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
131 std::string get_input (bool& eof);
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
132
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
133 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
134
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 FILE *file;
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
138
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
139 static const std::string in_src;
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
140 };
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
141
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
142 class
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
143 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
144 {
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
145 public:
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 octave_eval_string_reader (const std::string& str)
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
148 : octave_base_reader (), eval_string (str)
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
149 { }
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 std::string get_input (bool& eof);
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
152
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
153 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
154
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
155 private:
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 eval_string;
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 static const std::string in_src;
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
160 };
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
161
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
162 class
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
163 octave_input_reader
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 public:
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
166 octave_input_reader (void)
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
167 : rep (new octave_terminal_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
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
170 octave_input_reader (FILE *file)
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
171 : rep (new octave_file_reader (file))
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
172 { }
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 octave_input_reader (const std::string& str)
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
175 : rep (new octave_eval_string_reader (str))
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
176 { }
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 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
179 {
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
180 rep = ir.rep;
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
181 rep->count++;
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
182 }
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 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
185 {
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
186 if (&ir != this)
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 rep = ir.rep;
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
189 rep->count++;
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
190 }
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 return *this;
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
193 }
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
194
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
195 ~octave_input_reader (void)
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 if (--rep->count == 0)
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
198 delete rep;
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
199 }
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 get_input (bool& eof)
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
202 {
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
203 return rep->get_input (eof);
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
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
206 std::string input_source (void) const
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
207 {
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
208 return rep->input_source ();
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
b52d2f9294b6 use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents: 16098
diff changeset
211 private:
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 octave_base_reader *rep;
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
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
216 #endif