⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 limits

📁 realview22.rar
💻
📖 第 1 页 / 共 2 页
字号:
_RWSTD_NAMESPACE_END   // std


#endif   // _RWSTD_LIMITS_TEMPLATE_DEFINED


_RWSTD_NAMESPACE_BEGIN (std)


_RWSTD_CLASS_BEGIN (_RWSTD_SPECIALIZED_CLASS
                    class _RWSTD_EXPORT numeric_limits<float>)

    _RWSTD_STATIC (float, bool, is_specialized, true);

    _RWSTD_STATIC_FUN (float, min, FLT_MIN)
    _RWSTD_STATIC_FUN (float, max, FLT_MAX)

    _RWSTD_STATIC (float, int, digits,   FLT_MANT_DIG);
    _RWSTD_STATIC (float, int, digits10, FLT_DIG);

    _RWSTD_STATIC (float, bool, is_signed,  true);
    _RWSTD_STATIC (float, bool, is_integer, false);
    _RWSTD_STATIC (float, bool, is_exact,   false);
    _RWSTD_STATIC (float, int,  radix,      FLT_RADIX);

    _RWSTD_STATIC_FUN (float, epsilon,     FLT_EPSILON)
    _RWSTD_STATIC_FUN (float, round_error, _RWSTD_FLT_ROUND_ERROR)

    _RWSTD_STATIC (float, int, min_exponent,   FLT_MIN_EXP);
    _RWSTD_STATIC (float, int, min_exponent10, FLT_MIN_10_EXP);
    _RWSTD_STATIC (float, int, max_exponent,   FLT_MAX_EXP);
    _RWSTD_STATIC (float, int, max_exponent10, FLT_MAX_10_EXP);

    _RWSTD_STATIC (float, bool, has_infinity,      _RWSTD_HAS_INFINITY);
    _RWSTD_STATIC (float, bool, has_quiet_NaN,     _RWSTD_HAS_QUIET_NAN);
    _RWSTD_STATIC (float, bool, has_signaling_NaN, _RWSTD_HAS_SIG_NAN);
    _RWSTD_STATIC (float, float_denorm_style, has_denorm,
                   _RWSTD_HAS_DENORM);
    _RWSTD_STATIC (float, bool, has_denorm_loss, _RWSTD_HAS_DENORM_LOSS);

    _RWSTD_STATIC_FUN (float, infinity,      __ESCAPE__(0f_7F800000)) // VENDOR
    _RWSTD_STATIC_FUN (float, quiet_NaN,     __ESCAPE__(0f_7FC00000)) // VENDOR
    _RWSTD_STATIC_FUN (float, signaling_NaN, __ESCAPE__(0f_7F800001)) // VENDOR
    _RWSTD_STATIC_FUN (float, denorm_min,    _RWSTD_FLT_DENORM_MIN) // VENDOR

    _RWSTD_STATIC (float, bool, is_iec559,  _RWSTD_IS_IEC559);    // VENDOR
    _RWSTD_STATIC (float, bool, is_bounded, true);
    _RWSTD_STATIC (float, bool, is_modulo,  false);               // VENDOR

    _RWSTD_STATIC (float, bool, traps, true);                    // VENDOR
    _RWSTD_STATIC (float, bool, tinyness_before, false);          // VENDOR

    _RWSTD_STATIC_ROUNDS (float, float_round_style, round_style, FLT_ROUNDS);

     // extension: type converts to without loss of data
    _RWSTD_TYPEDEF (double _C_convertible)

_RWSTD_CLASS_END   // numeric_limits<float>


