11 #ifndef MI_BASE_TYPES_H
12 #define MI_BASE_TYPES_H
20 #ifndef MI_BASE_NO_STL
22 #endif // MI_BASE_NO_STL
48 #if defined(MI_COMPILER_MSC)
50 typedef signed __int64
Sint64;
51 typedef unsigned __int64
Uint64;
53 #elif defined(MI_COMPILER_GCC) // defined(MI_COMPILER_MSC)
58 #else // defined(MI_COMPILER_GCC)
60 typedef signed long long Sint64;
61 typedef unsigned long long Uint64;
63 #endif // defined(MI_COMPILER_GCC)
82 #define MI_PI 3.14159265358979323846
85 #define MI_PI_2 1.57079632679489661923
88 #define MI_PI_4 0.78539816339744830962
98 #else // MI_ARCH_64BIT
100 #endif // MI_ARCH_64BIT
109 #else // MI_ARCH_64BIT
111 #endif // MI_ARCH_64BIT
131 #else // MI_ARCH_64BIT
149 #endif // MI_ARCH_64BIT
179 template <
typename T>
192 template <
typename T>
197 if (lhs < rhs)
return LESS;
198 else if (rhs < lhs)
return GREATER;
208 #ifdef MI_BASE_NO_STL
212 {
return a < b ? a : b; }
216 {
return a > b ? a : b; }
218 #else // MI_BASE_NO_STL
223 #endif // MI_BASE_NO_STL
228 {
return a < b ? a : b; }
230 {
return a < b ? a : b; }
232 {
return a < b ? a : b; }
234 {
return a < b ? a : b; }
236 {
return a < b ? a : b; }
238 {
return a < b ? a : b; }
240 {
return a < b ? a : b; }
242 {
return a < b ? a : b; }
244 {
return a < b ? a : b; }
246 {
return a < b ? a : b; }
249 {
return a > b ? a : b; }
251 {
return a > b ? a : b; }
253 {
return a > b ? a : b; }
255 {
return a > b ? a : b; }
257 {
return a > b ? a : b; }
259 {
return a > b ? a : b; }
261 {
return a > b ? a : b; }
263 {
return a > b ? a : b; }
265 {
return a > b ? a : b; }
267 {
return a > b ? a : b; }
281 template <
class Target,
class Source>
297 template <
class Target,
class Source>
301 Binary_cast<Target, Source> val_;
315 template <
typename T>
340 static T (
min)()
throw() {
return T(); }
345 static T (
max)()
throw() {
return T(); }
375 template <
typename T>
413 static Sint32 (
min)()
throw() {
return -2147483647 - 1; }
422 static Sint64 (
min)()
throw() {
return -9223372036854775807LL - 1LL; }
423 static Sint64 (
max)()
throw() {
return 9223372036854775807LL; }
452 static Uint64 (
max)()
throw() {
return 18446744073709551615ULL; }
457 #ifdef MI_ARCH_BIG_ENDIAN
462 # define MI__FLOAT32_INF_REP { 0x7f80, 0 }
463 # define MI__FLOAT32_QNAN_REP { 0x7fc1, 0 }
464 # define MI__FLOAT32_SNAN_REP { 0x7f81, 0 }
465 # define MI__FLOAT64_INF_REP { 0x7ff0, 0, 0, 0 }
466 # define MI__FLOAT64_QNAN_REP { 0x7ff9, 0, 0, 0 }
467 # define MI__FLOAT64_SNAN_REP { 0x7ff1, 0, 0, 0 }
468 #endif // MI_ARCH_BIG_ENDIAN
469 #ifdef MI_ARCH_LITTLE_ENDIAN
470 # define MI__FLOAT32_INF_REP { 0, 0x7f80 }
471 # define MI__FLOAT32_QNAN_REP { 0, 0x7fc0 }
472 # define MI__FLOAT32_SNAN_REP { 0, 0x7fa0 }
473 # define MI__FLOAT64_INF_REP { 0, 0, 0, 0x7ff0 }
474 # define MI__FLOAT64_QNAN_REP { 0, 0, 0, 0x7ff8 }
475 # define MI__FLOAT64_SNAN_REP { 0, 0, 0, 0x7ff4 }
476 #endif // MI_ARCH_LITTLE_ENDIAN
501 Float32_rep rep = { MI__FLOAT32_INF_REP };
505 Float32_rep rep = { MI__FLOAT32_QNAN_REP };
509 Float32_rep rep = { MI__FLOAT32_SNAN_REP };
521 static Float64 (
min)()
throw() {
return 2.2250738585072014e-308; }
522 static Float64 (
max)()
throw() {
return 1.7976931348623158e+308; }
525 Float64_rep rep = { MI__FLOAT64_INF_REP };
529 Float64_rep rep = { MI__FLOAT64_QNAN_REP };
533 Float64_rep rep = { MI__FLOAT64_SNAN_REP };
546 #endif // MI_BASE_TYPES_H