Mercurial > octave
annotate libinterp/corefcn/interpreter-private.cc @ 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 | 0a5b15007766 |
children | 670a0d878af1 |
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:
29358
diff
changeset
|
3 // Copyright (C) 2017-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 //////////////////////////////////////////////////////////////////////// |
23438 | 25 |
26 #if defined (HAVE_CONFIG_H) | |
27 # include "config.h" | |
28 #endif | |
29 | |
26863
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
30 #include <list> |
23438 | 31 #include <string> |
32 | |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24734
diff
changeset
|
33 #include "bp-table.h" |
26769
2f847e3e8d6b
split classdef into multiple smaller source files
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
34 #include "cdef-manager.h" |
24734
5d8c4cbc56d7
don't use singleton pattern for child_list
John W. Eaton <jwe@octave.org>
parents:
24540
diff
changeset
|
35 #include "child-list.h" |
27266
596312d4f25d
don't use singleton pattern for display_info class
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
36 #include "display.h" |
23438 | 37 #include "error.h" |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
38 #include "event-manager.h" |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
23721
diff
changeset
|
39 #include "gtk-manager.h" |
23721
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23651
diff
changeset
|
40 #include "help.h" |
25407
ab10403a0b50
new input_system class to manage user input for the interpreter
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
41 #include "input.h" |
23438 | 42 #include "interpreter-private.h" |
23511
232c8d69d934
manage interpreter instance in interpreter object
John W. Eaton <jwe@octave.org>
parents:
23438
diff
changeset
|
43 #include "interpreter.h" |
23651
5c6cceef132b
don't use singleton for cdef_manager object
John W. Eaton <jwe@octave.org>
parents:
23627
diff
changeset
|
44 #include "load-path.h" |
25993
f75bb9d659e0
eliminate global and file-scope static variables from load-save.cc (bug #54571)
John W. Eaton <jwe@octave.org>
parents:
25460
diff
changeset
|
45 #include "load-save.h" |
26863
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
46 #include "ov.h" |
28427
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
47 #include "ovl.h" |
25435
a52e6fb674b1
eliminate some singletons and static & global variables
John W. Eaton <jwe@octave.org>
parents:
25407
diff
changeset
|
48 #include "pager.h" |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
49 #include "symtab.h" |
23438 | 50 |
51 namespace octave | |
52 { | |
23517
1bc8f1f50b54
new function for accessing interpreter
John W. Eaton <jwe@octave.org>
parents:
23511
diff
changeset
|
53 interpreter& __get_interpreter__ (const std::string& who) |
23438 | 54 { |
23511
232c8d69d934
manage interpreter instance in interpreter object
John W. Eaton <jwe@octave.org>
parents:
23438
diff
changeset
|
55 interpreter *interp = interpreter::the_interpreter (); |
23438 | 56 |
57 if (! interp) | |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
58 { |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
59 abort (); |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
60 error ("%s: interpreter context missing", who.c_str ()); |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
61 } |
23438 | 62 |
23517
1bc8f1f50b54
new function for accessing interpreter
John W. Eaton <jwe@octave.org>
parents:
23511
diff
changeset
|
63 return *interp; |
1bc8f1f50b54
new function for accessing interpreter
John W. Eaton <jwe@octave.org>
parents:
23511
diff
changeset
|
64 } |
1bc8f1f50b54
new function for accessing interpreter
John W. Eaton <jwe@octave.org>
parents:
23511
diff
changeset
|
65 |
23627
0a6e87804cab
don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents:
23609
diff
changeset
|
66 dynamic_loader& __get_dynamic_loader__ (const std::string& who) |
0a6e87804cab
don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents:
23609
diff
changeset
|
67 { |
0a6e87804cab
don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents:
23609
diff
changeset
|
68 interpreter& interp = __get_interpreter__ (who); |
0a6e87804cab
don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents:
23609
diff
changeset
|
69 |
0a6e87804cab
don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents:
23609
diff
changeset
|
70 return interp.get_dynamic_loader (); |
0a6e87804cab
don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents:
23609
diff
changeset
|
71 } |
0a6e87804cab
don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents:
23609
diff
changeset
|
72 |
27160
6b0c61a5a0f0
move global error configuration and status variables inside a class
John W. Eaton <jwe@octave.org>
parents:
27102
diff
changeset
|
73 error_system& __get_error_system__ (const std::string& who) |
6b0c61a5a0f0
move global error configuration and status variables inside a class
John W. Eaton <jwe@octave.org>
parents:
27102
diff
changeset
|
74 { |
6b0c61a5a0f0
move global error configuration and status variables inside a class
John W. Eaton <jwe@octave.org>
parents:
27102
diff
changeset
|
75 interpreter& interp = __get_interpreter__ (who); |
6b0c61a5a0f0
move global error configuration and status variables inside a class
John W. Eaton <jwe@octave.org>
parents:
27102
diff
changeset
|
76 |
6b0c61a5a0f0
move global error configuration and status variables inside a class
John W. Eaton <jwe@octave.org>
parents:
27102
diff
changeset
|
77 return interp.get_error_system (); |
6b0c61a5a0f0
move global error configuration and status variables inside a class
John W. Eaton <jwe@octave.org>
parents:
27102
diff
changeset
|
78 } |
6b0c61a5a0f0
move global error configuration and status variables inside a class
John W. Eaton <jwe@octave.org>
parents:
27102
diff
changeset
|
79 |
27321
eddce82a57cc
don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents:
27266
diff
changeset
|
80 gh_manager& __get_gh_manager__ (const std::string& who) |
eddce82a57cc
don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents:
27266
diff
changeset
|
81 { |
eddce82a57cc
don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents:
27266
diff
changeset
|
82 interpreter& interp = __get_interpreter__ (who); |
eddce82a57cc
don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents:
27266
diff
changeset
|
83 |
eddce82a57cc
don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents:
27266
diff
changeset
|
84 return interp.get_gh_manager (); |
eddce82a57cc
don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents:
27266
diff
changeset
|
85 } |
eddce82a57cc
don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents:
27266
diff
changeset
|
86 |
23721
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23651
diff
changeset
|
87 help_system& __get_help_system__ (const std::string& who) |
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23651
diff
changeset
|
88 { |
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23651
diff
changeset
|
89 interpreter& interp = __get_interpreter__ (who); |
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23651
diff
changeset
|
90 |
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23651
diff
changeset
|
91 return interp.get_help_system (); |
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23651
diff
changeset
|
92 } |
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23651
diff
changeset
|
93 |
25407
ab10403a0b50
new input_system class to manage user input for the interpreter
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
94 input_system& __get_input_system__ (const std::string& who) |
ab10403a0b50
new input_system class to manage user input for the interpreter
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
95 { |
ab10403a0b50
new input_system class to manage user input for the interpreter
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
96 interpreter& interp = __get_interpreter__ (who); |
ab10403a0b50
new input_system class to manage user input for the interpreter
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
97 |
ab10403a0b50
new input_system class to manage user input for the interpreter
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
98 return interp.get_input_system (); |
ab10403a0b50
new input_system class to manage user input for the interpreter
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
99 } |
ab10403a0b50
new input_system class to manage user input for the interpreter
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
100 |
25435
a52e6fb674b1
eliminate some singletons and static & global variables
John W. Eaton <jwe@octave.org>
parents:
25407
diff
changeset
|
101 output_system& __get_output_system__ (const std::string& who) |
a52e6fb674b1
eliminate some singletons and static & global variables
John W. Eaton <jwe@octave.org>
parents:
25407
diff
changeset
|
102 { |
a52e6fb674b1
eliminate some singletons and static & global variables
John W. Eaton <jwe@octave.org>
parents:
25407
diff
changeset
|
103 interpreter& interp = __get_interpreter__ (who); |
a52e6fb674b1
eliminate some singletons and static & global variables
John W. Eaton <jwe@octave.org>
parents:
25407
diff
changeset
|
104 |
a52e6fb674b1
eliminate some singletons and static & global variables
John W. Eaton <jwe@octave.org>
parents:
25407
diff
changeset
|
105 return interp.get_output_system (); |
a52e6fb674b1
eliminate some singletons and static & global variables
John W. Eaton <jwe@octave.org>
parents:
25407
diff
changeset
|
106 } |
a52e6fb674b1
eliminate some singletons and static & global variables
John W. Eaton <jwe@octave.org>
parents:
25407
diff
changeset
|
107 |
23517
1bc8f1f50b54
new function for accessing interpreter
John W. Eaton <jwe@octave.org>
parents:
23511
diff
changeset
|
108 load_path& __get_load_path__ (const std::string& who) |
1bc8f1f50b54
new function for accessing interpreter
John W. Eaton <jwe@octave.org>
parents:
23511
diff
changeset
|
109 { |
1bc8f1f50b54
new function for accessing interpreter
John W. Eaton <jwe@octave.org>
parents:
23511
diff
changeset
|
110 interpreter& interp = __get_interpreter__ (who); |
1bc8f1f50b54
new function for accessing interpreter
John W. Eaton <jwe@octave.org>
parents:
23511
diff
changeset
|
111 |
1bc8f1f50b54
new function for accessing interpreter
John W. Eaton <jwe@octave.org>
parents:
23511
diff
changeset
|
112 return interp.get_load_path (); |
23438 | 113 } |
23532
084245f9bd03
pass reference to evaluator to octave_function call methods
John W. Eaton <jwe@octave.org>
parents:
23517
diff
changeset
|
114 |
25993
f75bb9d659e0
eliminate global and file-scope static variables from load-save.cc (bug #54571)
John W. Eaton <jwe@octave.org>
parents:
25460
diff
changeset
|
115 load_save_system& __get_load_save_system__ (const std::string& who) |
f75bb9d659e0
eliminate global and file-scope static variables from load-save.cc (bug #54571)
John W. Eaton <jwe@octave.org>
parents:
25460
diff
changeset
|
116 { |
f75bb9d659e0
eliminate global and file-scope static variables from load-save.cc (bug #54571)
John W. Eaton <jwe@octave.org>
parents:
25460
diff
changeset
|
117 interpreter& interp = __get_interpreter__ (who); |
f75bb9d659e0
eliminate global and file-scope static variables from load-save.cc (bug #54571)
John W. Eaton <jwe@octave.org>
parents:
25460
diff
changeset
|
118 |
f75bb9d659e0
eliminate global and file-scope static variables from load-save.cc (bug #54571)
John W. Eaton <jwe@octave.org>
parents:
25460
diff
changeset
|
119 return interp.get_load_save_system (); |
f75bb9d659e0
eliminate global and file-scope static variables from load-save.cc (bug #54571)
John W. Eaton <jwe@octave.org>
parents:
25460
diff
changeset
|
120 } |
f75bb9d659e0
eliminate global and file-scope static variables from load-save.cc (bug #54571)
John W. Eaton <jwe@octave.org>
parents:
25460
diff
changeset
|
121 |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
122 event_manager& __get_event_manager__ (const std::string& who) |
27261
dccdc3b001a2
eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents:
27213
diff
changeset
|
123 { |
dccdc3b001a2
eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents:
27213
diff
changeset
|
124 interpreter& interp = __get_interpreter__ (who); |
dccdc3b001a2
eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents:
27213
diff
changeset
|
125 |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
126 return interp.get_event_manager (); |
27261
dccdc3b001a2
eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents:
27213
diff
changeset
|
127 } |
dccdc3b001a2
eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents:
27213
diff
changeset
|
128 |
24540
46440078d73b
don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
129 type_info& __get_type_info__ (const std::string& who) |
46440078d73b
don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
130 { |
46440078d73b
don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
131 interpreter& interp = __get_interpreter__ (who); |
46440078d73b
don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
132 |
46440078d73b
don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
133 return interp.get_type_info (); |
46440078d73b
don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
134 } |
46440078d73b
don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
135 |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
136 symbol_table& __get_symbol_table__ (const std::string& who) |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
137 { |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
138 interpreter& interp = __get_interpreter__ (who); |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
139 |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
140 return interp.get_symbol_table (); |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
141 } |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
142 |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24270
diff
changeset
|
143 symbol_scope __get_current_scope__ (const std::string& who) |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
144 { |
23609
99989ab8f142
new convenience functions for accessing current scope
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
145 interpreter& interp = __get_interpreter__ (who); |
99989ab8f142
new convenience functions for accessing current scope
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
146 |
99989ab8f142
new convenience functions for accessing current scope
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
147 return interp.get_current_scope (); |
99989ab8f142
new convenience functions for accessing current scope
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
148 } |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
149 |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24270
diff
changeset
|
150 symbol_scope __require_current_scope__ (const std::string& who) |
23609
99989ab8f142
new convenience functions for accessing current scope
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
151 { |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24270
diff
changeset
|
152 symbol_scope scope = __get_current_scope__ (who); |
23609
99989ab8f142
new convenience functions for accessing current scope
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
153 |
99989ab8f142
new convenience functions for accessing current scope
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
154 if (! scope) |
99989ab8f142
new convenience functions for accessing current scope
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
155 error ("%s: symbol table scope missing", who.c_str ()); |
99989ab8f142
new convenience functions for accessing current scope
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
156 |
99989ab8f142
new convenience functions for accessing current scope
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
157 return scope; |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
158 } |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23553
diff
changeset
|
159 |
23532
084245f9bd03
pass reference to evaluator to octave_function call methods
John W. Eaton <jwe@octave.org>
parents:
23517
diff
changeset
|
160 tree_evaluator& __get_evaluator__ (const std::string& who) |
084245f9bd03
pass reference to evaluator to octave_function call methods
John W. Eaton <jwe@octave.org>
parents:
23517
diff
changeset
|
161 { |
084245f9bd03
pass reference to evaluator to octave_function call methods
John W. Eaton <jwe@octave.org>
parents:
23517
diff
changeset
|
162 interpreter& interp = __get_interpreter__ (who); |
084245f9bd03
pass reference to evaluator to octave_function call methods
John W. Eaton <jwe@octave.org>
parents:
23517
diff
changeset
|
163 |
084245f9bd03
pass reference to evaluator to octave_function call methods
John W. Eaton <jwe@octave.org>
parents:
23517
diff
changeset
|
164 return interp.get_evaluator (); |
084245f9bd03
pass reference to evaluator to octave_function call methods
John W. Eaton <jwe@octave.org>
parents:
23517
diff
changeset
|
165 } |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23532
diff
changeset
|
166 |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24734
diff
changeset
|
167 bp_table& __get_bp_table__ (const std::string& who) |
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24734
diff
changeset
|
168 { |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
169 tree_evaluator& tw = __get_evaluator__ (who); |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24734
diff
changeset
|
170 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
171 return tw.get_bp_table (); |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24734
diff
changeset
|
172 } |
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24734
diff
changeset
|
173 |
24734
5d8c4cbc56d7
don't use singleton pattern for child_list
John W. Eaton <jwe@octave.org>
parents:
24540
diff
changeset
|
174 child_list& __get_child_list__ (const std::string& who) |
5d8c4cbc56d7
don't use singleton pattern for child_list
John W. Eaton <jwe@octave.org>
parents:
24540
diff
changeset
|
175 { |
5d8c4cbc56d7
don't use singleton pattern for child_list
John W. Eaton <jwe@octave.org>
parents:
24540
diff
changeset
|
176 interpreter& interp = __get_interpreter__ (who); |
5d8c4cbc56d7
don't use singleton pattern for child_list
John W. Eaton <jwe@octave.org>
parents:
24540
diff
changeset
|
177 |
5d8c4cbc56d7
don't use singleton pattern for child_list
John W. Eaton <jwe@octave.org>
parents:
24540
diff
changeset
|
178 return interp.get_child_list (); |
5d8c4cbc56d7
don't use singleton pattern for child_list
John W. Eaton <jwe@octave.org>
parents:
24540
diff
changeset
|
179 } |
5d8c4cbc56d7
don't use singleton pattern for child_list
John W. Eaton <jwe@octave.org>
parents:
24540
diff
changeset
|
180 |
23651
5c6cceef132b
don't use singleton for cdef_manager object
John W. Eaton <jwe@octave.org>
parents:
23627
diff
changeset
|
181 cdef_manager& __get_cdef_manager__ (const std::string& who) |
5c6cceef132b
don't use singleton for cdef_manager object
John W. Eaton <jwe@octave.org>
parents:
23627
diff
changeset
|
182 { |
5c6cceef132b
don't use singleton for cdef_manager object
John W. Eaton <jwe@octave.org>
parents:
23627
diff
changeset
|
183 interpreter& interp = __get_interpreter__ (who); |
5c6cceef132b
don't use singleton for cdef_manager object
John W. Eaton <jwe@octave.org>
parents:
23627
diff
changeset
|
184 |
5c6cceef132b
don't use singleton for cdef_manager object
John W. Eaton <jwe@octave.org>
parents:
23627
diff
changeset
|
185 return interp.get_cdef_manager (); |
5c6cceef132b
don't use singleton for cdef_manager object
John W. Eaton <jwe@octave.org>
parents:
23627
diff
changeset
|
186 } |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
23721
diff
changeset
|
187 |
27266
596312d4f25d
don't use singleton pattern for display_info class
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
188 display_info& __get_display_info__ (const std::string& who) |
596312d4f25d
don't use singleton pattern for display_info class
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
189 { |
596312d4f25d
don't use singleton pattern for display_info class
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
190 interpreter& interp = __get_interpreter__ (who); |
596312d4f25d
don't use singleton pattern for display_info class
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
191 |
596312d4f25d
don't use singleton pattern for display_info class
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
192 return interp.get_display_info (); |
596312d4f25d
don't use singleton pattern for display_info class
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
193 } |
596312d4f25d
don't use singleton pattern for display_info class
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
194 |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
23721
diff
changeset
|
195 gtk_manager& __get_gtk_manager__ (const std::string& who) |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
23721
diff
changeset
|
196 { |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
23721
diff
changeset
|
197 interpreter& interp = __get_interpreter__ (who); |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
23721
diff
changeset
|
198 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
23721
diff
changeset
|
199 return interp.get_gtk_manager (); |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
23721
diff
changeset
|
200 } |
26863
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
201 |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
202 octave_value |
27102
84ff9953faa1
where possible, eliminate octave:: namespace qualifier inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26864
diff
changeset
|
203 get_function_handle (interpreter& interp, const octave_value& arg, |
26863
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
204 const std::string& parameter_name) |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
205 { |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
206 std::list<std::string> parameter_names; |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
207 parameter_names.push_back (parameter_name); |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
208 return get_function_handle (interp, arg, parameter_names); |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
209 } |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
210 |
28427
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
211 // May return a function handle object, inline function object, or |
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
212 // function object. |
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
213 |
26863
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
214 octave_value |
27102
84ff9953faa1
where possible, eliminate octave:: namespace qualifier inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26864
diff
changeset
|
215 get_function_handle (interpreter& interp, const octave_value& arg, |
26863
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
216 const std::list<std::string>& parameter_names) |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
217 { |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
218 if (arg.is_function_handle () || arg.is_inline_function ()) |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
219 return arg; |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
220 else if (arg.is_string ()) |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
221 { |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
222 std::string fstr = arg.string_value (); |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
223 |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
224 if (fstr.empty ()) |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
225 return octave_value (); |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
226 |
27102
84ff9953faa1
where possible, eliminate octave:: namespace qualifier inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26864
diff
changeset
|
227 symbol_table& symtab = interp.get_symbol_table (); |
26863
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
228 |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
229 octave_value fcn = symtab.find_function (fstr); |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
230 |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
231 if (fcn.is_defined ()) |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
232 return fcn; |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
233 |
26864
041caa61ed34
use get_function_handle instead of extract_function
John W. Eaton <jwe@octave.org>
parents:
26863
diff
changeset
|
234 // Possibly warn here that passing the function body in a |
041caa61ed34
use get_function_handle instead of extract_function
John W. Eaton <jwe@octave.org>
parents:
26863
diff
changeset
|
235 // character string is discouraged. |
26863
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
236 |
28427
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
237 octave_value_list args (parameter_names.size () + 1); |
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
238 octave_idx_type i = 0; |
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
239 args(i++) = fstr; |
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
240 for (const auto& pname : parameter_names) |
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
241 args(i++) = pname; |
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
242 |
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
243 octave_value_list tmp = interp.feval ("inline", args, 1); |
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
244 |
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
245 if (tmp.length () > 0) |
7a8c69c4eb55
convert obsolete octave_fcn_inline object to @inline class
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
246 return tmp(0); |
26863
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
247 } |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
248 |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
249 return octave_value (); |
c589db954a4e
new functions for getting a functicon from an octave_value object
John W. Eaton <jwe@octave.org>
parents:
26769
diff
changeset
|
250 } |
23438 | 251 } |