_RWSTD_CLASS_BEGIN (_RWSTD_SPECIALIZED_CLASS
                    class _RWSTD_EXPORT numeric_limits<double>)

    _RWSTD_STATIC (double, bool, is_specialized, true);

    _RWSTD_STATIC_FUN (double, min, DBL_MIN)
    _RWSTD_STATIC_FUN (double, max, DBL_MAX)

    _RWSTD_STATIC (double, int, digits,   DBL_MANT_DIG);
    _RWSTD_STATIC (double, int, digits10, DBL_DIG);

    _RWSTD_STATIC (double, bool, is_signed,  true);
    _RWSTD_STATIC (double, bool, is_integer, false);
    _RWSTD_STATIC (double, bool, is_exact,   false);
    _RWSTD_STATIC (double, int,  radix,      FLT_RADIX);

    _RWSTD_STATIC_FUN (double, epsilon,     DBL_EPSILON)
    _RWSTD_STATIC_FUN (double, round_error, _RWSTD_DBL_ROUND_ERROR)

    _RWSTD_STATIC (double, int, min_exponent,   DBL_MIN_EXP);
    _RWSTD_STATIC (double, int, min_exponent10, DBL_MIN_10_EXP);
    _RWSTD_STATIC (double, int, max_exponent,   DBL_MAX_EXP);
    _RWSTD_STATIC (double, int, max_exponent10, DBL_MAX_10_EXP);

    _RWSTD_STATIC (double, bool, has_infinity,      _RWSTD_HAS_INFINITY);
    _RWSTD_STATIC (double, bool, has_quiet_NaN,     _RWSTD_HAS_QUIET_NAN);
    _RWSTD_STATIC (double, bool, has_signaling_NaN, _RWSTD_HAS_SIG_NAN);
    _RWSTD_STATIC (double, float_denorm_style, has_denorm,
                   _RWSTD_HAS_DENORM);
    _RWSTD_STATIC (double, bool, has_denorm_loss,   _RWSTD_HAS_DENORM_LOSS);

    _RWSTD_STATIC_FUN (double, infinity,      __ESCAPE__(0d_7FF0000000000000))   // VENDOR
    _RWSTD_STATIC_FUN (double, quiet_NaN,     __ESCAPE__(0d_7FF8000000000000))   // VENDOR
    _RWSTD_STATIC_FUN (double, signaling_NaN, __ESCAPE__(0d_7FF0000000000001))   // VENDOR
    _RWSTD_STATIC_FUN (double, denorm_min,    _RWSTD_DBL_DENORM_MIN)

    _RWSTD_STATIC (double, bool, is_iec559,  _RWSTD_IS_IEC559);
    _RWSTD_STATIC (double, bool, is_bounded, true);
    _RWSTD_STATIC (double, bool, is_modulo,  false);              // VENDOR

    _RWSTD_STATIC (double, bool, traps, true);                   // VENDOR
    _RWSTD_STATIC (double, bool, tinyness_before, false);         // VENDOR

    _RWSTD_STATIC_ROUNDS (double, float_round_style, round_style, FLT_ROUNDS);

     // extension: type converts to without loss of data
    _RWSTD_TYPEDEF (long double _C_convertible)

_RWSTD_CLASS_END   // numeric_limits<double>


#ifndef _RWSTD_NO_LONG_DOUBLE

_RWSTD_CLASS_BEGIN (_RWSTD_SPECIALIZED_CLASS
                    class _RWSTD_EXPORT numeric_limits<long double>)

    _RWSTD_STATIC (long double, bool, is_specialized, true);

    _RWSTD_STATIC_FUN (long double, min, LDBL_MIN) 
    _RWSTD_STATIC_FUN (long double, max, LDBL_MAX) 

    _RWSTD_STATIC (long double, int, digits,   LDBL_MANT_DIG);
    _RWSTD_STATIC (long double, int, digits10, LDBL_DIG);

    _RWSTD_STATIC (long double, bool, is_signed,  true);
    _RWSTD_STATIC (long double, bool, is_integer, false);
    _RWSTD_STATIC (long double, bool, is_exact,   false);
    _RWSTD_STATIC (long double, int,  radix,      FLT_RADIX);

    _RWSTD_STATIC_FUN (long double, epsilon,     LDBL_EPSILON) 
    _RWSTD_STATIC_FUN (long double, round_error, _RWSTD_LDBL_ROUND_ERROR)

    _RWSTD_STATIC (long double, int, min_exponent,   LDBL_MIN_EXP);
    _RWSTD_STATIC (long double, int, min_exponent10, LDBL_MIN_10_EXP);
    _RWSTD_STATIC (long double, int, max_exponent,   LDBL_MAX_EXP);
    _RWSTD_STATIC (long double, int, max_exponent10, LDBL_MAX_10_EXP);

    _RWSTD_STATIC (long double, bool, has_infinity,      _RWSTD_HAS_INFINITY);
    _RWSTD_STATIC (long double, bool, has_quiet_NaN,     _RWSTD_HAS_QUIET_NAN);
    _RWSTD_STATIC (long double, bool, has_signaling_NaN, _RWSTD_HAS_SIG_NAN);
    _RWSTD_STATIC (long double, float_denorm_style, has_denorm,
                   denorm_indeterminate);
    _RWSTD_STATIC (long double, bool, has_denorm_loss, _RWSTD_HAS_DENORM_LOSS);

    _RWSTD_STATIC_FUN (long double, infinity,      __ESCAPE__(0d_7FF0000000000000))   // VENDOR
    _RWSTD_STATIC_FUN (long double, quiet_NaN,     __ESCAPE__(0d_7FF8000000000000))   // VENDOR
    _RWSTD_STATIC_FUN (long double, signaling_NaN, __ESCAPE__(0d_7FF0000000000001))   // VENDOR
    _RWSTD_STATIC_FUN (long double, denorm_min,    _RWSTD_LDBL_DENORM_MIN)

    _RWSTD_STATIC (long double, bool, is_iec559,  _RWSTD_IS_IEC559);
    _RWSTD_STATIC (long double, bool, is_bounded, true);
    _RWSTD_STATIC (long double, bool, is_modulo,  false);         // VENDOR

    _RWSTD_STATIC (long double, bool, traps, true);              // VENDOR
    _RWSTD_STATIC (long double, bool, tinyness_before, false);    // VENDOR

    _RWSTD_STATIC_ROUNDS (long double, float_round_style, round_style,
                          FLT_ROUNDS);

     // extension: type converts to without loss of data
    _RWSTD_TYPEDEF (long double _C_convertible)

