Mercurial > hg > octave-nkf
annotate src/OPERATORS/op-str-str.cc @ 9931:fb6b6fcafa62
untabify files in src/OPERATORS directory
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 07 Dec 2009 14:49:48 -0500 |
parents | 95a30d00f779 |
children | ac4b97c6bf8b |
rev | line source |
---|---|
9700
95a30d00f779
fix typo from last patch
Jaroslav Hajek <highegg@gmail.com>
parents:
9699
diff
changeset
|
1 /* |
2928 | 2 |
9931
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
3 Copyright (C) 1996, 1997, 1998, 2000, 2002, 2003, 2004, 2005, 2007, |
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
4 2008, 2009John W. Eaton |
2928 | 5 |
6 This file is part of Octave. | |
7 | |
8 Octave is free software; you can redistribute it and/or modify it | |
9 under the terms of the GNU General Public License as published by the | |
7016 | 10 Free Software Foundation; either version 3 of the License, or (at your |
11 option) any later version. | |
2928 | 12 |
13 Octave is distributed in the hope that it will be useful, but WITHOUT | |
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
7016 | 19 along with Octave; see the file COPYING. If not, see |
20 <http://www.gnu.org/licenses/>. | |
2928 | 21 |
22 */ | |
23 | |
24 #ifdef HAVE_CONFIG_H | |
25 #include <config.h> | |
26 #endif | |
27 | |
28 #include "gripes.h" | |
4055 | 29 #include "oct-obj.h" |
2928 | 30 #include "ov.h" |
31 #include "ov-str-mat.h" | |
32 #include "ov-typeinfo.h" | |
8150
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
33 #include "ov-null-mat.h" |
2928 | 34 #include "ops.h" |
35 | |
3203 | 36 // string unary ops. |
37 | |
5279 | 38 DEFUNOP (transpose, char_matrix_str) |
3203 | 39 { |
40 CAST_UNOP_ARG (const octave_char_matrix_str&); | |
41 | |
4673 | 42 if (v.ndims () > 2) |
43 { | |
44 error ("transpose not defined for N-d objects"); | |
45 return octave_value (); | |
46 } | |
47 else | |
9699
d896036d975b
additional octave_value character array constructor update
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
48 return octave_value (v.char_matrix_value().transpose (), |
9931
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
49 a.is_sq_string () ? '\'' : '"'); |
3203 | 50 } |
51 | |
2928 | 52 // string by string ops. |
53 | |
9931
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
54 #define DEFCHARNDBINOP_FN(name, op, t1, t2, e1, e2, f) \ |
6456 | 55 BINOPDECL (name, a1, a2) \ |
56 { \ | |
57 dim_vector a1_dims = a1.dims (); \ | |
58 dim_vector a2_dims = a2.dims (); \ | |
59 \ | |
60 bool a1_is_scalar = a1_dims.all_ones (); \ | |
61 bool a2_is_scalar = a2_dims.all_ones (); \ | |
62 \ | |
63 CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \ | |
64 \ | |
65 if (a1_is_scalar) \ | |
66 { \ | |
9931
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
67 if (a2_is_scalar) \ |
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
68 return octave_value ((v1.e1 ## _value ())(0) op (v2.e2 ## _value ())(0)); \ |
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
69 else \ |
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
70 return octave_value (f ((v1.e1 ## _value ())(0), v2.e2 ## _value ())); \ |
6456 | 71 } \ |
72 else \ | |
73 { \ | |
9931
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
74 if (a2_is_scalar) \ |
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
75 return octave_value (f (v1.e1 ## _value (), (v2.e2 ## _value ())(0))); \ |
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
76 else \ |
fb6b6fcafa62
untabify files in src/OPERATORS directory
John W. Eaton <jwe@octave.org>
parents:
9700
diff
changeset
|
77 return octave_value (f (v1.e1 ## _value (), v2.e2 ## _value ())); \ |
6456 | 78 } \ |
79 } | |
2928 | 80 |
6456 | 81 DEFCHARNDBINOP_FN (lt, <, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_lt) |
82 DEFCHARNDBINOP_FN (le, <=, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_le) | |
83 DEFCHARNDBINOP_FN (eq, ==, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_eq) | |
84 DEFCHARNDBINOP_FN (ge, >=, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_ge) | |
85 DEFCHARNDBINOP_FN (gt, >, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_gt) | |
86 DEFCHARNDBINOP_FN (ne, !=, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_ne) | |
2928 | 87 |
88 DEFASSIGNOP (assign, char_matrix_str, char_matrix_str) | |
89 { | |
90 CAST_BINOP_ARGS (octave_char_matrix_str&, const octave_char_matrix_str&); | |
91 | |
92 v1.assign (idx, v2.char_matrix_value ()); | |
93 return octave_value (); | |
94 } | |
95 | |
8150
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
96 DEFNULLASSIGNOP_FN (null_assign, char_matrix_str, delete_elements) |
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
97 |
5533 | 98 DEFNDCHARCATOP_FN (str_str, char_matrix_str, char_matrix_str, concat) |
4915 | 99 |
2928 | 100 void |
101 install_str_str_ops (void) | |
102 { | |
3538 | 103 INSTALL_UNOP (op_transpose, octave_char_matrix_str, transpose); |
5279 | 104 INSTALL_UNOP (op_transpose, octave_char_matrix_sq_str, transpose); |
105 | |
3538 | 106 INSTALL_UNOP (op_hermitian, octave_char_matrix_str, transpose); |
5279 | 107 INSTALL_UNOP (op_hermitian, octave_char_matrix_sq_str, transpose); |
3203 | 108 |
6456 | 109 INSTALL_BINOP (op_lt, octave_char_matrix_str, octave_char_matrix_str, lt); |
110 INSTALL_BINOP (op_lt, octave_char_matrix_str, octave_char_matrix_sq_str, lt); | |
111 INSTALL_BINOP (op_lt, octave_char_matrix_sq_str, octave_char_matrix_str, lt); | |
112 INSTALL_BINOP (op_lt, octave_char_matrix_sq_str, octave_char_matrix_sq_str, lt); | |
113 | |
114 INSTALL_BINOP (op_le, octave_char_matrix_str, octave_char_matrix_str, le); | |
115 INSTALL_BINOP (op_le, octave_char_matrix_str, octave_char_matrix_sq_str, le); | |
116 INSTALL_BINOP (op_le, octave_char_matrix_sq_str, octave_char_matrix_str, le); | |
117 INSTALL_BINOP (op_le, octave_char_matrix_sq_str, octave_char_matrix_sq_str, le); | |
118 | |
3538 | 119 INSTALL_BINOP (op_eq, octave_char_matrix_str, octave_char_matrix_str, eq); |
5279 | 120 INSTALL_BINOP (op_eq, octave_char_matrix_str, octave_char_matrix_sq_str, eq); |
121 INSTALL_BINOP (op_eq, octave_char_matrix_sq_str, octave_char_matrix_str, eq); | |
122 INSTALL_BINOP (op_eq, octave_char_matrix_sq_str, octave_char_matrix_sq_str, eq); | |
6456 | 123 |
124 INSTALL_BINOP (op_ge, octave_char_matrix_str, octave_char_matrix_str, ge); | |
125 INSTALL_BINOP (op_ge, octave_char_matrix_str, octave_char_matrix_sq_str, ge); | |
126 INSTALL_BINOP (op_ge, octave_char_matrix_sq_str, octave_char_matrix_str, ge); | |
127 INSTALL_BINOP (op_ge, octave_char_matrix_sq_str, octave_char_matrix_sq_str, ge); | |
128 | |
129 INSTALL_BINOP (op_gt, octave_char_matrix_str, octave_char_matrix_str, gt); | |
130 INSTALL_BINOP (op_gt, octave_char_matrix_str, octave_char_matrix_sq_str, gt); | |
131 INSTALL_BINOP (op_gt, octave_char_matrix_sq_str, octave_char_matrix_str, gt); | |
132 INSTALL_BINOP (op_gt, octave_char_matrix_sq_str, octave_char_matrix_sq_str, gt); | |
133 | |
3538 | 134 INSTALL_BINOP (op_ne, octave_char_matrix_str, octave_char_matrix_str, ne); |
5279 | 135 INSTALL_BINOP (op_ne, octave_char_matrix_str, octave_char_matrix_sq_str, ne); |
136 INSTALL_BINOP (op_ne, octave_char_matrix_sq_str, octave_char_matrix_str, ne); | |
137 INSTALL_BINOP (op_ne, octave_char_matrix_sq_str, octave_char_matrix_sq_str, ne); | |
2928 | 138 |
4915 | 139 INSTALL_CATOP (octave_char_matrix_str, octave_char_matrix_str, str_str); |
5279 | 140 INSTALL_CATOP (octave_char_matrix_str, octave_char_matrix_sq_str, str_str); |
141 INSTALL_CATOP (octave_char_matrix_sq_str, octave_char_matrix_str, str_str); | |
142 INSTALL_CATOP (octave_char_matrix_sq_str, octave_char_matrix_sq_str, str_str); | |
4915 | 143 |
3538 | 144 INSTALL_ASSIGNOP (op_asn_eq, octave_char_matrix_str, octave_char_matrix_str, assign); |
5279 | 145 INSTALL_ASSIGNOP (op_asn_eq, octave_char_matrix_str, octave_char_matrix_sq_str, assign); |
146 INSTALL_ASSIGNOP (op_asn_eq, octave_char_matrix_sq_str, octave_char_matrix_str, assign); | |
147 INSTALL_ASSIGNOP (op_asn_eq, octave_char_matrix_sq_str, octave_char_matrix_sq_str, assign); | |
8150
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
148 |
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
149 INSTALL_ASSIGNOP (op_asn_eq, octave_char_matrix_str, octave_null_matrix, null_assign); |
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
150 INSTALL_ASSIGNOP (op_asn_eq, octave_char_matrix_str, octave_null_str, null_assign); |
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
151 INSTALL_ASSIGNOP (op_asn_eq, octave_char_matrix_str, octave_null_sq_str, null_assign); |
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
152 INSTALL_ASSIGNOP (op_asn_eq, octave_char_matrix_sq_str, octave_null_matrix, null_assign); |
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
153 INSTALL_ASSIGNOP (op_asn_eq, octave_char_matrix_sq_str, octave_null_str, null_assign); |
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
154 INSTALL_ASSIGNOP (op_asn_eq, octave_char_matrix_sq_str, octave_null_sq_str, null_assign); |
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
155 |
2928 | 156 } |
157 | |
158 /* | |
159 ;;; Local Variables: *** | |
160 ;;; mode: C++ *** | |
161 ;;; End: *** | |
162 */ |