Mercurial > octave
annotate src/ov-intx.h @ 7503:8c32f95c2639
convert mapper functions to new format
author | David Bateman <dbateman@free.fr> |
---|---|
date | Wed, 20 Feb 2008 04:22:50 -0500 |
parents | 76341ffda11e |
children | 99c410f7f0b0 |
rev | line source |
---|---|
4904 | 1 /* |
2 | |
7017 | 3 Copyright (C) 2004, 2005, 2006, 2007 John W. Eaton |
4904 | 4 |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
7016 | 9 Free Software Foundation; either version 3 of the License, or (at your |
10 option) any later version. | |
4904 | 11 |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
4904 | 20 |
21 */ | |
22 | |
23 #include <cstdlib> | |
24 | |
25 #include <iostream> | |
26 #include <string> | |
27 | |
28 #include "mx-base.h" | |
29 #include "oct-alloc.h" | |
30 #include "so-array.h" | |
31 #include "str-vec.h" | |
32 | |
33 #include "error.h" | |
4944 | 34 #include "oct-stream.h" |
4904 | 35 #include "ov-base.h" |
36 #include "ov-base-int.h" | |
37 #include "ov-typeinfo.h" | |
4982 | 38 #include "gripes.h" |
4904 | 39 |
7503
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
40 #include "ov-re-mat.h" |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
41 #include "ov-scalar.h" |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
42 |
4904 | 43 class |
6693 | 44 OCTINTERP_API |
4904 | 45 OCTAVE_VALUE_INT_MATRIX_T |
46 : public octave_base_int_matrix<OCTAVE_INT_NDARRAY_T> | |
47 { | |
48 public: | |
49 | |
50 OCTAVE_VALUE_INT_MATRIX_T (void) | |
51 : octave_base_int_matrix<OCTAVE_INT_NDARRAY_T> () { } | |
52 | |
53 OCTAVE_VALUE_INT_MATRIX_T (const OCTAVE_INT_NDARRAY_T& nda) | |
54 : octave_base_int_matrix<OCTAVE_INT_NDARRAY_T> (nda) { } | |
55 | |
7064 | 56 OCTAVE_VALUE_INT_MATRIX_T (const ArrayN<OCTAVE_INT_T>& nda) |
57 : octave_base_int_matrix<OCTAVE_INT_NDARRAY_T> (OCTAVE_INT_NDARRAY_T (nda)) { } | |
58 | |
4904 | 59 ~OCTAVE_VALUE_INT_MATRIX_T (void) { } |
60 | |
5759 | 61 octave_base_value *clone (void) const |
4904 | 62 { return new OCTAVE_VALUE_INT_MATRIX_T (*this); } |
63 | |
5759 | 64 octave_base_value *empty_clone (void) const |
4904 | 65 { return new OCTAVE_VALUE_INT_MATRIX_T (); } |
66 | |
6069 | 67 bool OCTAVE_TYPE_PREDICATE_FUNCTION (void) const { return true; } |
5895 | 68 |
6223 | 69 bool is_integer_type (void) const { return true; } |
70 | |
5533 | 71 int8NDArray |
72 int8_array_value (void) const { return int8NDArray (matrix); } | |
73 | |
74 int16NDArray | |
75 int16_array_value (void) const { return int16NDArray (matrix); } | |
76 | |
77 int32NDArray | |
78 int32_array_value (void) const { return int32NDArray (matrix); } | |
79 | |
80 int64NDArray | |
81 int64_array_value (void) const { return int64NDArray (matrix); } | |
82 | |
83 uint8NDArray | |
84 uint8_array_value (void) const { return uint8NDArray (matrix); } | |
85 | |
86 uint16NDArray | |
87 uint16_array_value (void) const { return uint16NDArray (matrix); } | |
88 | |
89 uint32NDArray | |
90 uint32_array_value (void) const { return uint32NDArray (matrix); } | |
91 | |
92 uint64NDArray | |
93 uint64_array_value (void) const { return uint64NDArray (matrix); } | |
4904 | 94 |
4982 | 95 double |
96 double_value (bool = false) const | |
97 { | |
98 double retval = lo_ieee_nan_value (); | |
99 | |
100 if (numel () > 0) | |
101 { | |
5781 | 102 gripe_implicit_conversion ("Octave:array-as-scalar", |
103 type_name (), "real scalar"); | |
4982 | 104 |
7198 | 105 retval = matrix(0).double_value (); |
4982 | 106 } |
107 else | |
108 gripe_invalid_conversion (type_name (), "real scalar"); | |
109 | |
110 return retval; | |
111 | |
112 } | |
113 | |
4983 | 114 double scalar_value (bool = false) const { return double_value (); } |
4982 | 115 |
6214 | 116 Matrix |
117 matrix_value (bool = false) const | |
118 { | |
119 Matrix retval; | |
120 dim_vector dv = dims (); | |
121 if (dv.length () > 2) | |
122 error ("invalid conversion of %s to Matrix", type_name().c_str ()); | |
123 else | |
124 { | |
125 retval = Matrix (dv(0), dv(1)); | |
126 double *vec = retval.fortran_vec (); | |
127 octave_idx_type nel = matrix.numel (); | |
128 for (octave_idx_type i = 0; i < nel; i++) | |
7198 | 129 vec[i] = matrix(i).double_value (); |
6214 | 130 } |
131 return retval; | |
132 } | |
133 | |
134 ComplexMatrix | |
135 complex_matrix_value (bool = false) const | |
136 { | |
137 ComplexMatrix retval; | |
138 dim_vector dv = dims(); | |
139 if (dv.length () > 2) | |
140 error ("invalid conversion of %s to Matrix", type_name().c_str ()); | |
141 else | |
142 { | |
143 retval = ComplexMatrix (dv(0), dv(1)); | |
144 Complex *vec = retval.fortran_vec (); | |
145 octave_idx_type nel = matrix.numel (); | |
146 for (octave_idx_type i = 0; i < nel; i++) | |
7198 | 147 vec[i] = Complex (matrix(i).double_value ()); |
6214 | 148 } |
149 return retval; | |
150 } | |
151 | |
4915 | 152 NDArray |
153 array_value (bool = false) const | |
154 { | |
155 NDArray retval (matrix.dims ()); | |
6214 | 156 double *vec = retval.fortran_vec (); |
157 octave_idx_type nel = matrix.numel (); | |
158 for (octave_idx_type i = 0; i < nel; i++) | |
7198 | 159 vec[i] = matrix(i).double_value (); |
4963 | 160 return retval; |
161 } | |
162 | |
163 ComplexNDArray | |
164 complex_array_value (bool = false) const | |
165 { | |
166 ComplexNDArray retval (matrix.dims ()); | |
6214 | 167 Complex *vec = retval.fortran_vec (); |
168 octave_idx_type nel = matrix.numel (); | |
169 for (octave_idx_type i = 0; i < nel; i++) | |
7198 | 170 vec[i] = Complex (matrix(i).double_value ()); |
4915 | 171 return retval; |
172 } | |
173 | |
5898 | 174 boolNDArray |
5943 | 175 bool_array_value (bool warn = false) const |
5898 | 176 { |
177 boolNDArray retval (dims ()); | |
178 | |
179 octave_idx_type nel = numel (); | |
5943 | 180 |
181 if (warn && matrix.any_element_not_one_or_zero ()) | |
182 gripe_logical_conversion (); | |
183 | |
6214 | 184 bool *vec = retval.fortran_vec (); |
5898 | 185 for (octave_idx_type i = 0; i < nel; i++) |
7198 | 186 vec[i] = matrix(i).bool_value (); |
5898 | 187 |
188 return retval; | |
189 } | |
190 | |
5533 | 191 charNDArray |
192 char_array_value (bool = false) const | |
193 { | |
194 charNDArray retval (dims ()); | |
195 | |
196 octave_idx_type nel = numel (); | |
197 | |
6214 | 198 char *vec = retval.fortran_vec (); |
5533 | 199 for (octave_idx_type i = 0; i < nel; i++) |
7198 | 200 vec[i] = matrix(i).char_value (); |
5533 | 201 |
202 return retval; | |
203 } | |
204 | |
5829 | 205 void increment (void) { matrix += 1; } |
206 | |
207 void decrement (void) { matrix -= 1; } | |
208 | |
4938 | 209 idx_vector index_vector (void) const { return idx_vector (matrix); } |
210 | |
4944 | 211 int write (octave_stream& os, int block_size, |
212 oct_data_conv::data_type output_type, int skip, | |
213 oct_mach_info::float_format flt_fmt) const | |
214 { return os.write (matrix, block_size, output_type, skip, flt_fmt); } | |
215 | |
5900 | 216 mxArray *as_mxArray (void) const |
217 { | |
218 mxArray *retval = new mxArray (OCTAVE_INT_MX_CLASS, dims (), mxREAL); | |
219 | |
220 OCTAVE_INT_T::val_type *pr = static_cast<OCTAVE_INT_T::val_type *> (retval->get_data ()); | |
221 | |
6686 | 222 mwSize nel = numel (); |
5900 | 223 |
224 const OCTAVE_INT_T *p = matrix.data (); | |
225 | |
6686 | 226 for (mwIndex i = 0; i < nel; i++) |
5900 | 227 pr[i] = p[i].value (); |
228 | |
229 return retval; | |
230 } | |
231 | |
7503
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
232 #define MAT_MAPPER(FCN) \ |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
233 octave_value FCN (void) const { return matrix.FCN (); } |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
234 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
235 MAT_MAPPER (abs) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
236 MAT_MAPPER (signum) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
237 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
238 #undef MAT_MAPPER |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
239 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
240 octave_value imag (void) const |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
241 { |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
242 return OCTAVE_INT_NDARRAY_T (matrix.dims (), |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
243 static_cast<OCTAVE_INT_T>(0)); |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
244 } |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
245 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
246 #define NO_OP_MAPPER(FCN) \ |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
247 octave_value FCN (void) const { return octave_value (matrix); } |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
248 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
249 NO_OP_MAPPER (ceil) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
250 NO_OP_MAPPER (conj) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
251 NO_OP_MAPPER (fix) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
252 NO_OP_MAPPER (floor) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
253 NO_OP_MAPPER (real) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
254 NO_OP_MAPPER (round) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
255 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
256 #undef NO_OP_MAPPER |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
257 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
258 #define BOOL_MAPPER(FCN, VAL) \ |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
259 octave_value FCN (void) const { return boolNDArray (matrix.dims (), VAL); } |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
260 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
261 BOOL_MAPPER (finite, true) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
262 BOOL_MAPPER (isinf, false) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
263 BOOL_MAPPER (isna, false) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
264 BOOL_MAPPER (isnan, false) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
265 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
266 #undef BOOL_MAPPER |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
267 |
4904 | 268 private: |
269 | |
270 DECLARE_OCTAVE_ALLOCATOR | |
271 | |
272 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA | |
273 }; | |
274 | |
275 class | |
6693 | 276 OCTINTERP_API |
4904 | 277 OCTAVE_VALUE_INT_SCALAR_T |
278 : public octave_base_int_scalar<OCTAVE_INT_T> | |
279 { | |
280 public: | |
281 | |
282 OCTAVE_VALUE_INT_SCALAR_T (void) | |
283 : octave_base_int_scalar<OCTAVE_INT_T> () { } | |
284 | |
285 OCTAVE_VALUE_INT_SCALAR_T (const OCTAVE_INT_T& nda) | |
286 : octave_base_int_scalar<OCTAVE_INT_T> (nda) { } | |
287 | |
288 ~OCTAVE_VALUE_INT_SCALAR_T (void) { } | |
289 | |
5759 | 290 octave_base_value *clone (void) const |
4904 | 291 { return new OCTAVE_VALUE_INT_SCALAR_T (*this); } |
292 | |
5759 | 293 octave_base_value *empty_clone (void) const |
4904 | 294 { return new OCTAVE_VALUE_INT_SCALAR_T (); } |
295 | |
5885 | 296 octave_value do_index_op (const octave_value_list& idx, |
297 bool resize_ok = false) | |
4983 | 298 { |
299 octave_value retval; | |
300 | |
301 if (idx.valid_scalar_indices ()) | |
302 retval = scalar; | |
303 else | |
304 { | |
5775 | 305 // FIXME -- this doesn't solve the problem of |
4983 | 306 // |
307 // a = 1; a([1,1], [1,1], [1,1]) | |
308 // | |
309 // and similar constructions. Hmm... | |
4964 | 310 |
5775 | 311 // FIXME -- using this constructor avoids narrowing the |
4983 | 312 // 1x1 matrix back to a scalar value. Need a better solution |
313 // to this problem. | |
4964 | 314 |
4983 | 315 octave_value tmp |
316 (new OCTAVE_VALUE_INT_MATRIX_T | |
317 (OCTAVE_VALUE_INT_NDARRAY_EXTRACTOR_FUNCTION ())); | |
4964 | 318 |
4983 | 319 retval = tmp.do_index_op (idx, resize_ok); |
320 } | |
4964 | 321 |
4983 | 322 return retval; |
323 } | |
4964 | 324 |
6069 | 325 bool OCTAVE_TYPE_PREDICATE_FUNCTION (void) const { return true; } |
5895 | 326 |
6223 | 327 bool is_integer_type (void) const { return true; } |
328 | |
5533 | 329 octave_int8 |
330 int8_scalar_value (void) const { return octave_int8 (scalar); } | |
331 | |
332 octave_int16 | |
333 int16_scalar_value (void) const { return octave_int16 (scalar); } | |
334 | |
335 octave_int32 | |
336 int32_scalar_value (void) const { return octave_int32 (scalar); } | |
337 | |
338 octave_int64 | |
339 int64_scalar_value (void) const { return octave_int64 (scalar); } | |
340 | |
341 octave_uint8 | |
342 uint8_scalar_value (void) const { return octave_uint8 (scalar); } | |
343 | |
344 octave_uint16 | |
345 uint16_scalar_value (void) const { return octave_uint16 (scalar); } | |
346 | |
347 octave_uint32 | |
348 uint32_scalar_value (void) const { return octave_uint32 (scalar); } | |
349 | |
350 octave_uint64 | |
351 uint64_scalar_value (void) const { return octave_uint64 (scalar); } | |
352 | |
353 int8NDArray | |
354 int8_array_value (void) const | |
355 { return int8NDArray (dim_vector (1, 1), scalar); } | |
4904 | 356 |
5533 | 357 int16NDArray |
358 int16_array_value (void) const | |
359 { return int16NDArray (dim_vector (1, 1), scalar); } | |
360 | |
361 int32NDArray | |
362 int32_array_value (void) const | |
363 { return int32NDArray (dim_vector (1, 1), scalar); } | |
364 | |
365 int64NDArray | |
366 int64_array_value (void) const | |
367 { return int64NDArray (dim_vector (1, 1), scalar); } | |
368 | |
369 uint8NDArray | |
370 uint8_array_value (void) const | |
371 { return uint8NDArray (dim_vector (1, 1), scalar); } | |
372 | |
373 uint16NDArray | |
374 uint16_array_value (void) const | |
375 { return uint16NDArray (dim_vector (1, 1), scalar); } | |
376 | |
377 uint32NDArray | |
378 uint32_array_value (void) const | |
379 { return uint32NDArray (dim_vector (1, 1), scalar); } | |
380 | |
381 uint64NDArray | |
382 uint64_array_value (void) const | |
383 { return uint64NDArray (dim_vector (1, 1), scalar); } | |
4904 | 384 |
5731 | 385 octave_value resize (const dim_vector& dv, bool fill = false) const |
4982 | 386 { |
5731 | 387 if (fill) |
388 { | |
389 OCTAVE_INT_NDARRAY_T retval (dv, 0); | |
390 if (dv.numel()) | |
391 retval(0) = scalar; | |
392 return retval; | |
393 } | |
394 else | |
395 { | |
396 OCTAVE_INT_NDARRAY_T retval (dv); | |
397 if (dv.numel()) | |
398 retval(0) = scalar; | |
399 return retval; | |
400 } | |
4982 | 401 } |
402 | |
7198 | 403 double double_value (bool = false) const { return scalar.double_value (); } |
4983 | 404 |
7198 | 405 double scalar_value (bool = false) const { return scalar.double_value (); } |
4982 | 406 |
6214 | 407 Matrix |
408 matrix_value (bool = false) const | |
409 { | |
410 Matrix retval (1, 1); | |
7198 | 411 retval(0,0) = scalar.double_value (); |
6214 | 412 return retval; |
413 } | |
414 | |
415 ComplexMatrix | |
416 complex_matrix_value (bool = false) const | |
417 { | |
418 ComplexMatrix retval (1, 1); | |
7198 | 419 retval(0,0) = Complex (scalar.double_value ()); |
6214 | 420 return retval; |
421 } | |
422 | |
423 | |
4915 | 424 NDArray |
425 array_value (bool = false) const | |
426 { | |
5533 | 427 NDArray retval (dim_vector (1, 1)); |
7198 | 428 retval(0) = scalar.double_value (); |
4963 | 429 return retval; |
430 } | |
431 | |
432 ComplexNDArray | |
433 complex_array_value (bool = false) const | |
434 { | |
5533 | 435 ComplexNDArray retval (dim_vector (1, 1)); |
7198 | 436 retval(0) = Complex (scalar.double_value ()); |
4915 | 437 return retval; |
438 } | |
439 | |
5898 | 440 boolNDArray |
5943 | 441 bool_array_value (bool warn = false) const |
5898 | 442 { |
443 boolNDArray retval (dim_vector (1, 1)); | |
5943 | 444 |
445 if (warn && scalar != 0.0 && scalar != 1.0) | |
446 gripe_logical_conversion (); | |
447 | |
7198 | 448 retval(0) = scalar.bool_value (); |
5943 | 449 |
5898 | 450 return retval; |
451 } | |
452 | |
5533 | 453 charNDArray |
454 char_array_value (bool = false) const | |
455 { | |
456 charNDArray retval (dim_vector (1, 1)); | |
7198 | 457 retval(0) = scalar.char_value (); |
5533 | 458 return retval; |
459 } | |
460 | |
5829 | 461 void increment (void) { scalar += 1; } |
462 | |
463 void decrement (void) { scalar -= 1; } | |
464 | |
4938 | 465 idx_vector index_vector (void) const { return idx_vector (scalar); } |
466 | |
4944 | 467 int write (octave_stream& os, int block_size, |
5275 | 468 oct_data_conv::data_type output_type, octave_idx_type skip, |
4944 | 469 oct_mach_info::float_format flt_fmt) const |
470 { | |
471 return os.write (OCTAVE_VALUE_INT_NDARRAY_EXTRACTOR_FUNCTION (), | |
472 block_size, output_type, skip, flt_fmt); | |
473 } | |
474 | |
5900 | 475 // Unsafe. This function exists to support the MEX interface. |
476 // You should not use it anywhere else. | |
477 void *mex_get_data (void) const { return scalar.mex_get_data (); } | |
478 | |
479 mxArray *as_mxArray (void) const | |
480 { | |
481 mxArray *retval = new mxArray (OCTAVE_INT_MX_CLASS, 1, 1, mxREAL); | |
482 | |
483 OCTAVE_INT_T::val_type *pr = static_cast<OCTAVE_INT_T::val_type *> (retval->get_data ()); | |
484 | |
485 pr[0] = scalar.value (); | |
486 | |
487 return retval; | |
488 } | |
489 | |
7503
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
490 #define SCALAR_MAPPER(FCN) \ |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
491 octave_value FCN (void) const { return scalar.FCN (); } |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
492 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
493 SCALAR_MAPPER (abs) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
494 SCALAR_MAPPER (signum) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
495 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
496 #undef SCALAR_MAPPER |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
497 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
498 octave_value imag (void) const { return static_cast<OCTAVE_INT_T>(0); } |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
499 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
500 #define NO_OP_MAPPER(FCN) \ |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
501 octave_value FCN (void) const { return octave_value (scalar); } |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
502 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
503 NO_OP_MAPPER (ceil) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
504 NO_OP_MAPPER (conj) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
505 NO_OP_MAPPER (fix) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
506 NO_OP_MAPPER (floor) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
507 NO_OP_MAPPER (real) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
508 NO_OP_MAPPER (round) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
509 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
510 #undef NO_OP_MAPPER |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
511 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
512 #define BOOL_MAPPER(FCN, VAL) octave_value FCN (void) const { return VAL; } |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
513 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
514 BOOL_MAPPER (finite, true) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
515 BOOL_MAPPER (isinf, false) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
516 BOOL_MAPPER (isna, false) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
517 BOOL_MAPPER (isnan, false) |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
518 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
519 #undef BOOL_MAPPER |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7201
diff
changeset
|
520 |
4904 | 521 private: |
522 | |
523 DECLARE_OCTAVE_ALLOCATOR | |
524 | |
525 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA | |
526 }; | |
527 | |
528 /* | |
529 ;;; Local Variables: *** | |
530 ;;; mode: C++ *** | |
531 ;;; End: *** | |
532 */ |