Mercurial > octave
annotate libinterp/octave.h @ 30564:796f54d4ddbf stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
In all .txi and .texi files except gpl.txi and gpl.texi in the
doc/liboctave and doc/interpreter directories, change the copyright
to "Octave Project Developers", the same as used for other source
files. Update copyright notices for 2022 (not done since 2019). For
gpl.txi and gpl.texi, change the copyright notice to be "Free Software
Foundation, Inc." and leave the date at 2007 only because this file
only contains the text of the GPL, not anything created by the Octave
Project Developers.
Add Paul Thomas to contributors.in.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 28 Dec 2021 18:22:40 -0500 |
parents | 9c4e8c3bf41d |
children | 83f9f8bda883 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
30160
diff
changeset
|
3 // Copyright (C) 2002-2022 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
4113 | 25 |
20791
f7084eae3318
maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
26 #if ! defined (octave_octave_h) |
4113 | 27 #define octave_octave_h 1 |
28 | |
21244
1473547f50f5
include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents:
20791
diff
changeset
|
29 #include "octave-config.h" |
1473547f50f5
include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents:
20791
diff
changeset
|
30 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
31 #include <list> |
29547
60af3f38f4b1
use std::unique_ptr to manage interpreter object in application object
John W. Eaton <jwe@octave.org>
parents:
29503
diff
changeset
|
32 #include <memory> |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
33 #include <string> |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
34 |
23479
06bf3a0b08bf
maint: Use "" instead of <> for our own include files.
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
35 #include "str-vec.h" |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
36 |
29152
556f20454064
make all command line option info available in scripting language
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
37 class octave_value; |
556f20454064
make all command line option info available in scripting language
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
38 |
29960
939bef0b66e0
merge "namespace octave" and OCTAVE_NAMESPACE_BEGIN/END blocks
John W. Eaton <jwe@octave.org>
parents:
29949
diff
changeset
|
39 OCTAVE_NAMESPACE_BEGIN |
939bef0b66e0
merge "namespace octave" and OCTAVE_NAMESPACE_BEGIN/END blocks
John W. Eaton <jwe@octave.org>
parents:
29949
diff
changeset
|
40 |
29898
dffd1c943f1a
main.cc: Use getopt to parse command line arguments (bug #60886).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29358
diff
changeset
|
41 // Command line arguments. See also options.h. |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
42 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
43 class OCTINTERP_API cmdline_options |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
44 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
45 public: |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
46 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
47 cmdline_options (void); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
48 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
49 cmdline_options (int argc, char **argv); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
50 |
24991
831389905438
omit argument name from default copy ctors and assignment operators
John W. Eaton <jwe@octave.org>
parents:
24874
diff
changeset
|
51 cmdline_options (const cmdline_options&) = default; |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
52 |
24991
831389905438
omit argument name from default copy ctors and assignment operators
John W. Eaton <jwe@octave.org>
parents:
24874
diff
changeset
|
53 cmdline_options& operator = (const cmdline_options&) = default; |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
54 |
25941
6882ea1ce4ab
allow access to C-style argc and argv from application class
John W. Eaton <jwe@octave.org>
parents:
25246
diff
changeset
|
55 int sys_argc (void) const { return m_all_args.numel (); } |
6882ea1ce4ab
allow access to C-style argc and argv from application class
John W. Eaton <jwe@octave.org>
parents:
25246
diff
changeset
|
56 char **sys_argv (void) const { return m_all_args.c_str_vec (); } |
6882ea1ce4ab
allow access to C-style argc and argv from application class
John W. Eaton <jwe@octave.org>
parents:
25246
diff
changeset
|
57 |
23711
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
58 bool echo_commands (void) const { return m_echo_commands; } |
24874
a4dc2ef8741c
Don't start GUI by default, require new '--gui' option
Carnë Draug <carandraug@octave.org>
parents:
24534
diff
changeset
|
59 |
29503
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
60 bool experimental_terminal_widget (void) const { return m_experimental_terminal_widget; } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
61 bool forced_interactive (void) const { return m_forced_interactive; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
62 bool forced_line_editing (void) const { return m_forced_line_editing; } |
24874
a4dc2ef8741c
Don't start GUI by default, require new '--gui' option
Carnë Draug <carandraug@octave.org>
parents:
24534
diff
changeset
|
63 bool gui (void) const { return m_gui; } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
64 bool inhibit_startup_message (void) const { return m_inhibit_startup_message; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
65 bool line_editing (void) const { return m_line_editing; } |
24874
a4dc2ef8741c
Don't start GUI by default, require new '--gui' option
Carnë Draug <carandraug@octave.org>
parents:
24534
diff
changeset
|
66 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
67 bool no_window_system (void) const { return m_no_window_system; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
68 bool persist (void) const { return m_persist; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
69 bool read_history_file (void) const { return m_read_history_file; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
70 bool read_init_files (void) const { return m_read_init_files; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
71 bool read_site_files (void) const { return m_read_site_files; } |
29254
11343ca3c125
allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents:
29152
diff
changeset
|
72 bool server (void) const { return m_server; } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
73 bool set_initial_path (void) const { return m_set_initial_path; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
74 bool traditional (void) const { return m_traditional; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
75 bool verbose_flag (void) const { return m_verbose_flag; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
76 std::string code_to_eval (void) const { return m_code_to_eval; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
77 std::list<std::string> command_line_path (void) const { return m_command_line_path; } |
23711
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
78 std::string docstrings_file (void) const { return m_docstrings_file; } |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
79 std::string doc_cache_file (void) const { return m_doc_cache_file; } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
80 std::string exec_path (void) const { return m_exec_path; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
81 std::string image_path (void) const { return m_image_path; } |
23711
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
82 std::string info_file (void) const { return m_info_file; } |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
83 std::string info_program (void) const { return m_info_program; } |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
84 std::string texi_macros_file (void) const {return m_texi_macros_file; } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
85 string_vector all_args (void) const { return m_all_args; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
86 string_vector remaining_args (void) const { return m_remaining_args; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
87 |
23711
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
88 void echo_commands (bool arg) { m_echo_commands = arg; } |
24874
a4dc2ef8741c
Don't start GUI by default, require new '--gui' option
Carnë Draug <carandraug@octave.org>
parents:
24534
diff
changeset
|
89 |
29503
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
90 void experimental_terminal_widget (bool arg) { m_experimental_terminal_widget = arg; } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
91 void forced_line_editing (bool arg) { m_forced_line_editing = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
92 void forced_interactive (bool arg) { m_forced_interactive = arg; } |
24874
a4dc2ef8741c
Don't start GUI by default, require new '--gui' option
Carnë Draug <carandraug@octave.org>
parents:
24534
diff
changeset
|
93 void gui (bool arg) { m_gui = arg; } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
94 void inhibit_startup_message (bool arg) { m_inhibit_startup_message = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
95 void line_editing (bool arg) { m_line_editing = arg; } |
24874
a4dc2ef8741c
Don't start GUI by default, require new '--gui' option
Carnë Draug <carandraug@octave.org>
parents:
24534
diff
changeset
|
96 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
97 void no_window_system (bool arg) { m_no_window_system = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
98 void persist (bool arg) { m_persist = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
99 void read_history_file (bool arg) { m_read_history_file = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
100 void read_init_files (bool arg) { m_read_init_files = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
101 void read_site_files (bool arg) { m_read_site_files = arg; } |
29254
11343ca3c125
allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents:
29152
diff
changeset
|
102 void server (bool arg) { m_server = arg; } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
103 void set_initial_path (bool arg) { m_set_initial_path = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
104 void traditional (bool arg) { m_traditional = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
105 void verbose_flag (bool arg) { m_verbose_flag = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
106 void code_to_eval (const std::string& arg) { m_code_to_eval = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
107 void command_line_path (const std::list<std::string>& arg) { m_command_line_path = arg; } |
23711
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
108 void docstrings_file (const std::string& arg) { m_docstrings_file = arg; } |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
109 void doc_cache_file (const std::string& arg) { m_doc_cache_file = arg; } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
110 void exec_path (const std::string& arg) { m_exec_path = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
111 void image_path (const std::string& arg) { m_image_path = arg; } |
23711
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
112 void info_file (const std::string& arg) { m_info_file = arg; } |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
113 void info_program (const std::string& arg) { m_info_program = arg; } |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
114 void texi_macros_file (const std::string& arg) { m_texi_macros_file = arg; } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
115 void all_args (const string_vector& arg) { m_all_args = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
116 void remaining_args (const string_vector& arg) { m_remaining_args = arg; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
117 |
29152
556f20454064
make all command line option info available in scripting language
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
118 octave_value as_octave_value (void) const; |
556f20454064
make all command line option info available in scripting language
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
119 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
120 private: |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
121 |
23711
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
122 // If TRUE, echo commands as they are read and executed. |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
123 // (--echo-commands, -x) |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
124 bool m_echo_commands = false; |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
125 |
29503
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
126 // If TRUE, use new experimental terminal widget in the GUI. |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
127 // (--experimental-terminal-widget) |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
128 bool m_experimental_terminal_widget = false; |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
129 |
24874
a4dc2ef8741c
Don't start GUI by default, require new '--gui' option
Carnë Draug <carandraug@octave.org>
parents:
24534
diff
changeset
|
130 // If TRUE, start the GUI. |
a4dc2ef8741c
Don't start GUI by default, require new '--gui' option
Carnë Draug <carandraug@octave.org>
parents:
24534
diff
changeset
|
131 // (--gui) and (--force-gui) for backwards compatibility |
a4dc2ef8741c
Don't start GUI by default, require new '--gui' option
Carnë Draug <carandraug@octave.org>
parents:
24534
diff
changeset
|
132 bool m_gui = false; |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
133 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
134 // TRUE means the user forced this shell to be interactive. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
135 // (--interactive, -i) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
136 bool m_forced_interactive = false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
137 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
138 // If TRUE, force readline command line editing. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
139 // (--line-editing) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
140 bool m_forced_line_editing = false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
141 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
142 // TRUE means we don't print the usual startup message. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
143 // (--quiet; --silent; -q) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
144 bool m_inhibit_startup_message = false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
145 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
146 // TRUE means we are using readline. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
147 // (--no-line-editing) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
148 bool m_line_editing = true; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
149 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
150 // If TRUE, ignore the window system even if it is available. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
151 // (--no-window-system, -W) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
152 bool m_no_window_system = false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
153 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
154 // If TRUE, don't exit after evaluating code given by --eval option. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
155 // (--persist) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
156 bool m_persist = false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
157 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
158 // If TRUE, initialize history list from saved history file. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
159 // (--no-history; -H) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
160 bool m_read_history_file = true; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
161 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
162 // TRUE means we read ~/.octaverc and ./.octaverc. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
163 // (--norc; --no-init-file; -f) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
164 bool m_read_init_files = true; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
165 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
166 // TRUE means we read the site-wide octaverc files. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
167 // (--norc; --no-site-file; -f) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
168 bool m_read_site_files = true; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
169 |
29254
11343ca3c125
allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents:
29152
diff
changeset
|
170 // If TRUE, start the command server. |
11343ca3c125
allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents:
29152
diff
changeset
|
171 // (--server) |
11343ca3c125
allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents:
29152
diff
changeset
|
172 bool m_server = false; |
11343ca3c125
allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents:
29152
diff
changeset
|
173 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
174 // TRUE means we set the initial path to configured defaults. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
175 // (--no-init-path) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
176 bool m_set_initial_path = true; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
177 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
178 // If TRUE use traditional (maximally MATLAB compatible) settings |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
179 // (--traditional) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
180 bool m_traditional = false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
181 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
182 // If TRUE, print verbose info in some cases. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
183 // (--verbose; -V) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
184 bool m_verbose_flag = false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
185 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
186 // The code to evaluate at startup |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
187 // (--eval CODE) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
188 std::string m_code_to_eval; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
189 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
190 // The value of "path" specified on the command line. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
191 // (--path; -p) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
192 std::list<std::string> m_command_line_path; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
193 |
23711
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
194 // The value for "built_in_docstrings_file" specified on the |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
195 // command line. |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
196 // (--built-in-docstrings-file) |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
197 std::string m_docstrings_file; |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
198 |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
199 // The value for "doc_cache_file" specified on the command line. |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
200 // (--doc-cache-file) |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
201 std::string m_doc_cache_file; |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
202 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
203 // The value for "EXEC_PATH" specified on the command line. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
204 // (--exec-path) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
205 std::string m_exec_path; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
206 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
207 // The value for "IMAGE_PATH" specified on the command line. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
208 // (--image-path) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
209 std::string m_image_path; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
210 |
23711
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
211 // The value for "info_file" specified on the command line. |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
212 // (--info-file) |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
213 std::string m_info_file; |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
214 |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
215 // The value for "info_program" specified on the command line. |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
216 // (--info-program) |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
217 std::string m_info_program; |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
218 |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
219 // The value for "texi_macos_file" specified on the command line. |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
220 // (--texi-macros-file) |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
221 std::string m_texi_macros_file; |
5a97aafb12a9
don't call built-in interpreter functions from the application context
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
222 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
223 // All arguments passed to the argc, argv constructor. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
224 string_vector m_all_args; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
225 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
226 // Arguments remaining after parsing. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
227 string_vector m_remaining_args; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
228 }; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
229 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
230 // The application object contains a pointer to the current |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
231 // interpreter and the interpreter contains a pointer back to the |
22094
9203833cab7d
move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents:
22089
diff
changeset
|
232 // application context so we need a forward declaration for one (or |
9203833cab7d
move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents:
22089
diff
changeset
|
233 // both) of them... |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
234 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
235 class interpreter; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
236 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
237 // Base class for an Octave application. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
238 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
239 class OCTINTERP_API application |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
240 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
241 public: |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
242 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
243 application (const cmdline_options& opts = cmdline_options ()); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
244 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
245 application (int argc, char **argv); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
246 |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
247 // No copying, at least not yet... |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
248 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
249 application (const application&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
250 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
251 application& operator = (const application&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
252 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
253 virtual ~application (void); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
254 |
25941
6882ea1ce4ab
allow access to C-style argc and argv from application class
John W. Eaton <jwe@octave.org>
parents:
25246
diff
changeset
|
255 int sys_argc (void) const { return m_options.sys_argc (); } |
6882ea1ce4ab
allow access to C-style argc and argv from application class
John W. Eaton <jwe@octave.org>
parents:
25246
diff
changeset
|
256 char **sys_argv (void) const { return m_options.sys_argv (); } |
6882ea1ce4ab
allow access to C-style argc and argv from application class
John W. Eaton <jwe@octave.org>
parents:
25246
diff
changeset
|
257 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
258 void set_program_names (const std::string& pname); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
259 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
260 void intern_argv (const string_vector& args); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
261 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
262 cmdline_options options (void) const { return m_options; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
263 |
23102
373771419d51
refactor interpreter::execute
John W. Eaton <jwe@octave.org>
parents:
23087
diff
changeset
|
264 bool have_eval_option_code (void) const { return m_have_eval_option_code; } |
373771419d51
refactor interpreter::execute
John W. Eaton <jwe@octave.org>
parents:
23087
diff
changeset
|
265 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
266 bool have_script_file (void) const { return m_have_script_file; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
267 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
268 bool is_octave_program (void) const { return m_is_octave_program; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
269 |
23117
17a3567a7b01
separate final interpreter initialization from execution
John W. Eaton <jwe@octave.org>
parents:
23111
diff
changeset
|
270 bool interpreter_initialized (void); |
17a3567a7b01
separate final interpreter initialization from execution
John W. Eaton <jwe@octave.org>
parents:
23111
diff
changeset
|
271 |
23773
5ff24576b783
defer installing qt graphics toolkit until interpreter is ready
John W. Eaton <jwe@octave.org>
parents:
23711
diff
changeset
|
272 virtual interpreter& create_interpreter (void); |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
273 |
23819
5d8ef9b859f8
defer execution of user code to interpreter::execute (bug #51631)
John W. Eaton <jwe@octave.org>
parents:
23773
diff
changeset
|
274 virtual void initialize_interpreter (void); |
23117
17a3567a7b01
separate final interpreter initialization from execution
John W. Eaton <jwe@octave.org>
parents:
23111
diff
changeset
|
275 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
276 virtual int execute_interpreter (void); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
277 |
23117
17a3567a7b01
separate final interpreter initialization from execution
John W. Eaton <jwe@octave.org>
parents:
23111
diff
changeset
|
278 virtual void delete_interpreter (void); |
17a3567a7b01
separate final interpreter initialization from execution
John W. Eaton <jwe@octave.org>
parents:
23111
diff
changeset
|
279 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
280 virtual int execute (void) = 0; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
281 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
282 virtual bool gui_running (void) const { return false; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
283 virtual void gui_running (bool) { } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
284 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
285 void program_invocation_name (const std::string& nm) { m_program_invocation_name = nm; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
286 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
287 void program_name (const std::string& nm) { m_program_name = nm; } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
288 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
289 void forced_interactive (bool arg) { m_options.forced_interactive (arg); } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
290 |
29503
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
291 // Provided for convenience. Will be removed once we eliminate the |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
292 // old terminal widget. |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
293 bool experimental_terminal_widget (void) const; |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
294 |
30160
9c4e8c3bf41d
maint: use "s_" prefix for static member variables in class application.
Rik <rik@octave.org>
parents:
29960
diff
changeset
|
295 static application * app (void) { return s_instance; } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
296 |
23111
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
297 static std::string program_invocation_name (void) |
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
298 { |
30160
9c4e8c3bf41d
maint: use "s_" prefix for static member variables in class application.
Rik <rik@octave.org>
parents:
29960
diff
changeset
|
299 return s_instance ? s_instance->m_program_invocation_name : ""; |
23111
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
300 } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
301 |
23111
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
302 static std::string program_name (void) |
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
303 { |
30160
9c4e8c3bf41d
maint: use "s_" prefix for static member variables in class application.
Rik <rik@octave.org>
parents:
29960
diff
changeset
|
304 return s_instance ? s_instance->m_program_name : ""; |
23111
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
305 } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
306 |
23111
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
307 static string_vector argv (void) |
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
308 { |
30160
9c4e8c3bf41d
maint: use "s_" prefix for static member variables in class application.
Rik <rik@octave.org>
parents:
29960
diff
changeset
|
309 return s_instance ? s_instance->m_argv : string_vector (); |
23111
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
310 } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
311 |
23111
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
312 static bool is_gui_running (void) |
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
313 { |
30160
9c4e8c3bf41d
maint: use "s_" prefix for static member variables in class application.
Rik <rik@octave.org>
parents:
29960
diff
changeset
|
314 return s_instance ? s_instance->gui_running () : false; |
23111
252975fdc444
more refactoring of interpreter and application classes
John W. Eaton <jwe@octave.org>
parents:
23102
diff
changeset
|
315 } |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
316 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
317 // Convenience functions. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
318 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
319 static bool forced_interactive (void); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
320 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
321 private: |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
322 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
323 // The application instance; There should be only one. |
30160
9c4e8c3bf41d
maint: use "s_" prefix for static member variables in class application.
Rik <rik@octave.org>
parents:
29960
diff
changeset
|
324 static application *s_instance; |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
325 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
326 void init (void); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
327 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
328 protected: |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
329 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
330 // The name used to invoke Octave. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
331 std::string m_program_invocation_name; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
332 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
333 // The last component of octave_program_invocation_name. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
334 std::string m_program_name; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
335 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
336 // The current argument vector (may change if we are running a |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
337 // script with --persist because after the script is done, the |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
338 // arguments revert to the full list given to the octave |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
339 // interpreter at startup. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
340 string_vector m_argv; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
341 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
342 cmdline_options m_options; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
343 |
23102
373771419d51
refactor interpreter::execute
John W. Eaton <jwe@octave.org>
parents:
23087
diff
changeset
|
344 // TRUE means we have --eval CODE |
373771419d51
refactor interpreter::execute
John W. Eaton <jwe@octave.org>
parents:
23087
diff
changeset
|
345 bool m_have_eval_option_code = false; |
373771419d51
refactor interpreter::execute
John W. Eaton <jwe@octave.org>
parents:
23087
diff
changeset
|
346 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
347 // TRUE if there is a command line argument that looks like the |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
348 // name of a file to execute. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
349 bool m_have_script_file = false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
350 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
351 // TRUE if this is a program and no interpreter and interaction is |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
352 // needed. For example, an octave program with shebang line, or code |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
353 // from eval without persist. |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
354 bool m_is_octave_program = false; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
355 |
29547
60af3f38f4b1
use std::unique_ptr to manage interpreter object in application object
John W. Eaton <jwe@octave.org>
parents:
29503
diff
changeset
|
356 std::unique_ptr<interpreter> m_interpreter; |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
357 }; |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
358 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
359 class OCTINTERP_API cli_application : public application |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
360 { |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
361 public: |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
362 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
363 cli_application (const cmdline_options& opts = cmdline_options ()) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
364 : application (opts) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
365 { } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
366 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
367 cli_application (int argc, char **argv) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
368 : application (argc, argv) |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
369 { } |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
370 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
371 // No copying, at least not yet... |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
372 |
22865
89756f2f085b
use c++11 style for deleting default copy constructor and assignment operator
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
373 cli_application (const cli_application&) = delete; |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
374 |
22865
89756f2f085b
use c++11 style for deleting default copy constructor and assignment operator
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
375 cli_application& operator = (const cli_application&) = delete; |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
376 |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
377 ~cli_application (void) = default; |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
378 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
379 int execute (void); |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
380 }; |
29960
939bef0b66e0
merge "namespace octave" and OCTAVE_NAMESPACE_BEGIN/END blocks
John W. Eaton <jwe@octave.org>
parents:
29949
diff
changeset
|
381 |
939bef0b66e0
merge "namespace octave" and OCTAVE_NAMESPACE_BEGIN/END blocks
John W. Eaton <jwe@octave.org>
parents:
29949
diff
changeset
|
382 OCTAVE_NAMESPACE_END |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
383 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
384 #endif |