diff liboctave/Range.h @ 8971:967a692ddfe2

fix range arithmetics
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 13 Mar 2009 12:18:50 +0100
parents d865363208d6
children 672e1b49e01e
line wrap: on
line diff
--- a/liboctave/Range.h
+++ b/liboctave/Range.h
@@ -40,7 +40,7 @@
 
   Range (const Range& r)
     : rng_base (r.rng_base), rng_limit (r.rng_limit), rng_inc (r.rng_inc),
-      rng_nelem (r.rng_nelem), cache () { }
+      rng_nelem (r.rng_nelem), cache (r.cache) { }
 
   Range (double b, double l)
     : rng_base (b), rng_limit (l), rng_inc (1),
@@ -51,9 +51,7 @@
       rng_nelem (nelem_internal ()), cache () { }
 
   // For operators' usage (to preserve element count).
-  Range (double b, double i, octave_idx_type n)
-    : rng_base (b), rng_limit (b + n * i), rng_inc (i), 
-      rng_nelem (n), cache () { }
+  Range (double b, double i, octave_idx_type n);
 
   double base (void) const { return rng_base; }
   double limit (void) const { return rng_limit; }
@@ -109,6 +107,14 @@
   friend OCTAVE_API std::ostream& operator << (std::ostream& os, const Range& r);
   friend OCTAVE_API std::istream& operator >> (std::istream& is, Range& r);
 
+  friend OCTAVE_API Range operator - (const Range& r);
+  friend OCTAVE_API Range operator + (double x, const Range& r);
+  friend OCTAVE_API Range operator + (const Range& r, double x);
+  friend OCTAVE_API Range operator - (double x, const Range& r);
+  friend OCTAVE_API Range operator - (const Range& r, double x);
+  friend OCTAVE_API Range operator * (double x, const Range& r);
+  friend OCTAVE_API Range operator * (const Range& r, double x);
+
   void print_range (void);
 
  private:
@@ -124,6 +130,7 @@
   octave_idx_type nelem_internal (void) const;
 
   void clear_cache (void) const { cache.resize (0, 0); }
+
 };
 
 extern OCTAVE_API Range operator - (const Range& r);