Mercurial > hg > octave-lyh
annotate src/ov.cc @ 10654:984b8b6bee02
simplify octave_value::length
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Tue, 25 May 2010 08:55:23 +0200 |
parents | d1194069e58c |
children | a8ce6bdecce5 |
rev | line source |
---|---|
2376 | 1 /* |
2 | |
7017 | 3 Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, |
8920 | 4 2006, 2007, 2008, 2009 John W. Eaton |
10521
4d1fc073fbb7
add some missing copyright stmts
Jaroslav Hajek <highegg@gmail.com>
parents:
10405
diff
changeset
|
5 Copyright (C) 2009, 2010 VZLU Prague |
2376 | 6 |
7 This file is part of Octave. | |
8 | |
9 Octave is free software; you can redistribute it and/or modify it | |
10 under the terms of the GNU General Public License as published by the | |
7016 | 11 Free Software Foundation; either version 3 of the License, or (at your |
12 option) any later version. | |
2376 | 13 |
14 Octave is distributed in the hope that it will be useful, but WITHOUT | |
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
17 for more details. | |
18 | |
19 You should have received a copy of the GNU General Public License | |
7016 | 20 along with Octave; see the file COPYING. If not, see |
21 <http://www.gnu.org/licenses/>. | |
2376 | 22 |
23 */ | |
24 | |
25 #ifdef HAVE_CONFIG_H | |
26 #include <config.h> | |
27 #endif | |
28 | |
4970 | 29 #include "data-conv.h" |
30 #include "quit.h" | |
2942 | 31 #include "str-vec.h" |
2376 | 32 |
2974 | 33 #include "oct-obj.h" |
4944 | 34 #include "oct-stream.h" |
2376 | 35 #include "ov.h" |
36 #include "ov-base.h" | |
2825 | 37 #include "ov-bool.h" |
38 #include "ov-bool-mat.h" | |
3351 | 39 #include "ov-cell.h" |
2376 | 40 #include "ov-scalar.h" |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7761
diff
changeset
|
41 #include "ov-float.h" |
2376 | 42 #include "ov-re-mat.h" |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7761
diff
changeset
|
43 #include "ov-flt-re-mat.h" |
8366
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
8346
diff
changeset
|
44 #include "ov-re-diag.h" |
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
8346
diff
changeset
|
45 #include "ov-flt-re-diag.h" |
8367
445d27d79f4e
support permutation matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
8366
diff
changeset
|
46 #include "ov-perm.h" |
5164 | 47 #include "ov-bool-sparse.h" |
48 #include "ov-cx-sparse.h" | |
49 #include "ov-re-sparse.h" | |
4901 | 50 #include "ov-int8.h" |
51 #include "ov-int16.h" | |
52 #include "ov-int32.h" | |
53 #include "ov-int64.h" | |
54 #include "ov-uint8.h" | |
55 #include "ov-uint16.h" | |
56 #include "ov-uint32.h" | |
57 #include "ov-uint64.h" | |
2376 | 58 #include "ov-complex.h" |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7761
diff
changeset
|
59 #include "ov-flt-complex.h" |
2376 | 60 #include "ov-cx-mat.h" |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7761
diff
changeset
|
61 #include "ov-flt-cx-mat.h" |
8366
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
8346
diff
changeset
|
62 #include "ov-cx-diag.h" |
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
8346
diff
changeset
|
63 #include "ov-flt-cx-diag.h" |
2376 | 64 #include "ov-ch-mat.h" |
65 #include "ov-str-mat.h" | |
66 #include "ov-range.h" | |
67 #include "ov-struct.h" | |
7336 | 68 #include "ov-class.h" |
3977 | 69 #include "ov-cs-list.h" |
2376 | 70 #include "ov-colon.h" |
2974 | 71 #include "ov-builtin.h" |
4649 | 72 #include "ov-dld-fcn.h" |
2974 | 73 #include "ov-usr-fcn.h" |
4342 | 74 #include "ov-fcn-handle.h" |
4966 | 75 #include "ov-fcn-inline.h" |
2376 | 76 #include "ov-typeinfo.h" |
8150
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
8039
diff
changeset
|
77 #include "ov-null-mat.h" |
10325
8b3cfc1288e2
implement lazy index conversions
Jaroslav Hajek <highegg@gmail.com>
parents:
10315
diff
changeset
|
78 #include "ov-lazy-idx.h" |
2376 | 79 |
80 #include "defun.h" | |
2880 | 81 #include "error.h" |
2376 | 82 #include "gripes.h" |
83 #include "pager.h" | |
4005 | 84 #include "parse.h" |
2376 | 85 #include "pr-output.h" |
7336 | 86 #include "symtab.h" |
2376 | 87 #include "utils.h" |
88 #include "variables.h" | |
89 | |
2477 | 90 // We are likely to have a lot of octave_value objects to allocate, so |
91 // make the grow_size large. | |
3219 | 92 DEFINE_OCTAVE_ALLOCATOR2(octave_value, 1024); |
2477 | 93 |
5775 | 94 // FIXME |
2880 | 95 |
2376 | 96 // Octave's value type. |
97 | |
3536 | 98 std::string |
3203 | 99 octave_value::unary_op_as_string (unary_op op) |
100 { | |
3523 | 101 std::string retval; |
3203 | 102 |
103 switch (op) | |
104 { | |
3533 | 105 case op_not: |
3203 | 106 retval = "!"; |
107 break; | |
108 | |
4965 | 109 case op_uplus: |
110 retval = "+"; | |
111 break; | |
112 | |
3533 | 113 case op_uminus: |
3203 | 114 retval = "-"; |
115 break; | |
116 | |
3533 | 117 case op_transpose: |
3203 | 118 retval = ".'"; |
119 break; | |
120 | |
3533 | 121 case op_hermitian: |
3203 | 122 retval = "'"; |
123 break; | |
124 | |
3533 | 125 case op_incr: |
3203 | 126 retval = "++"; |
127 break; | |
128 | |
3533 | 129 case op_decr: |
3203 | 130 retval = "--"; |
131 break; | |
132 | |
133 default: | |
134 retval = "<unknown>"; | |
135 } | |
136 | |
137 return retval; | |
138 } | |
139 | |
3536 | 140 std::string |
7336 | 141 octave_value::unary_op_fcn_name (unary_op op) |
142 { | |
143 std::string retval; | |
144 | |
145 switch (op) | |
146 { | |
147 case op_not: | |
148 retval = "not"; | |
149 break; | |
150 | |
151 case op_uplus: | |
152 retval = "uplus"; | |
153 break; | |
154 | |
155 case op_uminus: | |
156 retval = "uminus"; | |
157 break; | |
158 | |
159 case op_transpose: | |
160 retval = "transpose"; | |
161 break; | |
162 | |
163 case op_hermitian: | |
164 retval = "ctranspose"; | |
165 break; | |
166 | |
167 default: | |
168 break; | |
169 } | |
170 | |
171 return retval; | |
172 } | |
173 | |
174 std::string | |
2376 | 175 octave_value::binary_op_as_string (binary_op op) |
176 { | |
3523 | 177 std::string retval; |
2376 | 178 |
179 switch (op) | |
180 { | |
3533 | 181 case op_add: |
2376 | 182 retval = "+"; |
183 break; | |
184 | |
3533 | 185 case op_sub: |
2376 | 186 retval = "-"; |
187 break; | |
188 | |
3533 | 189 case op_mul: |
2376 | 190 retval = "*"; |
191 break; | |
192 | |
3533 | 193 case op_div: |
2376 | 194 retval = "/"; |
195 break; | |
196 | |
3533 | 197 case op_pow: |
2376 | 198 retval = "^"; |
199 break; | |
200 | |
3533 | 201 case op_ldiv: |
2376 | 202 retval = "\\"; |
203 break; | |
204 | |
3533 | 205 case op_lshift: |
2903 | 206 retval = "<<"; |
207 break; | |
208 | |
3533 | 209 case op_rshift: |
2903 | 210 retval = ">>"; |
211 break; | |
212 | |
3533 | 213 case op_lt: |
2376 | 214 retval = "<"; |
215 break; | |
216 | |
3533 | 217 case op_le: |
2376 | 218 retval = "<="; |
219 break; | |
220 | |
3533 | 221 case op_eq: |
2376 | 222 retval = "=="; |
223 break; | |
224 | |
3533 | 225 case op_ge: |
2376 | 226 retval = ">="; |
227 break; | |
228 | |
3533 | 229 case op_gt: |
2376 | 230 retval = ">"; |
231 break; | |
232 | |
3533 | 233 case op_ne: |
2376 | 234 retval = "!="; |
235 break; | |
236 | |
3533 | 237 case op_el_mul: |
2376 | 238 retval = ".*"; |
239 break; | |
240 | |
3533 | 241 case op_el_div: |
2376 | 242 retval = "./"; |
243 break; | |
244 | |
3533 | 245 case op_el_pow: |
2376 | 246 retval = ".^"; |
247 break; | |
248 | |
3533 | 249 case op_el_ldiv: |
2376 | 250 retval = ".\\"; |
251 break; | |
252 | |
3533 | 253 case op_el_and: |
2376 | 254 retval = "&"; |
255 break; | |
256 | |
3533 | 257 case op_el_or: |
2376 | 258 retval = "|"; |
259 break; | |
260 | |
3533 | 261 case op_struct_ref: |
2376 | 262 retval = "."; |
263 break; | |
264 | |
265 default: | |
266 retval = "<unknown>"; | |
267 } | |
268 | |
269 return retval; | |
270 } | |
271 | |
3536 | 272 std::string |
7336 | 273 octave_value::binary_op_fcn_name (binary_op op) |
274 { | |
275 std::string retval; | |
276 | |
277 switch (op) | |
278 { | |
279 case op_add: | |
280 retval = "plus"; | |
281 break; | |
282 | |
283 case op_sub: | |
284 retval = "minus"; | |
285 break; | |
286 | |
287 case op_mul: | |
288 retval = "mtimes"; | |
289 break; | |
290 | |
291 case op_div: | |
292 retval = "mrdivide"; | |
293 break; | |
294 | |
295 case op_pow: | |
296 retval = "mpower"; | |
297 break; | |
298 | |
299 case op_ldiv: | |
300 retval = "mldivide"; | |
301 break; | |
302 | |
303 case op_lt: | |
304 retval = "lt"; | |
305 break; | |
306 | |
307 case op_le: | |
308 retval = "le"; | |
309 break; | |
310 | |
311 case op_eq: | |
312 retval = "eq"; | |
313 break; | |
314 | |
315 case op_ge: | |
316 retval = "ge"; | |
317 break; | |
318 | |
319 case op_gt: | |
320 retval = "gt"; | |
321 break; | |
322 | |
323 case op_ne: | |
324 retval = "ne"; | |
325 break; | |
326 | |
327 case op_el_mul: | |
328 retval = "times"; | |
329 break; | |
330 | |
331 case op_el_div: | |
332 retval = "rdivide"; | |
333 break; | |
334 | |
335 case op_el_pow: | |
336 retval = "power"; | |
337 break; | |
338 | |
339 case op_el_ldiv: | |
340 retval = "ldivide"; | |
341 break; | |
342 | |
343 case op_el_and: | |
344 retval = "and"; | |
345 break; | |
346 | |
347 case op_el_or: | |
348 retval = "or"; | |
349 break; | |
350 | |
351 default: | |
352 break; | |
353 } | |
354 | |
355 return retval; | |
356 } | |
357 | |
358 std::string | |
7800
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
359 octave_value::binary_op_fcn_name (compound_binary_op op) |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
360 { |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
361 std::string retval; |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
362 |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
363 switch (op) |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
364 { |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
365 case op_trans_mul: |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
366 retval = "transtimes"; |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
367 break; |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
368 |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
369 case op_mul_trans: |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
370 retval = "timestrans"; |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
371 break; |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
372 |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
373 case op_herm_mul: |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
374 retval = "hermtimes"; |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
375 break; |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
376 |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
377 case op_mul_herm: |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
378 retval = "timesherm"; |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
379 break; |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
380 |
9661
afcf852256d2
optimize / and '\ for triangular matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
9608
diff
changeset
|
381 case op_trans_ldiv: |
afcf852256d2
optimize / and '\ for triangular matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
9608
diff
changeset
|
382 retval = "transldiv"; |
afcf852256d2
optimize / and '\ for triangular matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
9608
diff
changeset
|
383 break; |
afcf852256d2
optimize / and '\ for triangular matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
9608
diff
changeset
|
384 |
afcf852256d2
optimize / and '\ for triangular matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
9608
diff
changeset
|
385 case op_herm_ldiv: |
afcf852256d2
optimize / and '\ for triangular matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
9608
diff
changeset
|
386 retval = "hermldiv"; |
afcf852256d2
optimize / and '\ for triangular matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
9608
diff
changeset
|
387 break; |
afcf852256d2
optimize / and '\ for triangular matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
9608
diff
changeset
|
388 |
8982
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
389 case op_el_and_not: |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
390 retval = "andnot"; |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
391 break; |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
392 |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
393 case op_el_or_not: |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
394 retval = "ornot"; |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
395 break; |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
396 |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
397 case op_el_not_and: |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
398 retval = "notand"; |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
399 break; |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
400 |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
401 case op_el_not_or: |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
402 retval = "notor"; |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
403 break; |
dc6bda6f9994
implement compound logical ops
Jaroslav Hajek <highegg@gmail.com>
parents:
8960
diff
changeset
|
404 |
7800
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
405 default: |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
406 break; |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
407 } |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
408 |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
409 return retval; |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
410 } |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
411 |
5861b95e9879
support for compound operators, implement trans_mul, mul_trans, herm_mul and mul_herm
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
412 std::string |
2880 | 413 octave_value::assign_op_as_string (assign_op op) |
414 { | |
3523 | 415 std::string retval; |
2880 | 416 |
417 switch (op) | |
418 { | |
3533 | 419 case op_asn_eq: |
2880 | 420 retval = "="; |
421 break; | |
422 | |
3533 | 423 case op_add_eq: |
2880 | 424 retval = "+="; |
425 break; | |
426 | |
3533 | 427 case op_sub_eq: |
2880 | 428 retval = "-="; |
429 break; | |
430 | |
3533 | 431 case op_mul_eq: |
2880 | 432 retval = "*="; |
433 break; | |
434 | |
3533 | 435 case op_div_eq: |
2880 | 436 retval = "/="; |
437 break; | |
438 | |
3533 | 439 case op_ldiv_eq: |
3204 | 440 retval = "\\="; |
441 break; | |
442 | |
4018 | 443 case op_pow_eq: |
444 retval = "^="; | |
445 break; | |
446 | |
3533 | 447 case op_lshift_eq: |
2903 | 448 retval = "<<="; |
449 break; | |
450 | |
3533 | 451 case op_rshift_eq: |
2903 | 452 retval = ">>="; |
453 break; | |
454 | |
3533 | 455 case op_el_mul_eq: |
2880 | 456 retval = ".*="; |
457 break; | |
458 | |
3533 | 459 case op_el_div_eq: |
2880 | 460 retval = "./="; |
461 break; | |
462 | |
3533 | 463 case op_el_ldiv_eq: |
3204 | 464 retval = ".\\="; |
465 break; | |
466 | |
4018 | 467 case op_el_pow_eq: |
468 retval = ".^="; | |
469 break; | |
470 | |
3533 | 471 case op_el_and_eq: |
2880 | 472 retval = "&="; |
473 break; | |
474 | |
3533 | 475 case op_el_or_eq: |
2880 | 476 retval = "|="; |
477 break; | |
478 | |
479 default: | |
480 retval = "<unknown>"; | |
481 } | |
482 | |
483 return retval; | |
484 } | |
485 | |
9607
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
486 octave_value::assign_op |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
487 octave_value::binary_op_to_assign_op (binary_op op) |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
488 { |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
489 assign_op retval; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
490 |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
491 switch (op) |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
492 { |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
493 case op_add: |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
494 retval = op_add_eq; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
495 break; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
496 case op_sub: |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
497 retval = op_sub_eq; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
498 break; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
499 case op_mul: |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
500 retval = op_mul_eq; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
501 break; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
502 case op_div: |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
503 retval = op_div_eq; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
504 break; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
505 case op_el_mul: |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
506 retval = op_el_mul_eq; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
507 break; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
508 case op_el_div: |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
509 retval = op_el_div_eq; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
510 break; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
511 case op_el_and: |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
512 retval = op_el_and_eq; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
513 break; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
514 case op_el_or: |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
515 retval = op_el_or_eq; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
516 break; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
517 default: |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
518 retval = unknown_assign_op; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
519 } |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
520 |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
521 return retval; |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
522 } |
1be3c73ed7b5
reuse temporary arrays in nested expressions
Jaroslav Hajek <highegg@gmail.com>
parents:
9546
diff
changeset
|
523 |
4254 | 524 octave_value::octave_value (short int i) |
525 : rep (new octave_scalar (i)) | |
526 { | |
527 } | |
528 | |
529 octave_value::octave_value (unsigned short int i) | |
530 : rep (new octave_scalar (i)) | |
531 { | |
532 } | |
533 | |
4233 | 534 octave_value::octave_value (int i) |
535 : rep (new octave_scalar (i)) | |
536 { | |
537 } | |
538 | |
4254 | 539 octave_value::octave_value (unsigned int i) |
540 : rep (new octave_scalar (i)) | |
541 { | |
542 } | |
543 | |
544 octave_value::octave_value (long int i) | |
545 : rep (new octave_scalar (i)) | |
546 { | |
547 } | |
548 | |
549 octave_value::octave_value (unsigned long int i) | |
550 : rep (new octave_scalar (i)) | |
551 { | |
552 } | |
553 | |
4353 | 554 #if defined (HAVE_LONG_LONG_INT) |