Mercurial > hg > octave-nkf
diff liboctave/idx-vector.cc @ 10425:0677c5d80b77
rewrite 1D sparse indexing
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 19 Mar 2010 13:00:06 +0100 |
parents | 9c4daf174387 |
children | 739109ef88ee |
line wrap: on
line diff
--- a/liboctave/idx-vector.cc +++ b/liboctave/idx-vector.cc @@ -722,9 +722,25 @@ return *aowner; else { + Array<bool> retval (ext, 1); + for (octave_idx_type i = 0; i < ext; i++) + retval.xelem (i) = data[i]; + return retval; + } +} + +Array<octave_idx_type> +idx_vector::idx_mask_rep::as_array (void) +{ + if (aowner) + return aowner->find ().reshape (orig_dims); + else + { Array<bool> retval (orig_dims); - for (octave_idx_type i = 0; i < len; i++) - retval.xelem (i) = data[i]; + for (octave_idx_type i = 0, j = 0; i < ext; i++) + if (data[i]) + retval.xelem (j++) = i; + return retval; } }