annotate src/mappers.h @ 2886:969032befa3d

[project @ 1997-04-28 01:17:34 by jwe]
author jwe
date Mon, 28 Apr 1997 01:17:34 +0000
parents 8b262e771614
children 8aa189b811d0
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
2847
8b262e771614 [project @ 1997-03-27 16:18:26 by jwe]
jwe
parents: 2275
diff changeset
3 Copyright (C) 1996, 1997 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: 1009
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: 240
diff changeset
23 #if !defined (octave_mappers_h)
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 240
diff changeset
24 #define octave_mappers_h 1
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
25
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1651
diff changeset
26 #include <string>
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1651
diff changeset
27
1968
a2e206524aa0 [project @ 1996-02-17 02:54:24 by jwe]
jwe
parents: 1884
diff changeset
28 #include "lo-mappers.h"
1651
e846e361a265 [project @ 1995-12-20 06:59:12 by jwe]
jwe
parents: 1315
diff changeset
29 #include "oct-cmplx.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
30
2087
088b063500d1 [project @ 1996-04-26 06:21:21 by jwe]
jwe
parents: 1996
diff changeset
31 typedef int (*ch_Mapper)(int);
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
32 typedef double (*d_d_Mapper)(double);
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
33 typedef double (*d_c_Mapper)(const Complex&);
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
34 typedef Complex (*c_c_Mapper)(const Complex&);
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
35
2087
088b063500d1 [project @ 1996-04-26 06:21:21 by jwe]
jwe
parents: 1996
diff changeset
36 // ch_mapper is a kluge.
088b063500d1 [project @ 1996-04-26 06:21:21 by jwe]
jwe
parents: 1996
diff changeset
37 //
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
38 // If can_return_complex_for_real_arg is 1, lower_limit and
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
39 // upper_limit specify the range of values for which a real arg
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
40 // returns a real value. Outside that range, we have to convert args
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
41 // to complex, and call the complex valued function.
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
42 //
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
43 // If can_return_complex_for_real_arg is 0, lower_limit and
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
44 // upper_limit are ignored.
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
45
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
46 struct builtin_mapper_function
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
47 {
2089
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
48 builtin_mapper_function (ch_Mapper ch = 0, d_d_Mapper dd = 0,
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
49 d_c_Mapper dc = 0, c_c_Mapper cc = 0,
2275
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
50 double l = 0.0, double u = 0.0, int f = 0,
2089
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
51 const string n = string (),
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
52 const string& h = string ())
2087
088b063500d1 [project @ 1996-04-26 06:21:21 by jwe]
jwe
parents: 1996
diff changeset
53 : ch_mapper (ch), d_d_mapper (dd), d_c_mapper (dc), c_c_mapper (cc),
2275
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
54 lower_limit (l), upper_limit (u), flag (f),
2087
088b063500d1 [project @ 1996-04-26 06:21:21 by jwe]
jwe
parents: 1996
diff changeset
55 name (n), help_string (h) { }
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1651
diff changeset
56
2089
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
57 builtin_mapper_function (const builtin_mapper_function& mf)
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
58 : ch_mapper (mf.ch_mapper), d_d_mapper (mf.d_d_mapper),
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
59 d_c_mapper (mf.d_c_mapper), c_c_mapper (mf.c_c_mapper),
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
60 lower_limit (mf.lower_limit), upper_limit (mf.upper_limit),
2275
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
61 flag (mf.flag), name (mf.name), help_string (mf.help_string) { }
2089
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
62
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
63 builtin_mapper_function& operator = (const builtin_mapper_function& mf)
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
64 {
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
65 if (&mf != this)
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
66 {
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
67 ch_mapper = mf.ch_mapper;
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
68 d_d_mapper = mf.d_d_mapper;
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
69 d_c_mapper = mf.d_c_mapper;
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
70 c_c_mapper = mf.c_c_mapper;
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
71 lower_limit = mf.lower_limit;
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
72 upper_limit = mf.upper_limit;
2275
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
73 flag = mf.flag;
2089
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
74 name = mf.name;
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
75 help_string = mf.help_string;
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
76 }
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
77 return *this;
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
78 }
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
79
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
80 ~builtin_mapper_function (void) { }
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2087
diff changeset
81
2087
088b063500d1 [project @ 1996-04-26 06:21:21 by jwe]
jwe
parents: 1996
diff changeset
82 ch_Mapper ch_mapper;
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
83 d_d_Mapper d_d_mapper;
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
84 d_c_Mapper d_c_mapper;
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
85 c_c_Mapper c_c_mapper;
2087
088b063500d1 [project @ 1996-04-26 06:21:21 by jwe]
jwe
parents: 1996
diff changeset
86 double lower_limit;
088b063500d1 [project @ 1996-04-26 06:21:21 by jwe]
jwe
parents: 1996
diff changeset
87 double upper_limit;
2275
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
88
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
89 // For ch_mapper:
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
90 //
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
91 // 0 => this function returns a matrix of ones and zeros
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
92 // 1 => this function returns a numeric matrix (any values)
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
93 // 2 => this function returns a string array
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
94 //
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
95 // For other mappers, nonzero means that this function can return a
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
96 // complex value for some real arguments.
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
97 int flag;
38fea6d34daf [project @ 1996-05-24 04:06:52 by jwe]
jwe
parents: 2089
diff changeset
98
2087
088b063500d1 [project @ 1996-04-26 06:21:21 by jwe]
jwe
parents: 1996
diff changeset
99 string name;
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1651
diff changeset
100 string help_string;
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
101 };
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
102
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
103 extern void install_mapper_functions (void);
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 383
diff changeset
104
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
105 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
106
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
107 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
108 ;;; Local Variables: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
109 ;;; mode: C++ ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
110 ;;; End: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
111 */