annotate src/builtins.h @ 383:0b52c68ec81f

[project @ 1994-03-09 21:19:44 by jwe]
author jwe
date Wed, 09 Mar 1994 21:19:44 +0000
parents fe6e790846f5
children 966db71124dc
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 // Builtin function support. -*- C++ -*-
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
3
296
3c23b8ea9099 [project @ 1994-01-17 02:49:15 by jwe]
jwe
parents: 287
diff changeset
4 Copyright (C) 1992, 1993, 1994 John W. Eaton
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
5
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
6 This file is part of Octave.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
7
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
8 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
9 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
10 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
11 later version.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
12
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
13 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
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
15 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
16 for more details.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
17
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
18 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
19 along with Octave; see the file COPYING. If not, write to the Free
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
20 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
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 */
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
23
383
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 330
diff changeset
24 #if !defined (octave_builtins_h)
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 330
diff changeset
25 #define octave_builtins_h 1
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
26
181
91ec95436dca [project @ 1993-10-23 22:45:17 by jwe]
jwe
parents: 164
diff changeset
27 class ostrstream;
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
28 class Complex;
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
29 struct help_list;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
30
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
31 #ifndef MAPPER_FCN_TYPEDEFS
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
32 #define MAPPER_FCN_TYPEDEFS 1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
33
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
34 typedef double (*d_d_Mapper)(double);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
35 typedef double (*d_c_Mapper)(const Complex&);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
36 typedef Complex (*c_c_Mapper)(const Complex&);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
37
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
38 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
39
330
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
40 // If can_return_complex_for_real_arg is 1, lower_limit and
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
41 // upper_limit specify the range of values for which a real arg
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
42 // returns a real value. Outside that range, we have to convert args
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
43 // to complex, and call the complex valued function.
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
44 //
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
45 // If can_return_complex_for_real_arg is 0, lower_limit and
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
46 // upper_limit are ignored.
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
47
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
48 struct Mapper_fcn
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
49 {
330
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
50 int can_return_complex_for_real_arg;
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
51 double lower_limit;
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
52 double upper_limit;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
53 d_d_Mapper d_d_mapper;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
54 d_c_Mapper d_c_mapper;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
55 c_c_Mapper c_c_mapper;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
56 };
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
57
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
58 struct builtin_mapper_functions
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
59 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
60 char *name;
330
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
61 int can_return_complex_for_real_arg;
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
62 double lower_limit;
fe6e790846f5 [project @ 1994-02-04 04:54:47 by jwe]
jwe
parents: 296
diff changeset
63 double upper_limit;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
64 d_d_Mapper d_d_mapper;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
65 d_c_Mapper d_c_mapper;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
66 c_c_Mapper c_c_mapper;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
67 char *help_string;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
68 };
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
69
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
70 #ifndef SV_FUNCTION_TYPEDEFS
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
71 #define SV_FUNCTION_TYPEDEFS 1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
72
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
73 typedef int (*sv_Function)(void);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
74
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
75 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
76
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
77 struct builtin_string_variables
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
78 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
79 char *name;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
80 char *value;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
81 sv_Function sv_function;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
82 char *help_string;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
83 };
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
84
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
85 extern void install_builtins (void);
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
86 extern int is_text_function_name (const char *s);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
87
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
88 extern help_list *builtin_mapper_functions_help (void);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
89 extern help_list *builtin_general_functions_help (void);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
90 extern help_list *builtin_text_functions_help (void);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
91 extern help_list *builtin_variables_help (void);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
92
181
91ec95436dca [project @ 1993-10-23 22:45:17 by jwe]
jwe
parents: 164
diff changeset
93 extern int help_from_list (ostrstream& output_buf,
91ec95436dca [project @ 1993-10-23 22:45:17 by jwe]
jwe
parents: 164
diff changeset
94 const help_list *list, const char *string,
91ec95436dca [project @ 1993-10-23 22:45:17 by jwe]
jwe
parents: 164
diff changeset
95 int usage);
91ec95436dca [project @ 1993-10-23 22:45:17 by jwe]
jwe
parents: 164
diff changeset
96
91ec95436dca [project @ 1993-10-23 22:45:17 by jwe]
jwe
parents: 164
diff changeset
97 extern void additional_help_message (ostrstream& output_buf);
91ec95436dca [project @ 1993-10-23 22:45:17 by jwe]
jwe
parents: 164
diff changeset
98
287
6027a905fc06 [project @ 1994-01-13 01:41:00 by jwe]
jwe
parents: 240
diff changeset
99 extern void print_usage (const char *s, int just_usage = 0);
181
91ec95436dca [project @ 1993-10-23 22:45:17 by jwe]
jwe
parents: 164
diff changeset
100
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
101 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
102
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
103 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
104 ;;; Local Variables: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
105 ;;; mode: C++ ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
106 ;;; page-delimiter: "^/\\*" ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
107 ;;; End: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
108 */