comparison src/ov-base-mat.cc @ 4742:2527c2fd4345

[project @ 2004-02-06 00:59:45 by jwe]
author jwe
date Fri, 06 Feb 2004 00:59:45 +0000
parents a9b22513b7a6
children 8f669cc5a901
comparison
equal deleted inserted replaced
4741:e44d0ac643a5 4742:2527c2fd4345
119 octave_base_matrix<MT>::do_index_op (const octave_value_list& idx, 119 octave_base_matrix<MT>::do_index_op (const octave_value_list& idx,
120 int resize_ok) 120 int resize_ok)
121 { 121 {
122 octave_value retval; 122 octave_value retval;
123 123
124 int len = idx.length (); 124 int n_idx = idx.length ();
125 125
126 switch (len) 126 int nd = matrix.ndims ();
127 { 127
128 case 2: 128 switch (n_idx)
129 { 129 {
130 int nd = matrix.ndims (); 130 case 0:
131 131 error ("invalid number of indices (= 0) for %d-dimensional array", nd);
132 if (nd == 2) 132 break;
133
134 case 1:
135 {
136 idx_vector i = idx (0).index_vector ();
137
138 retval = MT (matrix.index (i, resize_ok, MT::resize_fill_value ()));
139 }
140 break;
141
142 default:
143 {
144 if (n_idx == 2 && nd == 2)
133 { 145 {
134 idx_vector i = idx (0).index_vector (); 146 idx_vector i = idx (0).index_vector ();
135 idx_vector j = idx (1).index_vector (); 147 idx_vector j = idx (1).index_vector ();
136 148
137 retval = MT (matrix.index (i, j, resize_ok, 149 retval = MT (matrix.index (i, j, resize_ok,
138 MT::resize_fill_value ())); 150 MT::resize_fill_value ()));
139 } 151 }
140 else 152 else
141 error ("invalid number of indices (= 2) for %d-dimensional array", 153 {
142 nd); 154 Array<idx_vector> idx_vec (n_idx);
143 } 155
144 break; 156 for (int i = 0; i < n_idx; i++)
145 157 idx_vec(i) = idx(i).index_vector ();
146 case 1: 158
147 { 159 retval = MT (matrix.index (idx_vec, resize_ok,
148 idx_vector i = idx (0).index_vector (); 160 MT::resize_fill_value ()));
149 161 }
150 retval = MT (matrix.index (i, resize_ok, MT::resize_fill_value ()));
151 }
152 break;
153
154 default:
155 {
156 Array<idx_vector> idx_vec (len);
157
158 for (int i = 0; i < len; i++)
159 idx_vec(i) = idx(i).index_vector ();
160
161 retval = MT (matrix.index (idx_vec, resize_ok,
162 MT::resize_fill_value ()));
163 } 162 }
164 break; 163 break;
165 } 164 }
166 165
167 return retval; 166 return retval;