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
177 template <
typename T>
188 template <
typename T>
193 if (lhs < rhs)
return LESS;
194 else if (rhs < lhs)
return GREATER;
204 #ifdef MI_BASE_NO_STL
208 {
return a < b ? a : b; }
212 {
return a > b ? a : b; }
214 #else // MI_BASE_NO_STL
219 #endif // MI_BASE_NO_STL
224 {
return a < b ? a : b; }
226 {
return a < b ? a : b; }
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; }
245 {
return a > b ? a : b; }
247 {
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; }
277 template <
class Target,
class Source>
293 template <
class Target,
class Source>
297 Binary_cast<Target, Source> val_;
311 template <
typename T>
336 static T (
min)()
throw() {
return T(); }
341 static T (
max)()
throw() {
return T(); }
371 template <
typename T>
409 static Sint32 (
min)()
throw() {
return -2147483647 - 1; }
418 static Sint64 (
min)()
throw() {
return -9223372036854775807LL - 1LL; }
419 static Sint64 (
max)()
throw() {
return 9223372036854775807LL; }
448 static Uint64 (
max)()
throw() {
return 18446744073709551615ULL; }
453 #ifdef MI_ARCH_BIG_ENDIAN
458 # define MI__FLOAT32_INF_REP { 0x7f80, 0 }
459 # define MI__FLOAT32_QNAN_REP { 0x7fc1, 0 }
460 # define MI__FLOAT32_SNAN_REP { 0x7f81, 0 }
461 # define MI__FLOAT64_INF_REP { 0x7ff0, 0, 0, 0 }
462 # define MI__FLOAT64_QNAN_REP { 0x7ff9, 0, 0, 0 }
463 # define MI__FLOAT64_SNAN_REP { 0x7ff1, 0, 0, 0 }
464 #endif // MI_ARCH_BIG_ENDIAN
465 #ifdef MI_ARCH_LITTLE_ENDIAN
466 # define MI__FLOAT32_INF_REP { 0, 0x7f80 }
467 # define MI__FLOAT32_QNAN_REP { 0, 0x7fc0 }
468 # define MI__FLOAT32_SNAN_REP { 0, 0x7fa0 }
469 # define MI__FLOAT64_INF_REP { 0, 0, 0, 0x7ff0 }
470 # define MI__FLOAT64_QNAN_REP { 0, 0, 0, 0x7ff8 }
471 # define MI__FLOAT64_SNAN_REP { 0, 0, 0, 0x7ff4 }
472 #endif // MI_ARCH_LITTLE_ENDIAN
497 Float32_rep rep = { MI__FLOAT32_INF_REP };
501 Float32_rep rep = { MI__FLOAT32_QNAN_REP };
505 Float32_rep rep = { MI__FLOAT32_SNAN_REP };
517 static Float64 (
min)()
throw() {
return 2.2250738585072014e-308; }
518 static Float64 (
max)()
throw() {
return 1.7976931348623158e+308; }
521 Float64_rep rep = { MI__FLOAT64_INF_REP };
525 Float64_rep rep = { MI__FLOAT64_QNAN_REP };
529 Float64_rep rep = { MI__FLOAT64_SNAN_REP };
541 #endif // MI_BASE_TYPES_H