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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
f4bf4833e6c7 [project @ 2002-10-17 19:58:42 by jwe]
jwe
parents:
diff changeset
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
f4bf4833e6c7 [project @ 2002-10-17 19:58:42 by jwe]
jwe
parents:
diff changeset
27 #define octave_octave_h 1
f4bf4833e6c7 [project @ 2002-10-17 19:58:42 by jwe]
jwe
parents:
diff changeset
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