annotate src/variables.h @ 1996:003570e69c7b

[project @ 1996-03-03 01:45:43 by jwe]
author jwe
date Sun, 03 Mar 1996 01:45:43 +0000
parents e62277bf5fe0
children bfb775fb6fe8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2
1884
e62277bf5fe0 [project @ 1996-02-05 18:17:59 by jwe]
jwe
parents: 1827
diff changeset
3 Copyright (C) 1996 John W. Eaton
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
4
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
6
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
10 later version.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
11
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
15 for more details.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
16
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
1315
611d403c7f3d [project @ 1995-06-25 19:56:32 by jwe]
jwe
parents: 1162
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
20
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
21 */
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
22
383
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 296
diff changeset
23 #if !defined (octave_variables_h)
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 296
diff changeset
24 #define octave_variables_h 1
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
25
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
26 class symbol_record;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
27 class symbol_table;
1738
bb9d00aa55fb [project @ 1996-01-12 10:56:22 by jwe]
jwe
parents: 1727
diff changeset
28
490
101e1d4f2395 [project @ 1994-07-06 14:38:19 by jwe]
jwe
parents: 383
diff changeset
29 class tree_fvc;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
30 class tree_constant;
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
31 class Octave_object;
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
32 class string_vector;
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
33
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
34 #include <string>
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
35
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
36 struct builtin_mapper_function;
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
37
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
38 typedef int (*sv_Function)(void);
195
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
39
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
40 struct builtin_variable
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
41 {
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
42 builtin_variable (const string& n, tree_constant *v, int iaf, int p,
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
43 int e, sv_Function svf, const string& h)
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
44 : name (n), value (v), install_as_function (iaf), protect (p),
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
45 eternal (e), sv_function (svf), help_string (h) { }
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
46
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
47 string name;
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
48 tree_constant *value;
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
49 int install_as_function;
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
50 int protect;
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
51 int eternal;
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
52 sv_Function sv_function;
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
53 string help_string;
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
54 };
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
55
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
56 typedef Octave_object (*Octave_builtin_fcn)(const Octave_object&, int);
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
57
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
58 struct builtin_function
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
59 {
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
60 builtin_function (const string& n, int itf, Octave_builtin_fcn f,
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
61 const string& h)
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
62 : name (n), is_text_fcn (itf), fcn (f), help_string (h) { }
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
63
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
64 string name;
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
65 int is_text_fcn;
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
66 Octave_builtin_fcn fcn;
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
67 string help_string;
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
68 };
195
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
69
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
70 extern void initialize_symbol_tables (void);
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
71
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
72 extern bool lookup (symbol_record *s, int exec_script = 1);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 548
diff changeset
73
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
74 extern symbol_record *lookup_by_name (const string& nm, int exec_script = 1);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 548
diff changeset
75
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
76 extern string get_help_from_file (const string& f);
991
18be848f10a9 [project @ 1994-12-15 06:06:46 by jwe]
jwe
parents: 798
diff changeset
77
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
78 extern string builtin_string_variable (const string&);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
79 extern int builtin_real_scalar_variable (const string&, double&);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
80 extern tree_constant builtin_any_variable (const string&);
593
6f948c6251a9 [project @ 1994-08-09 04:29:10 by jwe]
jwe
parents: 581
diff changeset
81
6f948c6251a9 [project @ 1994-08-09 04:29:10 by jwe]
jwe
parents: 581
diff changeset
82 extern void link_to_global_variable (symbol_record *sr);
6f948c6251a9 [project @ 1994-08-09 04:29:10 by jwe]
jwe
parents: 581
diff changeset
83 extern void link_to_builtin_variable (symbol_record *sr);
6f948c6251a9 [project @ 1994-08-09 04:29:10 by jwe]
jwe
parents: 581
diff changeset
84 extern void link_to_builtin_or_function (symbol_record *sr);
6f948c6251a9 [project @ 1994-08-09 04:29:10 by jwe]
jwe
parents: 581
diff changeset
85
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
86 extern void force_link_to_function (const string&);
593
6f948c6251a9 [project @ 1994-08-09 04:29:10 by jwe]
jwe
parents: 581
diff changeset
87
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
88 extern bool is_builtin_variable (const string&);
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
89 extern bool is_text_function_name (const string&);
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
90 extern bool is_globally_visible (const string&);
593
6f948c6251a9 [project @ 1994-08-09 04:29:10 by jwe]
jwe
parents: 581
diff changeset
91
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
92 extern tree_fvc *is_valid_function (const tree_constant&, const string&,
593
6f948c6251a9 [project @ 1994-08-09 04:29:10 by jwe]
jwe
parents: 581
diff changeset
93 int warn = 0);
6f948c6251a9 [project @ 1994-08-09 04:29:10 by jwe]
jwe
parents: 581
diff changeset
94
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
95 extern string_vector make_name_list (void);
195
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
96
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
97 extern void install_builtin_mapper (const builtin_mapper_function& mf);
195
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
98
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
99 extern void install_builtin_function (const builtin_function& gf);
195
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
100
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
101 extern void install_builtin_variable (const builtin_variable& v);
195
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
102
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
103 extern void
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
104 install_builtin_variable_as_function
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
105 (const string& name, tree_constant *val, int protect = 0,
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
106 int eternal = 0, const string& help = string ());
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
107
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
108 extern void alias_builtin (const string& alias, const string& name);
548
18007cc05a02 [project @ 1994-07-22 19:04:22 by jwe]
jwe
parents: 529
diff changeset
109
1160
74397545c242 [project @ 1995-02-27 16:11:17 by jwe]
jwe
parents: 1121
diff changeset
110 #if 0
195
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
111 extern void bind_nargin_and_nargout (symbol_table *sym_tab,
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
112 int nargin, int nargout);
1160
74397545c242 [project @ 1995-02-27 16:11:17 by jwe]
jwe
parents: 1121
diff changeset
113 #endif
195
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
114
1162
c210c5a25a48 [project @ 1995-02-27 17:36:16 by jwe]
jwe
parents: 1160
diff changeset
115 extern void bind_ans (const tree_constant& val, int print);
c210c5a25a48 [project @ 1995-02-27 17:36:16 by jwe]
jwe
parents: 1160
diff changeset
116
1489
3e705c864019 [project @ 1995-09-28 05:38:26 by jwe]
jwe
parents: 1488
diff changeset
117 extern void bind_global_error_variable (void);
3e705c864019 [project @ 1995-09-28 05:38:26 by jwe]
jwe
parents: 1488
diff changeset
118
3e705c864019 [project @ 1995-09-28 05:38:26 by jwe]
jwe
parents: 1488
diff changeset
119 extern void clear_global_error_variable (void *);
3e705c864019 [project @ 1995-09-28 05:38:26 by jwe]
jwe
parents: 1488
diff changeset
120
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
121 extern void bind_builtin_variable (const string&, tree_constant *,
195
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
122 int protect = 0, int eternal = 0,
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
123 sv_Function f = (sv_Function) 0,
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
124 const string& help = string ());
195
13c6086c325c [project @ 1993-11-06 10:12:29 by jwe]
jwe
parents: 1
diff changeset
125
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
126 extern void bind_builtin_variable (const string&, const tree_constant&,
1406
034a57daf076 [project @ 1995-09-15 06:03:10 by jwe]
jwe
parents: 1405
diff changeset
127 int protect = 0, int eternal = 0,
034a57daf076 [project @ 1995-09-15 06:03:10 by jwe]
jwe
parents: 1405
diff changeset
128 sv_Function f = (sv_Function) 0,
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
129 const string& help = string ());
1406
034a57daf076 [project @ 1995-09-15 06:03:10 by jwe]
jwe
parents: 1405
diff changeset
130
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
131 extern void install_builtin_variables (void);
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
132
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
133 extern string maybe_add_default_load_path (const string& p);
1121
46619c5ca048 [project @ 1995-02-17 15:45:07 by jwe]
jwe
parents: 1093
diff changeset
134
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
135 extern string octave_lib_dir (void);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
136 extern string octave_arch_lib_dir (void);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
137 extern string octave_fcn_file_dir (void);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
138 extern string octave_bin_dir (void);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
139 extern string default_exec_path (void);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
140 extern string default_path (void);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
141 extern string default_info_file (void);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
142 extern string default_info_prog (void);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
143 extern string default_editor (void);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
144 extern string get_local_site_defaults (void);
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1738
diff changeset
145 extern string get_site_defaults (void);
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 497
diff changeset
146
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
147 // Symbol table for symbols at the top level.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
148 extern symbol_table *top_level_sym_tab;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
149
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
150 // Symbol table for the current scope.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
151 extern symbol_table *curr_sym_tab;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
152
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
153 // Symbol table for global symbols.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
154 extern symbol_table *global_sym_tab;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
155
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
156 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
157
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
158 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
159 ;;; Local Variables: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
160 ;;; mode: C++ ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
161 ;;; End: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
162 */