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

📄 _limits.c

📁 symbian 上的stl_port进过编译的。
💻 C
字号:
/* * Copyright (c) 1998,1999 * Silicon Graphics Computer Systems, Inc. * * Copyright (c) 1999 * Boris Fomitchev * * This material is provided "as is", with absolutely no warranty expressed * or implied. Any use is at your own risk. * * Permission to use or copy this software for any purpose is hereby granted * without fee, provided the above notices are retained on all copies. * Permission to modify the code and to distribute modified code is granted, * provided the above notices are retained, and a notice that the code was * modified is included with the above copyright notice. * */#ifndef _STLP_LIMITS_C#define _STLP_LIMITS_C#ifndef _STLP_INTERNAL_LIMITS#  include <stl/_limits.h>#endif//==========================================================//  numeric_limits static members//==========================================================_STLP_BEGIN_NAMESPACE_STLP_MOVE_TO_PRIV_NAMESPACE#if !defined (_STLP_STATIC_CONST_INIT_BUG)#  define __declare_numeric_base_member(__type, __mem, _Init) \template <class __number> \  const __type _Numeric_limits_base<__number>:: __mem__declare_numeric_base_member(bool, is_specialized, false);__declare_numeric_base_member(int, digits, 0);__declare_numeric_base_member(int, digits10, 0);__declare_numeric_base_member(bool, is_signed, false);__declare_numeric_base_member(bool, is_integer, false);__declare_numeric_base_member(bool, is_exact, false);__declare_numeric_base_member(int, radix, 0);__declare_numeric_base_member(int, min_exponent, 0);__declare_numeric_base_member(int, max_exponent, 0);__declare_numeric_base_member(int, min_exponent10, 0);__declare_numeric_base_member(int, max_exponent10, 0);__declare_numeric_base_member(bool, has_infinity, false);__declare_numeric_base_member(bool, has_quiet_NaN, false);__declare_numeric_base_member(bool, has_signaling_NaN, false);__declare_numeric_base_member(float_denorm_style, has_denorm, denorm_absent);__declare_numeric_base_member(bool, has_denorm_loss, false);__declare_numeric_base_member(bool, is_iec559, false);__declare_numeric_base_member(bool, is_bounded, false);__declare_numeric_base_member(bool, is_modulo, false);__declare_numeric_base_member(bool, traps, false);__declare_numeric_base_member(bool, tinyness_before, false);__declare_numeric_base_member(float_round_style, round_style, round_toward_zero);#  undef __declare_numeric_base_member#  define __declare_integer_limits_member(__type, __mem, _Init) \template <class _Int, _STLP_LIMITS_MIN_TYPE __imin, _STLP_LIMITS_MAX_TYPE __imax, int __idigits, bool __ismod> \  const __type _Integer_limits<_Int, __imin, __imax, __idigits, __ismod>:: __mem__declare_integer_limits_member(bool, is_specialized, true);__declare_integer_limits_member(int, digits, (__idigits < 0) ? \          ((int)((sizeof(_Int) * (CHAR_BIT))) - ((__imin == 0) ? 0 : 1)) \                            : (__idigits) );__declare_integer_limits_member(int, digits10, (int)(301UL * digits) /1000);__declare_integer_limits_member(bool, is_signed, __imin != 0);__declare_integer_limits_member(bool, is_integer, true);__declare_integer_limits_member(bool, is_exact, true);__declare_integer_limits_member(int, radix, 2);__declare_integer_limits_member(bool, is_bounded, true);__declare_integer_limits_member(bool, is_modulo, true);#  undef __declare_integer_limits_member#  define __declare_float_limits_member(__type, __mem, _Init) \template <class __number,  \         int __Digits, int __Digits10,    \         int __MinExp, int __MaxExp,      \         int __MinExp10, int __MaxExp10,  \         bool __IsIEC559, \         float_round_style __RoundStyle> \const __type _Floating_limits< __number, __Digits, __Digits10,    \         __MinExp, __MaxExp, __MinExp10, __MaxExp10,  \         __IsIEC559, __RoundStyle>::\         __mem__declare_float_limits_member(bool, is_specialized, true);__declare_float_limits_member(int, digits, __Digits);__declare_float_limits_member(int, digits10, __Digits10);__declare_float_limits_member(bool, is_signed, true);__declare_float_limits_member(int, radix, FLT_RADIX);__declare_float_limits_member(int, min_exponent, __MinExp);__declare_float_limits_member(int, max_exponent, __MaxExp);__declare_float_limits_member(int, min_exponent10, __MinExp10);__declare_float_limits_member(int, max_exponent10, __MaxExp10);__declare_float_limits_member(bool, has_infinity, true);__declare_float_limits_member(bool, has_quiet_NaN, true);__declare_float_limits_member(bool, has_signaling_NaN, true);__declare_float_limits_member(float_denorm_style, has_denorm, denorm_indeterminate);__declare_float_limits_member(bool, has_denorm_loss, false);__declare_float_limits_member(bool, is_iec559, __IsIEC559);__declare_float_limits_member(bool, is_bounded, true);__declare_float_limits_member(bool, traps, true);__declare_float_limits_member(bool, tinyness_before, false);__declare_float_limits_member(float_round_style, round_style, __RoundStyle);#  undef __declare_float_limits_member#endif /* _STLP_STATIC_CONST_INIT_BUG */#if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)#  if defined (_STLP_BIG_ENDIAN)#    if defined (__OS400__)#      define _STLP_FLOAT_INF_REP { 0x7f80, 0 }#      define _STLP_FLOAT_QNAN_REP { 0xffc0, 0 }#      define _STLP_FLOAT_SNAN_REP { 0xff80, 0 }#      define _STLP_DOUBLE_INF_REP { 0x7ff0, 0, 0, 0 }#      define _STLP_DOUBLE_QNAN_REP { 0xfff8, 0, 0, 0 }#      define _STLP_DOUBLE_SNAN_REP { 0xfff0, 0, 0, 0 }#      define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 }#      define _STLP_LDOUBLE_QNAN_REP { 0xfff8, 0, 0, 0, 0, 0, 0, 0 }#      define _STLP_LDOUBLE_SNAN_REP { 0xfff0, 0, 0, 0, 0, 0, 0, 0 }#    else /* __OS400__ */#      define _STLP_FLOAT_INF_REP   { 0x7f80, 0 }#      define _STLP_FLOAT_QNAN_REP  { 0x7fc1, 0 }#      define _STLP_FLOAT_SNAN_REP  { 0x7f81, 0 }#      define _STLP_DOUBLE_INF_REP  { 0x7ff0, 0, 0, 0 }#      define _STLP_DOUBLE_QNAN_REP { 0x7ff9, 0, 0, 0 }#      define _STLP_DOUBLE_SNAN_REP { 0x7ff1, 0, 0, 0 }#      define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 }#      define _STLP_LDOUBLE_QNAN_REP { 0x7ff1, 0, 0, 0, 0, 0, 0, 0 }#      define _STLP_LDOUBLE_SNAN_REP { 0x7ff9, 0, 0, 0, 0, 0, 0, 0 }#    endif /* __OS400__ */#  elif defined (_STLP_LITTLE_ENDIAN)#    if 0 /* defined(_STLP_MSVC) || defined(__linux__) */// some IA-32 platform ??/*#      define _STLP_FLOAT_INF_REP { 0, 0x7f80 }#      define _STLP_FLOAT_QNAN_REP { 0, 0xffc0 }#      define _STLP_FLOAT_SNAN_REP { 0, 0xff80 }#      define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }#      define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0xfff8 }#      define _STLP_DOUBLE_SNAN_REP { 0, 0, 0, 0xfff0 }#      define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x7FF0, 0 } // ????#      define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xFFF8, 0 } // ????#      define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xFFF0, 0 } // ????*/#    elif defined(__DECCXX)#      define _STLP_FLOAT_INF_REP { 0, 0x7f80 }#      define _STLP_FLOAT_QNAN_REP { 0, 0xffc0 }#      define _STLP_FLOAT_SNAN_REP { 0x5555, 0x7f85 }#      define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }#      define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0xfff8 }#      define _STLP_DOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x7ff5 }#      define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0, 0, 0, 0, 0x7fff }#      define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0, 0, 0, 0x8000, 0xffff }#      define _STLP_LDOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x7fff}#    else#      define _STLP_FLOAT_INF_REP { 0, 0x7f80 }#      define _STLP_FLOAT_QNAN_REP { 0, 0x7fc0 }#      define _STLP_FLOAT_SNAN_REP { 0, 0x7fa0 }#      define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }#      define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0x7ff8 }#      define _STLP_DOUBLE_SNAN_REP { 0, 0, 0, 0x7ff4 }#      if defined (_STLP_MSVC) || defined (__ICL)#        define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x7FF0, 0 }#        define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xFFF8, 0 }#        define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xFFF8, 0 }#      elif defined (__BORLANDC__)#        define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x8000, 0x7fff }#        define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xc000, 0x7fff }#        define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xa000, 0x7fff }#      else#        define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x8000, 0x7fff, 0 }#        define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xa000, 0x7fff, 0 }#        define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xc000, 0x7fff, 0 }#      endif#    endif#  else/* This is an architecture we don't know how to handle. Return someobviously wrong values. */#    define _STLP_FLOAT_INF_REP { 0, 0 }#    define _STLP_FLOAT_QNAN_REP { 0, 0 }#    define _STLP_FLOAT_SNAN_REP { 0, 0 }#    define _STLP_DOUBLE_INF_REP { 0, 0 }#    define _STLP_DOUBLE_QNAN_REP { 0, 0 }#    define _STLP_DOUBLE_SNAN_REP { 0, 0 }#    define _STLP_LDOUBLE_INF_REP { 0 }#    define _STLP_LDOUBLE_QNAN_REP { 0 }#    define _STLP_LDOUBLE_SNAN_REP { 0 }#  endif#  if 0/*#    if defined(_STLP_BIG_ENDIAN)#    elif defined (_STLP_LITTLE_ENDIAN)#    else//This is an architecture we don't know how to handle.  Return some//obviously wrong values.#      define _STLP_FLOAT_INF_REP  { 0, 0 }#      define _STLP_FLOAT_QNAN_REP { 0, 0 }#      define _STLP_FLOAT_SNAN_REP { 0, 0 }#      define _STLP_DOUBLE_INF_REP  { 0, 0 }#      define _STLP_DOUBLE_QNAN_REP { 0, 0 }#      define _STLP_DOUBLE_SNAN_REP { 0, 0 }#      define _STLP_LDOUBLE_INF_REP  { 0 }#      define _STLP_LDOUBLE_QNAN_REP { 0 }#      define _STLP_LDOUBLE_SNAN_REP { 0 }#    endif*/#  endifunion _F_rep {  unsigned short rep[2];  float val;};union _D_rep {  unsigned short rep[4];  double val;};#  ifndef _STLP_NO_LONG_DOUBLEunion _LD_rep {  unsigned short rep[8];  long double val;};#  endiftemplate <class __dummy>float _STLP_CALL _LimG<__dummy>::get_F_inf() {  _F_rep _F_inf = {_STLP_FLOAT_INF_REP};  return _F_inf.val;}template <class __dummy>float _STLP_CALL _LimG<__dummy>::get_F_qNaN() {  _F_rep _F_qNaN = {_STLP_FLOAT_QNAN_REP};  return _F_qNaN.val;}template <class __dummy>float _STLP_CALL _LimG<__dummy>::get_F_sNaN() {  _F_rep _F_sNaN = {_STLP_FLOAT_SNAN_REP};  return _F_sNaN.val;}template <class __dummy>double _STLP_CALL _LimG<__dummy>::get_D_inf() {  _D_rep _D_inf = {_STLP_DOUBLE_INF_REP};  return _D_inf.val;}template <class __dummy>double _STLP_CALL _LimG<__dummy>::get_D_qNaN() {  _D_rep _D_qNaN = {_STLP_DOUBLE_QNAN_REP};  return _D_qNaN.val;}template <class __dummy>double _STLP_CALL _LimG<__dummy>::get_D_sNaN() {  _D_rep _D_sNaN = {_STLP_DOUBLE_SNAN_REP};  return _D_sNaN.val;}#  if !defined (_STLP_NO_LONG_DOUBLE)template <class __dummy>long double _STLP_CALL _LimG<__dummy>::get_LD_inf() {  _LD_rep _LD_inf = {_STLP_LDOUBLE_INF_REP};  return _LD_inf.val;}template <class __dummy>long double _STLP_CALL _LimG<__dummy>::get_LD_qNaN() {  _LD_rep _LD_qNaN = {_STLP_LDOUBLE_QNAN_REP};  return _LD_qNaN.val;}template <class __dummy>long double _STLP_CALL _LimG<__dummy>::get_LD_sNaN() {  _LD_rep _LD_sNaN = {_STLP_LDOUBLE_SNAN_REP};  return _LD_sNaN.val;}#  endif /* _STLP_NO_LONG_DOUBLE */#endif /* _STLP_EXPOSE_GLOBALS_IMPLEMENTATION */#undef _STLP_LIMITS_MIN_TYPE#undef _STLP_LIMITS_MAX_TYPE#undef _STLP_FLOAT_INF_REP#undef _STLP_FLOAT_QNAN_REP#undef _STLP_FLOAT_SNAN_REP#undef _STLP_DOUBLE_INF_REP#undef _STLP_DOUBLE_QNAN_REP#undef _STLP_DOUBLE_SNAN_REP#undef _STLP_LDOUBLE_INF_REP#undef _STLP_LDOUBLE_QNAN_REP#undef _STLP_LDOUBLE_SNAN_REP_STLP_MOVE_TO_STD_NAMESPACE_STLP_END_NAMESPACE#endif /* _STLP_LIMITS_C_INCLUDED */

⌨️ 快捷键说明

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