1169689Skan// -*- C++ -*- 2169689Skan//===-----------------------------------------------------------------------===// 3169689Skan// 4169689Skan// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5169689Skan// See https://llvm.org/LICENSE.txt for license information. 6169689Skan// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7169689Skan// 8169689Skan//===----------------------------------------------------------------------===// 9169689Skan 10169689Skan#ifndef _LIBCPP_SUPPORT_WIN32_LIMITS_MSVC_WIN32_H 11169689Skan#define _LIBCPP_SUPPORT_WIN32_LIMITS_MSVC_WIN32_H 12169689Skan 13169689Skan#if !defined(_LIBCPP_MSVCRT) 14169689Skan#error "This header complements the Microsoft C Runtime library, and should not be included otherwise." 15169689Skan#endif 16169689Skan#if defined(__clang__) 17169689Skan#error "This header should only be included when using Microsofts C1XX frontend" 18169689Skan#endif 19169689Skan 20169689Skan#include <float.h> // limit constants 21169689Skan#include <limits.h> // CHAR_BIT 22169689Skan#include <math.h> // HUGE_VAL 23169689Skan#include <ymath.h> // internal MSVC header providing the needed functionality 24169689Skan 25169689Skan#define __CHAR_BIT__ CHAR_BIT 26169689Skan 27169689Skan#define __FLT_MANT_DIG__ FLT_MANT_DIG 28169689Skan#define __FLT_DIG__ FLT_DIG 29169689Skan#define __FLT_RADIX__ FLT_RADIX 30169689Skan#define __FLT_MIN_EXP__ FLT_MIN_EXP 31169689Skan#define __FLT_MIN_10_EXP__ FLT_MIN_10_EXP 32169689Skan#define __FLT_MAX_EXP__ FLT_MAX_EXP 33169689Skan#define __FLT_MAX_10_EXP__ FLT_MAX_10_EXP 34169689Skan#define __FLT_MIN__ FLT_MIN 35169689Skan#define __FLT_MAX__ FLT_MAX 36169689Skan#define __FLT_EPSILON__ FLT_EPSILON 37169689Skan// predefined by MinGW GCC 38169689Skan#define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F 39169689Skan 40169689Skan#define __DBL_MANT_DIG__ DBL_MANT_DIG 41169689Skan#define __DBL_DIG__ DBL_DIG 42169689Skan#define __DBL_RADIX__ DBL_RADIX 43169689Skan#define __DBL_MIN_EXP__ DBL_MIN_EXP 44169689Skan#define __DBL_MIN_10_EXP__ DBL_MIN_10_EXP 45169689Skan#define __DBL_MAX_EXP__ DBL_MAX_EXP 46169689Skan#define __DBL_MAX_10_EXP__ DBL_MAX_10_EXP 47#define __DBL_MIN__ DBL_MIN 48#define __DBL_MAX__ DBL_MAX 49#define __DBL_EPSILON__ DBL_EPSILON 50// predefined by MinGW GCC 51#define __DBL_DENORM_MIN__ double(4.94065645841246544177e-324L) 52 53#define __LDBL_MANT_DIG__ LDBL_MANT_DIG 54#define __LDBL_DIG__ LDBL_DIG 55#define __LDBL_RADIX__ LDBL_RADIX 56#define __LDBL_MIN_EXP__ LDBL_MIN_EXP 57#define __LDBL_MIN_10_EXP__ LDBL_MIN_10_EXP 58#define __LDBL_MAX_EXP__ LDBL_MAX_EXP 59#define __LDBL_MAX_10_EXP__ LDBL_MAX_10_EXP 60#define __LDBL_MIN__ LDBL_MIN 61#define __LDBL_MAX__ LDBL_MAX 62#define __LDBL_EPSILON__ LDBL_EPSILON 63// predefined by MinGW GCC 64#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L 65 66// __builtin replacements/workarounds 67#define __builtin_huge_vall() _LInf._Long_double 68#define __builtin_nanl(__dummmy) _LNan._Long_double 69#define __builtin_nansl(__dummy) _LSnan._Long_double 70 71#endif // _LIBCPP_SUPPORT_WIN32_LIMITS_MSVC_WIN32_H 72