diff liboctave/oct-inttypes.h @ 4906:6754342ef7ad

[project @ 2004-06-23 11:11:50 by jwe]
author jwe
date Wed, 23 Jun 2004 11:11:51 +0000
parents bd043a433918
children 5c9e36402f17
line wrap: on
line diff
--- a/liboctave/oct-inttypes.h	Thu Jun 17 04:14:36 2004 +0000
+++ b/liboctave/oct-inttypes.h	Wed Jun 23 11:11:51 2004 +0000
@@ -180,9 +180,9 @@
 
   bool operator ! (void) const { return ! ival; }
 
-  T operator + (void) const { return ival; }
+  octave_int<T> operator + (void) const { return *this; }
 
-  T operator - (void) const
+  octave_int<T> operator - (void) const
   {
     return std::numeric_limits<T>::is_signed ? -ival : 0;
   }
@@ -205,6 +205,9 @@
     return *this;
   }
 
+  octave_int<T> min (void) const { return std::numeric_limits<T>::min (); }
+  octave_int<T> max (void) const { return std::numeric_limits<T>::max (); }
+
 private:
 
   T ival;
@@ -248,13 +251,38 @@
     double ty = static_cast<double> (y.value ()); \
     double r = tx OP ty; \
     return OCTAVE_INT_FIT_TO_RANGE2 (r, T1, T2); \
-  } \
+  }
 
 OCTAVE_INT_BIN_OP(+)
 OCTAVE_INT_BIN_OP(-)
 OCTAVE_INT_BIN_OP(*)
 OCTAVE_INT_BIN_OP(/)
 
+#define OCTAVE_INT_BITCMP_OP(OP) \
+ \
+  template <class T> \
+  octave_int<T> \
+  operator OP (const octave_int<T>& x, const octave_int<T>& y) \
+  { \
+    return x.value () OP y.value (); \
+  }
+
+OCTAVE_INT_BITCMP_OP (&)
+OCTAVE_INT_BITCMP_OP (|)
+OCTAVE_INT_BITCMP_OP (^)
+
+#define OCTAVE_INT_BITSHIFT_OP(OP) \
+ \
+  template <class T1, class T2> \
+  octave_int<T1> \
+  operator OP (const octave_int<T1>& x, const T2& y) \
+  { \
+    return x.value () OP y; \
+  }
+
+OCTAVE_INT_BITSHIFT_OP (<<)
+OCTAVE_INT_BITSHIFT_OP (>>)
+
 #define OCTAVE_INT_CMP_OP(OP) \
  \
   template <class T1, class T2> \
@@ -262,7 +290,7 @@
   operator OP (const octave_int<T1>& x, const octave_int<T2>& y) \
   { \
     return x.value () OP y.value (); \
-  } \
+  }
 
 OCTAVE_INT_CMP_OP (<)
 OCTAVE_INT_CMP_OP (<=)