limits_msvc_win32.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // -*- C++ -*-
  2. //===------------------ support/win32/limits_msvc_win32.h -----------------===//
  3. //
  4. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  5. // See https://llvm.org/LICENSE.txt for license information.
  6. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  7. //
  8. //===----------------------------------------------------------------------===//
  9. #ifndef _LIBCPP_SUPPORT_WIN32_LIMITS_MSVC_WIN32_H
  10. #define _LIBCPP_SUPPORT_WIN32_LIMITS_MSVC_WIN32_H
  11. #if !defined(_LIBCPP_MSVCRT)
  12. #error "This header complements the Microsoft C Runtime library, and should not be included otherwise."
  13. #endif
  14. #if defined(__clang__)
  15. #error "This header should only be included when using Microsofts C1XX frontend"
  16. #endif
  17. #include <limits.h> // CHAR_BIT
  18. #include <float.h> // limit constants
  19. #include <math.h> // HUGE_VAL
  20. #include <ymath.h> // internal MSVC header providing the needed functionality
  21. #define __CHAR_BIT__ CHAR_BIT
  22. #define __FLT_MANT_DIG__ FLT_MANT_DIG
  23. #define __FLT_DIG__ FLT_DIG
  24. #define __FLT_RADIX__ FLT_RADIX
  25. #define __FLT_MIN_EXP__ FLT_MIN_EXP
  26. #define __FLT_MIN_10_EXP__ FLT_MIN_10_EXP
  27. #define __FLT_MAX_EXP__ FLT_MAX_EXP
  28. #define __FLT_MAX_10_EXP__ FLT_MAX_10_EXP
  29. #define __FLT_MIN__ FLT_MIN
  30. #define __FLT_MAX__ FLT_MAX
  31. #define __FLT_EPSILON__ FLT_EPSILON
  32. // predefined by MinGW GCC
  33. #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F
  34. #define __DBL_MANT_DIG__ DBL_MANT_DIG
  35. #define __DBL_DIG__ DBL_DIG
  36. #define __DBL_RADIX__ DBL_RADIX
  37. #define __DBL_MIN_EXP__ DBL_MIN_EXP
  38. #define __DBL_MIN_10_EXP__ DBL_MIN_10_EXP
  39. #define __DBL_MAX_EXP__ DBL_MAX_EXP
  40. #define __DBL_MAX_10_EXP__ DBL_MAX_10_EXP
  41. #define __DBL_MIN__ DBL_MIN
  42. #define __DBL_MAX__ DBL_MAX
  43. #define __DBL_EPSILON__ DBL_EPSILON
  44. // predefined by MinGW GCC
  45. #define __DBL_DENORM_MIN__ double(4.94065645841246544177e-324L)
  46. #define __LDBL_MANT_DIG__ LDBL_MANT_DIG
  47. #define __LDBL_DIG__ LDBL_DIG
  48. #define __LDBL_RADIX__ LDBL_RADIX
  49. #define __LDBL_MIN_EXP__ LDBL_MIN_EXP
  50. #define __LDBL_MIN_10_EXP__ LDBL_MIN_10_EXP
  51. #define __LDBL_MAX_EXP__ LDBL_MAX_EXP
  52. #define __LDBL_MAX_10_EXP__ LDBL_MAX_10_EXP
  53. #define __LDBL_MIN__ LDBL_MIN
  54. #define __LDBL_MAX__ LDBL_MAX
  55. #define __LDBL_EPSILON__ LDBL_EPSILON
  56. // predefined by MinGW GCC
  57. #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
  58. // __builtin replacements/workarounds
  59. #define __builtin_huge_vall() _LInf._Long_double
  60. #define __builtin_nanl(__dummmy) _LNan._Long_double
  61. #define __builtin_nansl(__dummy) _LSnan._Long_double
  62. #endif // _LIBCPP_SUPPORT_WIN32_LIMITS_MSVC_WIN32_H