_RWSTD_CLASS_END    // numeric_limits<long double>

#endif   // _RWSTD_NO_LONG_DOUBLE


#define _RWSTD_UCHAR_MIN 0
#define _RWSTD_USHRT_MIN 0
#define _RWSTD_UINT_MIN  0
#define _RWSTD_ULONG_MIN 0

#define _RWSTD_UCHAR_MAX UCHAR_MAX
#define _RWSTD_USHRT_MAX USHRT_MAX
#define _RWSTD_UINT_MAX  UINT_MAX
#define _RWSTD_ULONG_MAX ULONG_MAX


// types each integral type converts to with no loss of precision (if possible)
#ifdef _RWSTD_LONG_LONG
#  if UINT_MAX < ULONG_MAX
#    define _RWSTD_INT_CONVERTIBLE long
#  else
#    define _RWSTD_INT_CONVERTIBLE _RWSTD_LONG_LONG
#  endif
#  define _RWSTD_LONG_CONVERTIBLE  _RWSTD_LONG_LONG
#else   // if !defined (_RWSTD_LONG_LONG)
#  define _RWSTD_INT_CONVERTIBLE  long
#  define _RWSTD_LONG_CONVERTIBLE long
#endif   // _RWSTD_LONG_LONG


#if UCHAR_MAX < UINT_MAX
#  define _RWSTD_CHAR_CONVERTIBLE int
#else
#  define _RWSTD_CHAR_CONVERTIBLE _RWSTD_INT_CONVERTIBLE
#endif   // UCHAR_MAX < UINT_MAX


#if USHRT_MAX < UINT_MAX
#  define _RWSTD_SHORT_CONVERTIBLE int
#else
#  define _RWSTD_SHORT_CONVERTIBLE _RWSTD_INT_CONVERTIBLE
#endif   // USHRT_MAX < UINT_MAX


// define numeric_limits<> integral specializations
_RWSTD_SPECIALIZE_LIMITS (char, _RWSTD_CHAR_CONVERTIBLE, CHAR)

_RWSTD_SPECIALIZE_LIMITS (unsigned char,
                          unsigned _RWSTD_CHAR_CONVERTIBLE, _RWSTD_UCHAR)

_RWSTD_SPECIALIZE_LIMITS (signed char, _RWSTD_CHAR_CONVERTIBLE, SCHAR)

_RWSTD_SPECIALIZE_LIMITS (short int, _RWSTD_SHORT_CONVERTIBLE, SHRT)

_RWSTD_SPECIALIZE_LIMITS (unsigned short,
                          unsigned _RWSTD_SHORT_CONVERTIBLE, _RWSTD_USHRT)

_RWSTD_SPECIALIZE_LIMITS (int, _RWSTD_INT_CONVERTIBLE, INT)

_RWSTD_SPECIALIZE_LIMITS (unsigned int,
                          unsigned _RWSTD_INT_CONVERTIBLE, _RWSTD_UINT)

_RWSTD_SPECIALIZE_LIMITS (long int, _RWSTD_LONG_CONVERTIBLE, LONG)

_RWSTD_SPECIALIZE_LIMITS (unsigned long int,
                          unsigned _RWSTD_LONG_CONVERTIBLE, _RWSTD_ULONG)


