00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifdef HAVE_CONFIG_H
00024 #include <config.h>
00025 #endif
00026
00027 #include "oct-inttypes.h"
00028
00029 #define INSTANTIATE_INT_DOUBLE_BIN_OP(T, OP) \
00030 template octave_int<T> operator OP (const octave_int<T>&, double)
00031
00032 #define INSTANTIATE_INT_DOUBLE_BIN_OPS(T) \
00033 INSTANTIATE_INT_DOUBLE_BIN_OP (T, +); \
00034 INSTANTIATE_INT_DOUBLE_BIN_OP (T, -); \
00035 INSTANTIATE_INT_DOUBLE_BIN_OP (T, *); \
00036 INSTANTIATE_INT_DOUBLE_BIN_OP (T, /)
00037
00038 #define INSTANTIATE_DOUBLE_INT_BIN_OP(T, OP) \
00039 template octave_int<T> operator OP (double, const octave_int<T>&)
00040
00041 #define INSTANTIATE_DOUBLE_INT_BIN_OPS(T) \
00042 INSTANTIATE_DOUBLE_INT_BIN_OP (T, +); \
00043 INSTANTIATE_DOUBLE_INT_BIN_OP (T, -); \
00044 INSTANTIATE_DOUBLE_INT_BIN_OP (T, *); \
00045 INSTANTIATE_DOUBLE_INT_BIN_OP (T, /)
00046
00047 #define INSTANTIATE_INT_DOUBLE_CMP_OP(T, OP) \
00048 template bool operator OP (const octave_int<T>&, const double&)
00049
00050 #define INSTANTIATE_INT_DOUBLE_CMP_OPS(T) \
00051 INSTANTIATE_INT_DOUBLE_CMP_OP (T, <); \
00052 INSTANTIATE_INT_DOUBLE_CMP_OP (T, <=); \
00053 INSTANTIATE_INT_DOUBLE_CMP_OP (T, >=); \
00054 INSTANTIATE_INT_DOUBLE_CMP_OP (T, >); \
00055 INSTANTIATE_INT_DOUBLE_CMP_OP (T, ==); \
00056 INSTANTIATE_INT_DOUBLE_CMP_OP (T, !=)
00057
00058 #define INSTANTIATE_DOUBLE_INT_CMP_OP(T, OP) \
00059 template bool operator OP (const double&, const octave_int<T>&)
00060
00061 #define INSTANTIATE_DOUBLE_INT_CMP_OPS(T) \
00062 INSTANTIATE_DOUBLE_INT_CMP_OP (T, <); \
00063 INSTANTIATE_DOUBLE_INT_CMP_OP (T, <=); \
00064 INSTANTIATE_DOUBLE_INT_CMP_OP (T, >=); \
00065 INSTANTIATE_DOUBLE_INT_CMP_OP (T, >); \
00066 INSTANTIATE_DOUBLE_INT_CMP_OP (T, ==); \
00067 INSTANTIATE_DOUBLE_INT_CMP_OP (T, !=)
00068
00069 #define INSTANTIATE_INT_BITCMP_OP(T, OP) \
00070 template octave_int<T> \
00071 operator OP (const octave_int<T>&, const octave_int<T>&)
00072
00073 #define INSTANTIATE_INT_BITCMP_OPS(T) \
00074 INSTANTIATE_INT_BITCMP_OP (T, &); \
00075 INSTANTIATE_INT_BITCMP_OP (T, |); \
00076 INSTANTIATE_INT_BITCMP_OP (T, ^)
00077
00078 #define INSTANTIATE_INTTYPE(T) \
00079 template class octave_int<T>; \
00080 template octave_int<T> pow (const octave_int<T>&, const octave_int<T>&); \
00081 template octave_int<T> pow (double, const octave_int<T>&); \
00082 template octave_int<T> pow (const octave_int<T>&, double b); \
00083 template std::ostream& operator << (std::ostream&, const octave_int<T>&); \
00084 template std::istream& operator >> (std::istream&, octave_int<T>&); \
00085 template octave_int<T> \
00086 bitshift (const octave_int<T>&, int, const octave_int<T>&); \
00087 INSTANTIATE_INT_DOUBLE_BIN_OPS (T); \
00088 INSTANTIATE_DOUBLE_INT_BIN_OPS (T); \
00089 INSTANTIATE_INT_DOUBLE_CMP_OPS (T); \
00090 INSTANTIATE_DOUBLE_INT_CMP_OPS (T); \
00091 INSTANTIATE_INT_BITCMP_OPS (T)
00092
00093 INSTANTIATE_INTTYPE (octave_int8_t);
00094 INSTANTIATE_INTTYPE (octave_int16_t);
00095 INSTANTIATE_INTTYPE (octave_int32_t);
00096 INSTANTIATE_INTTYPE (octave_int64_t);
00097
00098 INSTANTIATE_INTTYPE (octave_uint8_t);
00099 INSTANTIATE_INTTYPE (octave_uint16_t);
00100 INSTANTIATE_INTTYPE (octave_uint32_t);
00101 INSTANTIATE_INTTYPE (octave_uint64_t);
00102
00103 #define INSTANTIATE_INTTYPE_BIN_OP(T1, T2, OP) \
00104 template octave_int<octave_int_binop_traits<T1, T2>::TR> \
00105 operator OP (const octave_int<T1>&, const octave_int<T2>&)
00106
00107 #define INSTANTIATE_INTTYPE_BIN_OPS(T1, T2) \
00108 INSTANTIATE_INTTYPE_BIN_OP (T1, T2, +); \
00109 INSTANTIATE_INTTYPE_BIN_OP (T1, T2, -); \
00110 INSTANTIATE_INTTYPE_BIN_OP (T1, T2, *); \
00111 INSTANTIATE_INTTYPE_BIN_OP (T1, T2, /)
00112
00113 INSTANTIATE_INTTYPE_BIN_OPS (octave_int8_t, octave_int8_t);
00114 INSTANTIATE_INTTYPE_BIN_OPS (octave_int8_t, octave_int16_t);
00115 INSTANTIATE_INTTYPE_BIN_OPS (octave_int8_t, octave_int32_t);
00116 INSTANTIATE_INTTYPE_BIN_OPS (octave_int8_t, octave_int64_t);
00117 INSTANTIATE_INTTYPE_BIN_OPS (octave_int8_t, octave_uint8_t);
00118 INSTANTIATE_INTTYPE_BIN_OPS (octave_int8_t, octave_uint16_t);
00119 INSTANTIATE_INTTYPE_BIN_OPS (octave_int8_t, octave_uint32_t);
00120 INSTANTIATE_INTTYPE_BIN_OPS (octave_int8_t, octave_uint64_t);
00121
00122 INSTANTIATE_INTTYPE_BIN_OPS (octave_int16_t, octave_int8_t);
00123 INSTANTIATE_INTTYPE_BIN_OPS (octave_int16_t, octave_int16_t);
00124 INSTANTIATE_INTTYPE_BIN_OPS (octave_int16_t, octave_int32_t);
00125 INSTANTIATE_INTTYPE_BIN_OPS (octave_int16_t, octave_int64_t);
00126 INSTANTIATE_INTTYPE_BIN_OPS (octave_int16_t, octave_uint8_t);
00127 INSTANTIATE_INTTYPE_BIN_OPS (octave_int16_t, octave_uint16_t);
00128 INSTANTIATE_INTTYPE_BIN_OPS (octave_int16_t, octave_uint32_t);
00129 INSTANTIATE_INTTYPE_BIN_OPS (octave_int16_t, octave_uint64_t);
00130
00131 INSTANTIATE_INTTYPE_BIN_OPS (octave_int32_t, octave_int8_t);
00132 INSTANTIATE_INTTYPE_BIN_OPS (octave_int32_t, octave_int16_t);
00133 INSTANTIATE_INTTYPE_BIN_OPS (octave_int32_t, octave_int32_t);
00134 INSTANTIATE_INTTYPE_BIN_OPS (octave_int32_t, octave_int64_t);
00135 INSTANTIATE_INTTYPE_BIN_OPS (octave_int32_t, octave_uint8_t);
00136 INSTANTIATE_INTTYPE_BIN_OPS (octave_int32_t, octave_uint16_t);
00137 INSTANTIATE_INTTYPE_BIN_OPS (octave_int32_t, octave_uint32_t);
00138 INSTANTIATE_INTTYPE_BIN_OPS (octave_int32_t, octave_uint64_t);
00139
00140 INSTANTIATE_INTTYPE_BIN_OPS (octave_int64_t, octave_int8_t);
00141 INSTANTIATE_INTTYPE_BIN_OPS (octave_int64_t, octave_int16_t);
00142 INSTANTIATE_INTTYPE_BIN_OPS (octave_int64_t, octave_int32_t);
00143 INSTANTIATE_INTTYPE_BIN_OPS (octave_int64_t, octave_int64_t);
00144 INSTANTIATE_INTTYPE_BIN_OPS (octave_int64_t, octave_uint8_t);
00145 INSTANTIATE_INTTYPE_BIN_OPS (octave_int64_t, octave_uint16_t);
00146 INSTANTIATE_INTTYPE_BIN_OPS (octave_int64_t, octave_uint32_t);
00147 INSTANTIATE_INTTYPE_BIN_OPS (octave_int64_t, octave_uint64_t);
00148
00149 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint8_t, octave_int8_t);
00150 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint8_t, octave_int16_t);
00151 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint8_t, octave_int32_t);
00152 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint8_t, octave_int64_t);
00153 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint8_t, octave_uint8_t);
00154 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint8_t, octave_uint16_t);
00155 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint8_t, octave_uint32_t);
00156 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint8_t, octave_uint64_t);
00157
00158 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint16_t, octave_int8_t);
00159 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint16_t, octave_int16_t);
00160 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint16_t, octave_int32_t);
00161 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint16_t, octave_int64_t);
00162 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint16_t, octave_uint8_t);
00163 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint16_t, octave_uint16_t);
00164 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint16_t, octave_uint32_t);
00165 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint16_t, octave_uint64_t);
00166
00167 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint32_t, octave_int8_t);
00168 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint32_t, octave_int16_t);
00169 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint32_t, octave_int32_t);
00170 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint32_t, octave_int64_t);
00171 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint32_t, octave_uint8_t);
00172 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint32_t, octave_uint16_t);
00173 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint32_t, octave_uint32_t);
00174 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint32_t, octave_uint64_t);
00175
00176 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint64_t, octave_int8_t);
00177 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint64_t, octave_int16_t);
00178 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint64_t, octave_int32_t);
00179 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint64_t, octave_int64_t);
00180 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint64_t, octave_uint8_t);
00181 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint64_t, octave_uint16_t);
00182 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint64_t, octave_uint32_t);
00183 INSTANTIATE_INTTYPE_BIN_OPS (octave_uint64_t, octave_uint64_t);
00184
00185 #define INSTANTIATE_INTTYPE_SHIFT_OP(T, OP) \
00186 template octave_int<T> operator OP (const octave_int<T>&, const int&)
00187
00188 #define INSTANTIATE_INTTYPE_SHIFT_OPS(T) \
00189 INSTANTIATE_INTTYPE_SHIFT_OP (T, <<); \
00190 INSTANTIATE_INTTYPE_SHIFT_OP (T, >>)
00191
00192 INSTANTIATE_INTTYPE_SHIFT_OPS (octave_int8_t);
00193 INSTANTIATE_INTTYPE_SHIFT_OPS (octave_int16_t);
00194 INSTANTIATE_INTTYPE_SHIFT_OPS (octave_int32_t);
00195 INSTANTIATE_INTTYPE_SHIFT_OPS (octave_int64_t);
00196 INSTANTIATE_INTTYPE_SHIFT_OPS (octave_uint8_t);
00197 INSTANTIATE_INTTYPE_SHIFT_OPS (octave_uint16_t);
00198 INSTANTIATE_INTTYPE_SHIFT_OPS (octave_uint32_t);
00199 INSTANTIATE_INTTYPE_SHIFT_OPS (octave_uint64_t);
00200
00201 #define INSTANTIATE_OCTAVE_INT_CMP_OP(OP, T1, T2) \
00202 template bool operator OP (const octave_int<T1>&, const octave_int<T2>&)
00203
00204 #define INSTANTIATE_OCTAVE_INT_CMP_OPS(T1, T2) \
00205 INSTANTIATE_OCTAVE_INT_CMP_OP (<, T1, T2); \
00206 INSTANTIATE_OCTAVE_INT_CMP_OP (<=, T1, T2); \
00207 INSTANTIATE_OCTAVE_INT_CMP_OP (>=, T1, T2); \
00208 INSTANTIATE_OCTAVE_INT_CMP_OP (>, T1, T2); \
00209 INSTANTIATE_OCTAVE_INT_CMP_OP (==, T1, T2); \
00210 INSTANTIATE_OCTAVE_INT_CMP_OP (!=, T1, T2)
00211
00212 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int8_t, octave_int8_t);
00213 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int8_t, octave_int16_t);
00214 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int8_t, octave_int32_t);
00215 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int8_t, octave_int64_t);
00216 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int8_t, octave_uint8_t);
00217 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int8_t, octave_uint16_t);
00218
00219
00220
00221 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int16_t, octave_int8_t);
00222 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int16_t, octave_int16_t);
00223 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int16_t, octave_int32_t);
00224 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int16_t, octave_int64_t);
00225 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int16_t, octave_uint8_t);
00226 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int16_t, octave_uint16_t);
00227
00228
00229
00230 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int32_t, octave_int8_t);
00231 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int32_t, octave_int16_t);
00232 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int32_t, octave_int32_t);
00233 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int32_t, octave_int64_t);
00234 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int32_t, octave_uint8_t);
00235 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int32_t, octave_uint16_t);
00236
00237
00238
00239 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int64_t, octave_int8_t);
00240 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int64_t, octave_int16_t);
00241 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int64_t, octave_int32_t);
00242 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int64_t, octave_int64_t);
00243 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int64_t, octave_uint8_t);
00244 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_int64_t, octave_uint16_t);
00245
00246
00247
00248 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint8_t, octave_int8_t);
00249 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint8_t, octave_int16_t);
00250 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint8_t, octave_int32_t);
00251 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint8_t, octave_int64_t);
00252 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint8_t, octave_uint8_t);
00253 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint8_t, octave_uint16_t);
00254 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint8_t, octave_uint32_t);
00255 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint8_t, octave_uint64_t);
00256
00257 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint16_t, octave_int8_t);
00258 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint16_t, octave_int16_t);
00259 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint16_t, octave_int32_t);
00260 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint16_t, octave_int64_t);
00261 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint16_t, octave_uint8_t);
00262 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint16_t, octave_uint16_t);
00263 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint16_t, octave_uint32_t);
00264 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint16_t, octave_uint64_t);
00265
00266
00267
00268
00269
00270 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint32_t, octave_uint8_t);
00271 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint32_t, octave_uint16_t);
00272 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint32_t, octave_uint32_t);
00273 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint32_t, octave_uint64_t);
00274
00275
00276
00277
00278
00279 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint64_t, octave_uint8_t);
00280 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint64_t, octave_uint16_t);
00281 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint64_t, octave_uint32_t);
00282 INSTANTIATE_OCTAVE_INT_CMP_OPS (octave_uint64_t, octave_uint64_t);
00283
00284
00285
00286
00287
00288 #define OCTAVE_US_TYPE1_CMP_OP(OP, LTZ_VAL, UT, ST) \
00289 bool \
00290 operator OP (const octave_int<UT>& lhs, const octave_int<ST>& rhs) \
00291 { \
00292 return rhs.value () < 0 ? LTZ_VAL \
00293 : lhs.value () OP static_cast<UT> (rhs.value ()); \
00294 }
00295
00296 #define OCTAVE_US_TYPE1_CMP_OPS(UT, ST) \
00297 OCTAVE_US_TYPE1_CMP_OP (<, false, UT, ST) \
00298 OCTAVE_US_TYPE1_CMP_OP (<=, false, UT, ST) \
00299 OCTAVE_US_TYPE1_CMP_OP (>=, true, UT, ST) \
00300 OCTAVE_US_TYPE1_CMP_OP (>, true, UT, ST) \
00301 OCTAVE_US_TYPE1_CMP_OP (==, false, UT, ST) \
00302 OCTAVE_US_TYPE1_CMP_OP (!=, true, UT, ST)
00303
00304 #define OCTAVE_SU_TYPE1_CMP_OP(OP, LTZ_VAL, ST, UT) \
00305 bool \
00306 operator OP (const octave_int<ST>& lhs, const octave_int<UT>& rhs) \
00307 { \
00308 return lhs.value () < 0 ? LTZ_VAL \
00309 : static_cast<UT> (lhs.value ()) OP rhs.value (); \
00310 }
00311
00312 #define OCTAVE_SU_TYPE1_CMP_OPS(ST, UT) \
00313 OCTAVE_SU_TYPE1_CMP_OP (<, true, ST, UT) \
00314 OCTAVE_SU_TYPE1_CMP_OP (<=, true, ST, UT) \
00315 OCTAVE_SU_TYPE1_CMP_OP (>=, false, ST, UT) \
00316 OCTAVE_SU_TYPE1_CMP_OP (>, false, ST, UT) \
00317 OCTAVE_SU_TYPE1_CMP_OP (==, false, ST, UT) \
00318 OCTAVE_SU_TYPE1_CMP_OP (!=, true, ST, UT)
00319
00320 #define OCTAVE_TYPE1_CMP_OPS(UT, ST) \
00321 OCTAVE_US_TYPE1_CMP_OPS (UT, ST) \
00322 OCTAVE_SU_TYPE1_CMP_OPS (ST, UT)
00323
00324 OCTAVE_TYPE1_CMP_OPS (octave_uint32_t, octave_int8_t)
00325 OCTAVE_TYPE1_CMP_OPS (octave_uint32_t, octave_int16_t)
00326 OCTAVE_TYPE1_CMP_OPS (octave_uint32_t, octave_int32_t)
00327
00328 OCTAVE_TYPE1_CMP_OPS (octave_uint64_t, octave_int8_t)
00329 OCTAVE_TYPE1_CMP_OPS (octave_uint64_t, octave_int16_t)
00330 OCTAVE_TYPE1_CMP_OPS (octave_uint64_t, octave_int32_t)
00331 OCTAVE_TYPE1_CMP_OPS (octave_uint64_t, octave_int64_t)
00332
00333
00334
00335
00336
00337 #define OCTAVE_US_TYPE2_CMP_OP(OP, LTZ_VAL, UT, ST) \
00338 bool \
00339 operator OP (const octave_int<UT>& lhs, const octave_int<ST>& rhs) \
00340 { \
00341 return rhs.value () < 0 ? LTZ_VAL \
00342 : static_cast<ST> (lhs.value ()) OP rhs.value (); \
00343 }
00344
00345 #define OCTAVE_US_TYPE2_CMP_OPS(ST, UT) \
00346 OCTAVE_US_TYPE2_CMP_OP (<, false, ST, UT) \
00347 OCTAVE_US_TYPE2_CMP_OP (<=, false, ST, UT) \
00348 OCTAVE_US_TYPE2_CMP_OP (>=, true, ST, UT) \
00349 OCTAVE_US_TYPE2_CMP_OP (>, true, ST, UT) \
00350 OCTAVE_US_TYPE2_CMP_OP (==, false, ST, UT) \
00351 OCTAVE_US_TYPE2_CMP_OP (!=, true, ST, UT)
00352
00353 #define OCTAVE_SU_TYPE2_CMP_OP(OP, LTZ_VAL, ST, UT) \
00354 bool \
00355 operator OP (const octave_int<ST>& lhs, const octave_int<UT>& rhs) \
00356 { \
00357 return lhs.value () < 0 ? LTZ_VAL \
00358 : lhs.value () OP static_cast<ST> (rhs.value ()); \
00359 }
00360
00361 #define OCTAVE_SU_TYPE2_CMP_OPS(ST, UT) \
00362 OCTAVE_SU_TYPE2_CMP_OP (<, true, ST, UT) \
00363 OCTAVE_SU_TYPE2_CMP_OP (<=, true, ST, UT) \
00364 OCTAVE_SU_TYPE2_CMP_OP (>=, false, ST, UT) \
00365 OCTAVE_SU_TYPE2_CMP_OP (>, false, ST, UT) \
00366 OCTAVE_SU_TYPE2_CMP_OP (==, false, ST, UT) \
00367 OCTAVE_SU_TYPE2_CMP_OP (!=, true, ST, UT)
00368
00369 #define OCTAVE_TYPE2_CMP_OPS(UT, ST) \
00370 OCTAVE_US_TYPE2_CMP_OPS (UT, ST) \
00371 OCTAVE_SU_TYPE2_CMP_OPS (ST, UT)
00372
00373 OCTAVE_TYPE2_CMP_OPS (octave_uint32_t, octave_int64_t)
00374
00375
00376
00377
00378
00379
00380
00381