Mercurial > hg > octave-lyh
diff src/ov-base-sparse.cc @ 10421:99e9bae2d81e
improve sparse indexing interface
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Thu, 18 Mar 2010 14:55:52 +0100 |
parents | 12884915a8e4 |
children | fdccd69d26bd |
line wrap: on
line diff
--- a/src/ov-base-sparse.cc +++ b/src/ov-base-sparse.cc @@ -51,8 +51,6 @@ octave_idx_type n_idx = idx.length (); - int nd = matrix.ndims (); - switch (n_idx) { case 0: @@ -68,37 +66,21 @@ } break; - default: + case 2: { - if (n_idx == 2 && nd == 2) + idx_vector i = idx (0).index_vector (); + + if (! error_state) { - idx_vector i = idx (0).index_vector (); + idx_vector j = idx (1).index_vector (); if (! error_state) - { - idx_vector j = idx (1).index_vector (); - - if (! error_state) - retval = octave_value (matrix.index (i, j, resize_ok)); - } - } - else - { - Array<idx_vector> idx_vec (n_idx, 1); - - for (octave_idx_type i = 0; i < n_idx; i++) - { - idx_vec(i) = idx(i).index_vector (); - - if (error_state) - break; - } - - if (! error_state) - retval = octave_value (matrix.index (idx_vec, resize_ok)); + retval = octave_value (matrix.index (i, j, resize_ok)); } } break; + default: + error ("sparse indexing needs 1 or 2 indices"); } return retval;