# HG changeset patch # User jwe # Date 1076029185 0 # Node ID 2527c2fd4345dcbf3d11e7963b7e2dc5f7e8b140 # Parent e44d0ac643a544ac85146a9d88e78ba5f5eb5302 [project @ 2004-02-06 00:59:45 by jwe] diff -r e44d0ac643a5 -r 2527c2fd4345 src/ChangeLog --- a/src/ChangeLog Thu Feb 05 21:57:51 2004 +0000 +++ b/src/ChangeLog Fri Feb 06 00:59:45 2004 +0000 @@ -1,3 +1,8 @@ +2004-02-05 Petter Risholm + + * ov-base-mat.cc (octave_base_matrix::do_index_op): + Don't fail if number of indices is greater than 2. + 2004-02-05 John W. Eaton * data.cc (Fsize): Update for N-d objects. diff -r e44d0ac643a5 -r 2527c2fd4345 src/ov-base-mat.cc --- a/src/ov-base-mat.cc Thu Feb 05 21:57:51 2004 +0000 +++ b/src/ov-base-mat.cc Fri Feb 06 00:59:45 2004 +0000 @@ -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_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_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; }