comparison liboctave/idx-vector.cc @ 10486:4e64fbbd5c58

allow non-integer values in ranges used for array indexing
author John W. Eaton <jwe@octave.org>
date Fri, 02 Apr 2010 14:28:34 -0400
parents ded9beac7582
children 942386d6d1a5
comparison
equal deleted inserted replaced
10485:b4e14e628fc9 10486:4e64fbbd5c58
766 octave_idx_type nnz = bnda.nnz (); 766 octave_idx_type nnz = bnda.nnz ();
767 if (nnz <= bnda.numel () / factor) 767 if (nnz <= bnda.numel () / factor)
768 rep = new idx_vector_rep (bnda, nnz); 768 rep = new idx_vector_rep (bnda, nnz);
769 else 769 else
770 rep = new idx_mask_rep (bnda, nnz); 770 rep = new idx_mask_rep (bnda, nnz);
771 }
772
773 idx_vector::idx_vector (const Range& r)
774 : rep (0)
775 {
776 if (r.nelem () > 0 && ! r.all_elements_are_ints ())
777 {
778 gripe_invalid_index (false);
779
780 Matrix m = r.matrix_value ();
781
782 rep = new idx_vector_rep (m.map (xround));
783 }
784 else
785 rep = new idx_range_rep (r);
786
787 chkerr ();
771 } 788 }
772 789
773 bool idx_vector::maybe_reduce (octave_idx_type n, const idx_vector& j, 790 bool idx_vector::maybe_reduce (octave_idx_type n, const idx_vector& j,
774 octave_idx_type nj) 791 octave_idx_type nj)
775 { 792 {