annotate libinterp/octave-value/ov-fcn.h @ 19895:19755f4fc851

maint: Cleanup C++ code to follow Octave coding conventions. Try to wrap long lines to < 80 characters. Use GNU style and don't indent first brace of function definition. "case" statement is aligned flush left with brace of switch stmt. Remove trailing '\' line continuation from the end of #define macros. Use 2 spaces for indent. * files-dock-widget.cc, history-dock-widget.cc, main-window.cc, octave-cmd.cc, octave-dock-widget.cc, octave-gui.cc, resource-manager.cc, settings-dialog.cc, shortcut-manager.cc, welcome-wizard.cc, workspace-view.cc, cellfun.cc, data.cc, debug.cc, debug.h, dirfns.cc, error.h, file-io.cc, gl-render.cc, gl-render.h, gl2ps-renderer.h, graphics.cc, graphics.in.h, help.cc, input.cc, load-path.cc, load-path.h, lookup.cc, lu.cc, oct-stream.cc, octave-default-image.h, ordschur.cc, pr-output.cc, qz.cc, strfns.cc, symtab.cc, symtab.h, sysdep.cc, variables.cc, zfstream.h, __fltk_uigetfile__.cc, __init_fltk__.cc, __magick_read__.cc, __osmesa_print__.cc, audiodevinfo.cc, ov-classdef.cc, ov-classdef.h, ov-fcn.h, ov-float.cc, ov-flt-complex.cc, ov-java.cc, ov-range.cc, ov-re-mat.cc, ov-usr-fcn.h, ov.cc, op-int.h, options-usage.h, pt-eval.cc, Array-C.cc, Array-fC.cc, Array.cc, Array.h, PermMatrix.cc, Sparse.cc, chMatrix.h, dSparse.cc, dim-vector.h, bsxfun-decl.h, bsxfun-defs.cc, oct-norm.cc, Sparse-op-defs.h, oct-inttypes.cc, oct-inttypes.h, main.in.cc, mkoctfile.in.cc: Cleanup C++ code to follow Octave coding conventions.
author Rik <rik@octave.org>
date Wed, 25 Feb 2015 11:55:49 -0800
parents 4197fc428c7d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
1 /*
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
2
19731
4197fc428c7d maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents: 19632
diff changeset
3 Copyright (C) 1996-2015 John W. Eaton
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
4
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
6
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6705
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6705
diff changeset
10 option) any later version.
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
11
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
15 for more details.
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
16
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6705
diff changeset
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6705
diff changeset
19 <http://www.gnu.org/licenses/>.
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
20
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
21 */
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
22
17822
ebb3ef964372 maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents: 17787
diff changeset
23 #if !defined (octave_ov_fcn_h)
ebb3ef964372 maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents: 17787
diff changeset
24 #define octave_ov_fcn_h 1
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
25
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
26 #include <string>
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
27
3258
4964d5391acc [project @ 1999-07-21 21:51:33 by jwe]
jwe
parents: 3255
diff changeset
28 #include "oct-time.h"
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3258
diff changeset
29 #include "str-vec.h"
3258
4964d5391acc [project @ 1999-07-21 21:51:33 by jwe]
jwe
parents: 3255
diff changeset
30
4748
7b145222fea3 [project @ 2004-02-07 06:27:27 by jwe]
jwe
parents: 4645
diff changeset
31 #include "oct-obj.h"
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
32 #include "ov-base.h"
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
33 #include "ov-typeinfo.h"
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
34 #include "symtab.h"
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
35
2976
641689f67673 [project @ 1997-05-15 20:27:04 by jwe]
jwe
parents: 2974
diff changeset
36 class tree_walker;
641689f67673 [project @ 1997-05-15 20:27:04 by jwe]
jwe
parents: 2974
diff changeset
37
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
38 // Functions.
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
39
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
40 class
6109
c68896f193e3 [project @ 2006-10-27 02:16:18 by jwe]
jwe
parents: 5864
diff changeset
41 OCTINTERP_API
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
42 octave_function : public octave_base_value
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
43 {
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
44 public:
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
45
8785
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
46 octave_function (void)
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
47 : relative (false), locked (false), private_function (false),
18304
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
48 xdispatch_class (), xpackage_name (), my_name (), my_dir_name (),
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
49 doc () { }
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
50
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
51 ~octave_function (void) { }
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
52
5759
ce79d238f142 [project @ 2006-04-13 13:04:32 by jwe]
jwe
parents: 5744
diff changeset
53 octave_base_value *clone (void) const;
ce79d238f142 [project @ 2006-04-13 13:04:32 by jwe]
jwe
parents: 5744
diff changeset
54 octave_base_value *empty_clone (void) const;
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
55
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
56 bool is_defined (void) const { return true; }
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
57
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
58 bool is_function (void) const { return true; }
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
59
3544
71bd2d124119 [project @ 2000-02-02 21:02:31 by jwe]
jwe
parents: 3523
diff changeset
60 virtual bool is_system_fcn_file (void) const { return false; }
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
61
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3325
diff changeset
62 virtual std::string fcn_file_name (void) const { return std::string (); }
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 12783
diff changeset
63
15005
74c7265c057a fix failure with function handles caused by changeset ea6997657614
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
64 virtual std::string src_file_name (void) const { return std::string (); }
74c7265c057a fix failure with function handles caused by changeset ea6997657614
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
65
12783
ad9263d965dc First experimental profiler implementation with flat profile.
Daniel Kraft <d@domob.eu>
parents: 11586
diff changeset
66 // The name to show in the profiler (also used as map-key).
ad9263d965dc First experimental profiler implementation with flat profile.
Daniel Kraft <d@domob.eu>
parents: 11586
diff changeset
67 virtual std::string profiler_name (void) const { return name (); }
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
68
6323
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6109
diff changeset
69 virtual std::string parent_fcn_name (void) const { return std::string (); }
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6109
diff changeset
70
7968
0d607e8dbbfa eliminate curr_parent_function; fix subfunction lookup
John W. Eaton <jwe@octave.org>
parents: 7761
diff changeset
71 virtual symbol_table::scope_id parent_fcn_scope (void) const { return -1; }
0d607e8dbbfa eliminate curr_parent_function; fix subfunction lookup
John W. Eaton <jwe@octave.org>
parents: 7761
diff changeset
72
3255
4d33b1e56bff [project @ 1999-07-15 20:54:14 by jwe]
jwe
parents: 3219
diff changeset
73 virtual void mark_fcn_file_up_to_date (const octave_time&) { }
3166
c3409a0cafa8 [project @ 1998-04-16 03:12:19 by jwe]
jwe
parents: 2976
diff changeset
74
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
75 virtual symbol_table::scope_id scope (void) { return -1; }
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
76
3255
4d33b1e56bff [project @ 1999-07-15 20:54:14 by jwe]
jwe
parents: 3219
diff changeset
77 virtual octave_time time_parsed (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
78 { return octave_time (static_cast<time_t> (0)); }
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
79
3255
4d33b1e56bff [project @ 1999-07-15 20:54:14 by jwe]
jwe
parents: 3219
diff changeset
80 virtual octave_time time_checked (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
81 { return octave_time (static_cast<time_t> (0)); }
3166
c3409a0cafa8 [project @ 1998-04-16 03:12:19 by jwe]
jwe
parents: 2976
diff changeset
82
11461
2b8531a6a3c9 Change mentions of "nested function" to the less misleading "subfunction"
David Grundberg <individ@acc.umu.se>
parents: 11445
diff changeset
83 virtual bool is_subfunction (void) const { return false; }
4343
db5e0814277a [project @ 2003-02-20 16:44:16 by jwe]
jwe
parents: 4192
diff changeset
84
11220
883b9308353c allow class function to be called from methods as well as constructors
John W. Eaton <jwe@octave.org>
parents: 10313
diff changeset
85 virtual bool is_class_constructor (const std::string& = std::string ()) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
86 { return false; }
5744
1c36a2e82266 [project @ 2006-04-06 19:38:34 by jwe]
jwe
parents: 5307
diff changeset
87
15869
5e5705b3e505 Implement some embryonic handle-classdef semantic.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15195
diff changeset
88 virtual bool
5e5705b3e505 Implement some embryonic handle-classdef semantic.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15195
diff changeset
89 is_classdef_constructor (const std::string& = std::string ()) const
19895
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19731
diff changeset
90 { return false; }
15869
5e5705b3e505 Implement some embryonic handle-classdef semantic.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15195
diff changeset
91
11220
883b9308353c allow class function to be called from methods as well as constructors
John W. Eaton <jwe@octave.org>
parents: 10313
diff changeset
92 virtual bool is_class_method (const std::string& = std::string ()) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
93 { return false; }
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
94
4748
7b145222fea3 [project @ 2004-02-07 06:27:27 by jwe]
jwe
parents: 4645
diff changeset
95 virtual bool takes_varargs (void) const { return false; }
7b145222fea3 [project @ 2004-02-07 06:27:27 by jwe]
jwe
parents: 4645
diff changeset
96
7b145222fea3 [project @ 2004-02-07 06:27:27 by jwe]
jwe
parents: 4645
diff changeset
97 virtual bool takes_var_return (void) const { return false; }
7b145222fea3 [project @ 2004-02-07 06:27:27 by jwe]
jwe
parents: 4645
diff changeset
98
8785
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
99 void stash_dispatch_class (const std::string& nm) { xdispatch_class = nm; }
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
100
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
101 std::string dispatch_class (void) const { return xdispatch_class; }
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
102
18304
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
103 void stash_package_name (const std::string& pack) { xpackage_name = pack; }
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
104
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
105 std::string package_name (void) const { return xpackage_name; }
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
106
11445
40f311a69417 fix OO field access in subfunctions of private functions
John W. Eaton <jwe@octave.org>
parents: 11220
diff changeset
107 virtual void
40f311a69417 fix OO field access in subfunctions of private functions
John W. Eaton <jwe@octave.org>
parents: 11220
diff changeset
108 mark_as_private_function (const std::string& cname = std::string ())
8785
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
109 {
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
110 private_function = true;
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
111 xdispatch_class = cname;
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
112 }
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
113
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
114 bool is_private_function (void) const { return private_function; }
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
115
13241
2a8dcb5b3a00 improve default indexing for objects
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
116 bool is_private_function_of_class (const std::string& nm) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
117 { return private_function && xdispatch_class == nm; }
8785
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
118
13241
2a8dcb5b3a00 improve default indexing for objects
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
119 virtual bool
2a8dcb5b3a00 improve default indexing for objects
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
120 is_anonymous_function_of_class (const std::string& = std::string ()) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
121 { return false; }
13241
2a8dcb5b3a00 improve default indexing for objects
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
122
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
123 std::string dir_name (void) const { return my_dir_name; }
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
124
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
125 void stash_dir_name (const std::string& dir) { my_dir_name = dir; }
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
126
7761
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
127 void lock (void)
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
128 {
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
129 this->lock_subfunctions ();
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
130 locked = true;
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
131 }
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
132
7761
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
133 void unlock (void)
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
134 {
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
135 this->unlock_subfunctions ();
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
136 locked = false;
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
137 }
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
138
7489
8e4592e49fa7 don't clear locked functions
John W. Eaton <jwe@octave.org>
parents: 7438
diff changeset
139 bool islocked (void) const { return locked; }
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
140
7761
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
141 virtual void lock_subfunctions (void) { }
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
142
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
143 virtual void unlock_subfunctions (void) { }
5adeea5de26c symbol table reporting functions
John W. Eaton <jwe@octave.org>
parents: 7489
diff changeset
144
16627
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
145 virtual void maybe_relocate_end (void) { }
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
146
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
147 // Not valid until after the function is completley parsed.
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
148 virtual bool has_subfunctions (void) const { return false; }
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
149
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
150 virtual void stash_subfunction_names (const std::list<std::string>&) { }
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
151
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
152 virtual std::list<std::string> subfunction_names (void) const
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
153 {
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
154 return std::list<std::string> ();
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
155 }
de91b1621260 adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
156
6323
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6109
diff changeset
157 void mark_relative (void) { relative = true; }
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6109
diff changeset
158
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6109
diff changeset
159 bool is_relative (void) const { return relative; }
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6109
diff changeset
160
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3325
diff changeset
161 std::string name (void) const { return my_name; }
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
162
18304
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
163 std::string canonical_name (void) const
19895
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19731
diff changeset
164 {
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19731
diff changeset
165 if (xpackage_name.empty ())
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19731
diff changeset
166 return my_name;
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19731
diff changeset
167 else
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19731
diff changeset
168 return xpackage_name + "." + my_name;
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19731
diff changeset
169 }
18304
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
170
5823
080c08b192d8 [project @ 2006-05-19 05:32:17 by jwe]
jwe
parents: 5759
diff changeset
171 void document (const std::string& ds) { doc = ds; }
080c08b192d8 [project @ 2006-05-19 05:32:17 by jwe]
jwe
parents: 5759
diff changeset
172
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3325
diff changeset
173 std::string doc_string (void) const { return doc; }
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
174
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3258
diff changeset
175 virtual void unload (void) { }
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3258
diff changeset
176
2976
641689f67673 [project @ 1997-05-15 20:27:04 by jwe]
jwe
parents: 2974
diff changeset
177 virtual void accept (tree_walker&) { }
641689f67673 [project @ 1997-05-15 20:27:04 by jwe]
jwe
parents: 2974
diff changeset
178
15954
46ca8488de92 Re-engineer tree_expression postfix handling to make it more flexible.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15869
diff changeset
179 virtual bool is_postfix_index_handled (char type) const
19895
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19731
diff changeset
180 { return (type == '(' || type == '{'); }
15954
46ca8488de92 Re-engineer tree_expression postfix handling to make it more flexible.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15869
diff changeset
181
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
182 protected:
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
183
5864
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5848
diff changeset
184 octave_function (const std::string& nm,
10313
f3b65e1ae355 untabify src header files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
185 const std::string& ds = std::string ())
10101
b51848e95e4b cleanups to avoid valgrind warnings
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
186 : relative (false), locked (false), private_function (false),
b51848e95e4b cleanups to avoid valgrind warnings
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
187 xdispatch_class (), my_name (nm), my_dir_name (), doc (ds) { }
6323
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6109
diff changeset
188
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6109
diff changeset
189 // TRUE if this function was found from a relative path element.
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6109
diff changeset
190 bool relative;
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
191
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
192 // TRUE if this function is tagged so that it can't be cleared.
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
193 bool locked;
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
194
8785
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
195 // TRUE means this is a private function.
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
196 bool private_function;
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
197
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
198 // If this object is a class method or constructor, or a private
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
199 // function inside a class directory, this is the name of the class
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
200 // to which the method belongs.
8785
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
201 std::string xdispatch_class;
70f5a0375afd oct-map.h: fix think-o in previous change
John W. Eaton <jwe@octave.org>
parents: 7968
diff changeset
202
18304
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
203 // If this function is part of a package, this is the full name
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
204 // of the package to which the function belongs.
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
205 std::string xpackage_name;
b0e8cc676396 Fix out-of-date status check for package functions.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17856
diff changeset
206
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
207 // The name of this function.
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3325
diff changeset
208 std::string my_name;
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
209
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
210 // The name of the directory in the path where we found this
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
211 // function. May be relative.
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
212 std::string my_dir_name;
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
213
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
214 // The help text for this function.
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3325
diff changeset
215 std::string doc;
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
216
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3258
diff changeset
217 private:
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3258
diff changeset
218
4645
bd2067547b40 [project @ 2003-11-23 08:07:52 by jwe]
jwe
parents: 4643
diff changeset
219 // No copying!
bd2067547b40 [project @ 2003-11-23 08:07:52 by jwe]
jwe
parents: 4643
diff changeset
220
bd2067547b40 [project @ 2003-11-23 08:07:52 by jwe]
jwe
parents: 4643
diff changeset
221 octave_function (const octave_function& f);
bd2067547b40 [project @ 2003-11-23 08:07:52 by jwe]
jwe
parents: 4643
diff changeset
222
bd2067547b40 [project @ 2003-11-23 08:07:52 by jwe]
jwe
parents: 4643
diff changeset
223 octave_function& operator = (const octave_function& f);
bd2067547b40 [project @ 2003-11-23 08:07:52 by jwe]
jwe
parents: 4643
diff changeset
224
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
225 };
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
226
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents:
diff changeset
227 #endif