Mercurial > jwe > octave
diff libinterp/octave-value/ov-base.h @ 28651:e26201931ea3
new template class for octave_range objects
* ov-range.h, ov-range.cc (class octave_range): Convert to template.
For now, use specializations to preserve existing behavior for
double-precision ranges. Change all uses.
* ov.h, ov.cc: Update range constructors to create range objects for
integer and float ranges. Provide value extractor functions for
range<T> types that forward to virtual functions in the
octave_base_value class.
* ov-base.cc: Provide virtual value extractor functions for range<T>
types.
* ov-range-traits.h: New file.
* libinterp/octave-value/module.mk: Update.
* Range.h, Range.cc (Range::Range): Deprecate public constructors.
* pt-eval.h, pt-eval.cc (tree_evaluator::execute_range_loop):
New template function.
(tree_evaluator::visit_simple_for_command): Use it to handle looping
when the loop variable expression is a range.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 12 Aug 2020 12:14:17 -0400 |
parents | 0237b10e3943 |
children | 853e60367cb6 |
line wrap: on
line diff
--- a/libinterp/octave-value/ov-base.h Thu Aug 20 17:42:26 2020 -0400 +++ b/libinterp/octave-value/ov-base.h Wed Aug 12 12:14:17 2020 -0400 @@ -622,8 +622,26 @@ virtual Array<std::string> cellstr_value (void) const; + virtual octave::range<float> float_range_value (void) const; + virtual octave::range<double> range_value (void) const; + virtual octave::range<octave_int8> int8_range_value (void) const; + + virtual octave::range<octave_int16> int16_range_value (void) const; + + virtual octave::range<octave_int32> int32_range_value (void) const; + + virtual octave::range<octave_int64> int64_range_value (void) const; + + virtual octave::range<octave_uint8> uint8_range_value (void) const; + + virtual octave::range<octave_uint16> uint16_range_value (void) const; + + virtual octave::range<octave_uint32> uint32_range_value (void) const; + + virtual octave::range<octave_uint64> uint64_range_value (void) const; + virtual octave_map map_value (void) const; virtual octave_scalar_map scalar_map_value (void) const;