Mercurial > hg > octave-nkf
diff 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 |
line wrap: on
line diff
--- a/src/ov-base-mat.cc +++ b/src/ov-base-mat.cc @@ -121,26 +121,14 @@ { octave_value retval; - int len = idx.length (); + int n_idx = idx.length (); - switch (len) - { - case 2: - { - int nd = matrix.ndims (); + int nd = matrix.ndims (); - if (nd == 2) - { - idx_vector i = idx (0).index_vector (); - idx_vector j = idx (1).index_vector (); - - retval = MT (matrix.index (i, j, resize_ok, - MT::resize_fill_value ())); - } - else - error ("invalid number of indices (= 2) for %d-dimensional array", - nd); - } + switch (n_idx) + { + case 0: + error ("invalid number of indices (= 0) for %d-dimensional array", nd); break; case 1: @@ -153,13 +141,24 @@ default: { - Array<idx_vector> idx_vec (len); + if (n_idx == 2 && nd == 2) + { + idx_vector i = idx (0).index_vector (); + idx_vector j = idx (1).index_vector (); - for (int i = 0; i < len; i++) - idx_vec(i) = idx(i).index_vector (); + retval = MT (matrix.index (i, j, resize_ok, + MT::resize_fill_value ())); + } + else + { + Array<idx_vector> idx_vec (n_idx); - retval = MT (matrix.index (idx_vec, resize_ok, - MT::resize_fill_value ())); + for (int i = 0; i < n_idx; i++) + idx_vec(i) = idx(i).index_vector (); + + retval = MT (matrix.index (idx_vec, resize_ok, + MT::resize_fill_value ())); + } } break; }