diff liboctave/oct-inttypes.h @ 4920:b22a7a1db0d5

[project @ 2004-07-27 18:15:25 by jwe]
author jwe
date Tue, 27 Jul 2004 18:16:18 +0000
parents a1073eef650c
children 1a499d0c58f5
line wrap: on
line diff
--- a/liboctave/oct-inttypes.h	Tue Jul 27 15:22:51 2004 +0000
+++ b/liboctave/oct-inttypes.h	Tue Jul 27 18:16:18 2004 +0000
@@ -279,7 +279,7 @@
   octave_int<T1> \
   operator OP (const octave_int<T1>& x, const T2& y) \
   { \
-    return x.value () OP y; \
+    return ((x.value () OP y) > std::numeric_limits<T1>::max ()) ? 0 : (x.value () OP y); \
   }
 
 OCTAVE_INT_BITSHIFT_OP (<<)
@@ -287,12 +287,13 @@
 
 template <class T>
 octave_int<T>
-bitshift (const octave_int<T>& a, int n)
+bitshift (const octave_int<T>& a, int n,
+	  const octave_int<T>& mask = std::numeric_limits<T>::max ())
 {
   if (n > 0)
-    return a << n;
+    return (a.value () << n) & mask.value ();
   else if (n < 0)
-    return a >> -n;
+    return (a.value () >> -n) & mask.value ();
   else
     return a;
 }