Mercurial > jwe > octave
diff libinterp/octave-value/ov-range.cc @ 30858:fc3bd70cd1be stable
eliminate range<T>::make_constant function
Overloading ranges as a way to create constant arrays adds complexity
to the range class for limited benefit. It is currently only used for
double-valued ranges and only provides constant row vectors. If this
optimization is determined to be useful, it would probably be best to
provide a data type that allows N-d constant arrays. The legacy range
class was revived in a previous changeset so that constant ranges
(increment == 0) can be loaded from existing data files and converted
to ordinary arrays automatically.
* Range.h (range<T>::make_constant): Delete. Remove all uses.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 22 Mar 2022 00:01:53 -0400 |
parents | 95725e6ad9c1 |
children | eba0a86471b9 |
line wrap: on
line diff
--- a/libinterp/octave-value/ov-range.cc Mon Mar 21 23:58:35 2022 -0400 +++ b/libinterp/octave-value/ov-range.cc Tue Mar 22 00:01:53 2022 -0400 @@ -766,13 +766,7 @@ if (! is) error ("load: failed to load range constant"); - if (inc != T (0)) - r = octave::range<T> (base, inc, limit, rev); - else - { - octave_idx_type numel = static_cast<octave_idx_type> (limit); - r = octave::range<T>::make_constant (base, numel, rev); - } + r = octave::range<T> (base, inc, limit, rev); return true; } @@ -946,13 +940,8 @@ if (swap) swap_bytes<sizeof (bool)> (&rev); } - if (inc != T (0)) - r = octave::range<T> (bas, inc, lim, rev); - else - { - octave_idx_type numel = static_cast<octave_idx_type> (lim); - r = octave::range<T>::make_constant (bas, numel, rev); - } + + r = octave::range<T> (bas, inc, lim, rev); return true; } @@ -1280,13 +1269,7 @@ bool rev = with_reverse ? static_cast<bool> (rangevals[3]) : false; - if (rangevals[2] != T (0)) - r = octave::range<T> (rangevals[0], rangevals[2], rangevals[1], rev); - else - { - octave_idx_type numel = static_cast<octave_idx_type> (rangevals[1]); - r = octave::range<T>::make_constant (rangevals[0], numel, rev); - } + r = octave::range<T> (rangevals[0], rangevals[2], rangevals[1], rev); } H5Tclose (range_type);