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;