Mercurial > hg > octave-lyh
diff src/ov-range.cc @ 10605:1834132fb50b
allow non-integer ranges as indices conditionally
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 05 May 2010 14:20:58 -0400 |
parents | 57a59eae83cc |
children | 58bcda68ac11 |
line wrap: on
line diff
--- a/src/ov-range.cc +++ b/src/ov-range.cc @@ -30,6 +30,8 @@ #include "lo-ieee.h" #include "lo-utils.h" +#include "defun.h" +#include "variables.h" #include "gripes.h" #include "ops.h" #include "oct-obj.h" @@ -142,6 +144,25 @@ } } +idx_vector +octave_range::index_vector (void) const +{ + if (idx_cache) + return *idx_cache; + else + { + if (range.all_elements_are_ints ()) + return set_idx_cache (idx_vector (range)); + else + { + warning_with_id ("Octave:allow-noninteger-ranges-as-indices", + "rounding non-integer range used as index to nearest integer"); + + return octave_value (matrix_value ()).round ().index_vector (); + } + } +} + double octave_range::double_value (bool) const {