#undef _RWSTD_UCHAR_MIN
#undef _RWSTD_USHRT_MIN
#undef _RWSTD_UINT_MIN
#undef _RWSTD_ULONG_MIN

#undef _RWSTD_UCHAR_MAX
#undef _RWSTD_USHRT_MAX
#undef _RWSTD_UINT_MAX
#undef _RWSTD_ULONG_MAX

#ifndef _RWSTD_NO_NATIVE_WCHAR_T

#  define _RWSTD_WCHAR_MIN                                   \
          (  wchar_t (-1) > 0 ? 0                            \
           : sizeof (wchar_t) == sizeof (short) ? SHRT_MIN   \
           : sizeof (wchar_t) == sizeof (int)   ? INT_MIN    \
           : sizeof (wchar_t) == sizeof (long)  ? LONG_MIN   \
           : SCHAR_MIN)
                        
#  define _RWSTD_WCHAR_MAX                                       \
          (  wchar_t (-1) > 0 ?                                  \
             (  sizeof (wchar_t) == sizeof (short) ? USHRT_MAX   \
              : sizeof (wchar_t) == sizeof (int)   ? UINT_MAX    \
              : sizeof (wchar_t) == sizeof (long)  ? ULONG_MAX   \
              : SCHAR_MAX)                                       \
           : (  sizeof (wchar_t) == sizeof (short) ? SHRT_MAX    \
              : sizeof (wchar_t) == sizeof (int)   ? INT_MAX     \
              : sizeof (wchar_t) == sizeof (long)  ? LONG_MAX    \
              : UCHAR_MAX))


_RWSTD_SPECIALIZE_LIMITS (wchar_t, _RWSTD_INT_CONVERTIBLE, _RWSTD_WCHAR)

#  undef _RWSTD_WCHAR_MIN
#  undef _RWSTD_WCHAR_MAX

#endif   // _RWSTD_NO_NATIVE_WCHAR_T


#ifndef _RWSTD_NO_BOOL

#  define _RWSTD_BOOL_MIN   false
#  define _RWSTD_BOOL_MAX   true

_RWSTD_SPECIALIZE_LIMITS (bool, int, _RWSTD_BOOL)

#  undef _RWSTD_BOOL_MIN
#  undef _RWSTD_BOOL_MAX

#endif   // _RWSTD_NO_BOOL


#ifdef _RWSTD_LONG_LONG                                             // VENDOR

#  if defined (_WIN32) && defined (_MSC_VER)
#    define LONG_LONG_MIN   _I64_MIN
#    define LONG_LONG_MAX   _I64_MAX
#    define ULONG_LONG_MAX  _UI64_MAX
#  else   // if !(defined (_WIN32) && defined (_MSC_VER))

#  ifndef LONG_LONG_MIN
#    ifndef LLONG_MIN
       // assuming modulo 2 representation and a working shift
#      define LONG_LONG_MIN \
          (((_RWSTD_LONG_LONG)1) << (sizeof (_RWSTD_LONG_LONG) * CHAR_BIT - 1))
#      define LONG_LONG_MAX   (~LONG_LONG_MIN)
#      define ULONG_LONG_MAX  (~(unsigned _RWSTD_LONG_LONG)0)
#    else   // if defined (LLONG_MIN)
       // e.g., Sun libc 
#      define LONG_LONG_MIN   LLONG_MIN
#      define LONG_LONG_MAX   LLONG_MAX
#      define ULONG_LONG_MAX  ULLONG_MAX
#    endif   // LLONG_MIN
#  endif   // LONG_LONG_MIN

#endif   // _WIN32 && _MSC_VER

#  define ULONG_LONG_MIN   0

_RWSTD_SPECIALIZE_LIMITS (_RWSTD_LONG_LONG, _RWSTD_LONG_LONG, LONG_LONG)

_RWSTD_SPECIALIZE_LIMITS (unsigned _RWSTD_LONG_LONG,
                          unsigned _RWSTD_LONG_LONG, ULONG_LONG)

#  undef ULONG_LONG_MIN 

#endif   // _RWSTD_LONG_LONG


#undef _RWSTD_CHAR_CONVERTIBLE
#undef _RWSTD_SHORT_CONVERTIBLE
#undef _RWSTD_INT_CONVERTIBLE


_RWSTD_NAMESPACE_END   // std


#ifdef _RWSTD_COMPILE_INSTANTIATE
#  include <limits.cc>
#endif

#endif   // _RWSTD_LIMITS_INCLUDED

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -