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