Mercurial > hg > octave-lyh
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 +++ b/liboctave/oct-inttypes.h @@ -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 (<=)