Mercurial > octave-nkf
comparison src/OPERATORS/op-str-str.cc @ 6456:7f5316cadaa2
[project @ 2007-03-26 16:18:26 by jwe]
author | jwe |
---|---|
date | Mon, 26 Mar 2007 16:18:26 +0000 |
parents | 667ad2becb63 |
children | 93c65f2a5668 |
comparison
equal
deleted
inserted
replaced
6455:e68b6921b221 | 6456:7f5316cadaa2 |
---|---|
48 a.is_sq_string () ? '\'' : '"'); | 48 a.is_sq_string () ? '\'' : '"'); |
49 } | 49 } |
50 | 50 |
51 // string by string ops. | 51 // string by string ops. |
52 | 52 |
53 DEFBINOP (eq, char_matrix_str, char_matrix_str) | 53 #define DEFCHARNDBINOP_FN(name, op, t1, t2, e1, e2, f) \ |
54 { | 54 BINOPDECL (name, a1, a2) \ |
55 CAST_BINOP_ARGS (const octave_char_matrix_str&, | 55 { \ |
56 const octave_char_matrix_str&); | 56 dim_vector a1_dims = a1.dims (); \ |
57 dim_vector a2_dims = a2.dims (); \ | |
58 \ | |
59 bool a1_is_scalar = a1_dims.all_ones (); \ | |
60 bool a2_is_scalar = a2_dims.all_ones (); \ | |
61 \ | |
62 CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \ | |
63 \ | |
64 if (a1_is_scalar) \ | |
65 { \ | |
66 if (a2_is_scalar) \ | |
67 return octave_value ((v1.e1 ## _value ())(0) op (v2.e2 ## _value ())(0)); \ | |
68 else \ | |
69 return octave_value (f ((v1.e1 ## _value ())(0), v2.e2 ## _value ())); \ | |
70 } \ | |
71 else \ | |
72 { \ | |
73 if (a2_is_scalar) \ | |
74 return octave_value (f (v1.e1 ## _value (), (v2.e2 ## _value ())(0))); \ | |
75 else \ | |
76 return octave_value (f (v1.e1 ## _value (), v2.e2 ## _value ())); \ | |
77 } \ | |
78 } | |
57 | 79 |
58 charMatrix cm1 = v1.char_matrix_value (); | 80 DEFCHARNDBINOP_FN (lt, <, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_lt) |
59 charMatrix cm2 = v2.char_matrix_value (); | 81 DEFCHARNDBINOP_FN (le, <=, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_le) |
60 | 82 DEFCHARNDBINOP_FN (eq, ==, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_eq) |
61 if (cm1.rows () == 1 && cm1.columns () == 1) | 83 DEFCHARNDBINOP_FN (ge, >=, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_ge) |
62 { | 84 DEFCHARNDBINOP_FN (gt, >, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_gt) |
63 if (cm2.rows () == 1 && cm2.columns () == 1) | 85 DEFCHARNDBINOP_FN (ne, !=, char_matrix_str, char_matrix_str, char_array, char_array, mx_el_ne) |
64 return octave_value (cm1 (0, 0) == cm2 (0, 0)); | |
65 else | |
66 SC_MX_BOOL_OP (char, c, cm1 (0, 0), charMatrix, m, cm2, | |
67 c == m (i, j), 0.0); | |
68 } | |
69 else | |
70 { | |
71 int cm2_nr = cm2.rows (); | |
72 int cm2_nc = cm2.cols (); | |
73 | |
74 if (cm2_nr == 1 && cm2_nc == 1) | |
75 MX_SC_BOOL_OP (charMatrix, m, cm1, char, c, cm2 (0, 0), | |
76 c == m (i, j), 0.0); | |
77 else | |
78 MX_MX_BOOL_OP (charMatrix, m1, cm1, charMatrix, m2, cm2, | |
79 m1 (i, j) == m2 (i, j), "==", 0.0, 1.0); | |
80 } | |
81 } | |
82 | |
83 DEFBINOP (ne, char_matrix_str, char_matrix_str) | |
84 { | |
85 CAST_BINOP_ARGS (const octave_char_matrix_str&, | |
86 const octave_char_matrix_str&); | |
87 | |
88 charMatrix cm1 = v1.char_matrix_value (); | |
89 charMatrix cm2 = v2.char_matrix_value (); | |
90 | |
91 if (cm1.rows () == 1 && cm1.columns () == 1) | |
92 { | |
93 if (cm2.rows () == 1 && cm2.columns () == 1) | |
94 return octave_value (cm1 (0, 0) != cm2 (0, 0)); | |
95 else | |
96 SC_MX_BOOL_OP (char, c, cm1 (0, 0), charMatrix, m, cm2, | |
97 c != m (i, j), 1.0); | |
98 } | |
99 else | |
100 { | |
101 if (cm2.rows () == 1 && cm2.columns () == 1) | |
102 MX_SC_BOOL_OP (charMatrix, m, cm1, char, c, cm2 (0, 0), | |
103 c != m (i, j), 1.0); | |
104 else | |
105 MX_MX_BOOL_OP (charMatrix, m1, cm1, charMatrix, m2, cm2, | |
106 m1 (i, j) != m2 (i, j), "!=", 1.0, 0.0); | |
107 } | |
108 } | |
109 | 86 |
110 DEFASSIGNOP (assign, char_matrix_str, char_matrix_str) | 87 DEFASSIGNOP (assign, char_matrix_str, char_matrix_str) |
111 { | 88 { |
112 CAST_BINOP_ARGS (octave_char_matrix_str&, const octave_char_matrix_str&); | 89 CAST_BINOP_ARGS (octave_char_matrix_str&, const octave_char_matrix_str&); |
113 | 90 |
124 INSTALL_UNOP (op_transpose, octave_char_matrix_sq_str, transpose); | 101 INSTALL_UNOP (op_transpose, octave_char_matrix_sq_str, transpose); |
125 | 102 |
126 INSTALL_UNOP (op_hermitian, octave_char_matrix_str, transpose); | 103 INSTALL_UNOP (op_hermitian, octave_char_matrix_str, transpose); |
127 INSTALL_UNOP (op_hermitian, octave_char_matrix_sq_str, transpose); | 104 INSTALL_UNOP (op_hermitian, octave_char_matrix_sq_str, transpose); |
128 | 105 |
106 INSTALL_BINOP (op_lt, octave_char_matrix_str, octave_char_matrix_str, lt); | |
107 INSTALL_BINOP (op_lt, octave_char_matrix_str, octave_char_matrix_sq_str, lt); | |
108 INSTALL_BINOP (op_lt, octave_char_matrix_sq_str, octave_char_matrix_str, lt); | |
109 INSTALL_BINOP (op_lt, octave_char_matrix_sq_str, octave_char_matrix_sq_str, lt); | |
110 | |
111 INSTALL_BINOP (op_le, octave_char_matrix_str, octave_char_matrix_str, le); | |
112 INSTALL_BINOP (op_le, octave_char_matrix_str, octave_char_matrix_sq_str, le); | |
113 INSTALL_BINOP (op_le, octave_char_matrix_sq_str, octave_char_matrix_str, le); | |
114 INSTALL_BINOP (op_le, octave_char_matrix_sq_str, octave_char_matrix_sq_str, le); | |
115 | |
129 INSTALL_BINOP (op_eq, octave_char_matrix_str, octave_char_matrix_str, eq); | 116 INSTALL_BINOP (op_eq, octave_char_matrix_str, octave_char_matrix_str, eq); |
130 INSTALL_BINOP (op_eq, octave_char_matrix_str, octave_char_matrix_sq_str, eq); | 117 INSTALL_BINOP (op_eq, octave_char_matrix_str, octave_char_matrix_sq_str, eq); |
131 INSTALL_BINOP (op_eq, octave_char_matrix_sq_str, octave_char_matrix_str, eq); | 118 INSTALL_BINOP (op_eq, octave_char_matrix_sq_str, octave_char_matrix_str, eq); |
132 INSTALL_BINOP (op_eq, octave_char_matrix_sq_str, octave_char_matrix_sq_str, eq); | 119 INSTALL_BINOP (op_eq, octave_char_matrix_sq_str, octave_char_matrix_sq_str, eq); |
133 | 120 |
121 INSTALL_BINOP (op_ge, octave_char_matrix_str, octave_char_matrix_str, ge); | |
122 INSTALL_BINOP (op_ge, octave_char_matrix_str, octave_char_matrix_sq_str, ge); | |
123 INSTALL_BINOP (op_ge, octave_char_matrix_sq_str, octave_char_matrix_str, ge); | |
124 INSTALL_BINOP (op_ge, octave_char_matrix_sq_str, octave_char_matrix_sq_str, ge); | |
125 | |
126 INSTALL_BINOP (op_gt, octave_char_matrix_str, octave_char_matrix_str, gt); | |
127 INSTALL_BINOP (op_gt, octave_char_matrix_str, octave_char_matrix_sq_str, gt); | |
128 INSTALL_BINOP (op_gt, octave_char_matrix_sq_str, octave_char_matrix_str, gt); | |
129 INSTALL_BINOP (op_gt, octave_char_matrix_sq_str, octave_char_matrix_sq_str, gt); | |
130 | |
134 INSTALL_BINOP (op_ne, octave_char_matrix_str, octave_char_matrix_str, ne); | 131 INSTALL_BINOP (op_ne, octave_char_matrix_str, octave_char_matrix_str, ne); |
135 INSTALL_BINOP (op_ne, octave_char_matrix_str, octave_char_matrix_sq_str, ne); | 132 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); | 133 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); | 134 INSTALL_BINOP (op_ne, octave_char_matrix_sq_str, octave_char_matrix_sq_str, ne); |
138 | 135 |