comparison 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
comparison
equal deleted inserted replaced
4905:f7a337f3fd9e 4906:6754342ef7ad
178 178
179 T value (void) const { return ival; } 179 T value (void) const { return ival; }
180 180
181 bool operator ! (void) const { return ! ival; } 181 bool operator ! (void) const { return ! ival; }
182 182
183 T operator + (void) const { return ival; } 183 octave_int<T> operator + (void) const { return *this; }
184 184
185 T operator - (void) const 185 octave_int<T> operator - (void) const
186 { 186 {
187 return std::numeric_limits<T>::is_signed ? -ival : 0; 187 return std::numeric_limits<T>::is_signed ? -ival : 0;
188 } 188 }
189 189
190 operator double (void) const { return static_cast<double> (value ()); } 190 operator double (void) const { return static_cast<double> (value ()); }
203 double tx = static_cast<double> (x.value ()); 203 double tx = static_cast<double> (x.value ());
204 ival = OCTAVE_INT_FIT_TO_RANGE (t - tx, T); 204 ival = OCTAVE_INT_FIT_TO_RANGE (t - tx, T);
205 return *this; 205 return *this;
206 } 206 }
207 207
208 octave_int<T> min (void) const { return std::numeric_limits<T>::min (); }
209 octave_int<T> max (void) const { return std::numeric_limits<T>::max (); }
210
208 private: 211 private:
209 212
210 T ival; 213 T ival;
211 }; 214 };
212 215
246 { \ 249 { \
247 double tx = static_cast<double> (x.value ()); \ 250 double tx = static_cast<double> (x.value ()); \
248 double ty = static_cast<double> (y.value ()); \ 251 double ty = static_cast<double> (y.value ()); \
249 double r = tx OP ty; \ 252 double r = tx OP ty; \
250 return OCTAVE_INT_FIT_TO_RANGE2 (r, T1, T2); \ 253 return OCTAVE_INT_FIT_TO_RANGE2 (r, T1, T2); \
251 } \ 254 }
252 255
253 OCTAVE_INT_BIN_OP(+) 256 OCTAVE_INT_BIN_OP(+)
254 OCTAVE_INT_BIN_OP(-) 257 OCTAVE_INT_BIN_OP(-)
255 OCTAVE_INT_BIN_OP(*) 258 OCTAVE_INT_BIN_OP(*)
256 OCTAVE_INT_BIN_OP(/) 259 OCTAVE_INT_BIN_OP(/)
260
261 #define OCTAVE_INT_BITCMP_OP(OP) \
262 \
263 template <class T> \
264 octave_int<T> \
265 operator OP (const octave_int<T>& x, const octave_int<T>& y) \
266 { \
267 return x.value () OP y.value (); \
268 }
269
270 OCTAVE_INT_BITCMP_OP (&)
271 OCTAVE_INT_BITCMP_OP (|)
272 OCTAVE_INT_BITCMP_OP (^)
273
274 #define OCTAVE_INT_BITSHIFT_OP(OP) \
275 \
276 template <class T1, class T2> \
277 octave_int<T1> \
278 operator OP (const octave_int<T1>& x, const T2& y) \
279 { \
280 return x.value () OP y; \
281 }
282
283 OCTAVE_INT_BITSHIFT_OP (<<)
284 OCTAVE_INT_BITSHIFT_OP (>>)
257 285
258 #define OCTAVE_INT_CMP_OP(OP) \ 286 #define OCTAVE_INT_CMP_OP(OP) \
259 \ 287 \
260 template <class T1, class T2> \ 288 template <class T1, class T2> \
261 bool \ 289 bool \
262 operator OP (const octave_int<T1>& x, const octave_int<T2>& y) \ 290 operator OP (const octave_int<T1>& x, const octave_int<T2>& y) \
263 { \ 291 { \
264 return x.value () OP y.value (); \ 292 return x.value () OP y.value (); \
265 } \ 293 }
266 294
267 OCTAVE_INT_CMP_OP (<) 295 OCTAVE_INT_CMP_OP (<)
268 OCTAVE_INT_CMP_OP (<=) 296 OCTAVE_INT_CMP_OP (<=)
269 OCTAVE_INT_CMP_OP (>=) 297 OCTAVE_INT_CMP_OP (>=)
270 OCTAVE_INT_CMP_OP (>) 298 OCTAVE_INT_CMP_OP (>)