Mercurial > hg > octave-lyh
diff src/ov-base-sparse.cc @ 10490:fdccd69d26bd
rewrite sparse null assignment (part 2)
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Tue, 06 Apr 2010 13:42:59 +0200 |
parents | 99e9bae2d81e |
children | aac9f4265048 |
line wrap: on
line diff
--- a/src/ov-base-sparse.cc +++ b/src/ov-base-sparse.cc @@ -182,12 +182,36 @@ { octave_idx_type len = idx.length (); - Array<idx_vector> ra_idx (len, 1); + switch (len) + { + case 1: + { + idx_vector i = idx (0).index_vector (); + + if (! error_state) + matrix.delete_elements (i); + + break; + } - for (octave_idx_type i = 0; i < len; i++) - ra_idx(i) = idx(i).index_vector (); + case 2: + { + idx_vector i = idx (0).index_vector (); + + if (! error_state) + { + idx_vector j = idx (1).index_vector (); - matrix.maybe_delete_elements (ra_idx); + if (! error_state) + matrix.delete_elements (i, j); + } + + break; + } + + default: + error ("sparse indexing needs 1 or 2 indices"); + } // Invalidate the matrix type typ.invalidate_type ();