epoc32/include/stdapis/stlportv5/stl/_limits.c
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
     1.1 --- a/epoc32/include/stdapis/stlportv5/stl/_limits.c	Wed Mar 31 12:27:01 2010 +0100
     1.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_limits.c	Wed Mar 31 12:33:34 2010 +0100
     1.3 @@ -2,13 +2,13 @@
     1.4   * Copyright (c) 1998,1999
     1.5   * Silicon Graphics Computer Systems, Inc.
     1.6   *
     1.7 - * Copyright (c) 1999 
     1.8 + * Copyright (c) 1999
     1.9   * Boris Fomitchev
    1.10   *
    1.11   * This material is provided "as is", with absolutely no warranty expressed
    1.12   * or implied. Any use is at your own risk.
    1.13   *
    1.14 - * Permission to use or copy this software for any purpose is hereby granted 
    1.15 + * Permission to use or copy this software for any purpose is hereby granted
    1.16   * without fee, provided the above notices are retained on all copies.
    1.17   * Permission to modify the code and to distribute modified code is granted,
    1.18   * provided the above notices are retained, and a notice that the code was
    1.19 @@ -16,11 +16,11 @@
    1.20   *
    1.21   */
    1.22  
    1.23 -# if !defined (_STLP_LIMITS_C)
    1.24 -#  define _STLP_LIMITS_C
    1.25 +#ifndef _STLP_LIMITS_C
    1.26 +#define _STLP_LIMITS_C
    1.27  
    1.28 -#ifndef _STLP_INTERNAL_LIMITS_H
    1.29 -# include <stl/_limits.h>
    1.30 +#ifndef _STLP_INTERNAL_LIMITS
    1.31 +#  include <stl/_limits.h>
    1.32  #endif
    1.33  
    1.34  //==========================================================
    1.35 @@ -29,9 +29,11 @@
    1.36  
    1.37  _STLP_BEGIN_NAMESPACE
    1.38  
    1.39 -# if ! defined ( _STLP_STATIC_CONST_INIT_BUG)
    1.40 +_STLP_MOVE_TO_PRIV_NAMESPACE
    1.41  
    1.42 -#   define __declare_numeric_base_member(__type, __mem, _Init) \
    1.43 +#if !defined (_STLP_STATIC_CONST_INIT_BUG)
    1.44 +
    1.45 +#  define __declare_numeric_base_member(__type, __mem, _Init) \
    1.46  template <class __number> \
    1.47    const __type _Numeric_limits_base<__number>:: __mem
    1.48  
    1.49 @@ -58,15 +60,15 @@
    1.50  __declare_numeric_base_member(bool, tinyness_before, false);
    1.51  __declare_numeric_base_member(float_round_style, round_style, round_toward_zero);
    1.52  
    1.53 -# undef __declare_numeric_base_member
    1.54 +#  undef __declare_numeric_base_member
    1.55  
    1.56 -#   define __declare_integer_limits_member(__type, __mem, _Init) \
    1.57 +#  define __declare_integer_limits_member(__type, __mem, _Init) \
    1.58  template <class _Int, _STLP_LIMITS_MIN_TYPE __imin, _STLP_LIMITS_MAX_TYPE __imax, int __idigits, bool __ismod> \
    1.59    const __type _Integer_limits<_Int, __imin, __imax, __idigits, __ismod>:: __mem
    1.60  
    1.61  __declare_integer_limits_member(bool, is_specialized, true);
    1.62  __declare_integer_limits_member(int, digits, (__idigits < 0) ? \
    1.63 -			    ((int)((sizeof(_Int) * (CHAR_BIT))) - ((__imin == 0) ? 0 : 1)) \
    1.64 +          ((int)((sizeof(_Int) * (CHAR_BIT))) - ((__imin == 0) ? 0 : 1)) \
    1.65                              : (__idigits) );
    1.66  __declare_integer_limits_member(int, digits10, (int)(301UL * digits) /1000);
    1.67  __declare_integer_limits_member(bool, is_signed, __imin != 0);
    1.68 @@ -75,8 +77,9 @@
    1.69  __declare_integer_limits_member(int, radix, 2);
    1.70  __declare_integer_limits_member(bool, is_bounded, true);
    1.71  __declare_integer_limits_member(bool, is_modulo, true);
    1.72 +#  undef __declare_integer_limits_member
    1.73  
    1.74 -#   define __declare_float_limits_member(__type, __mem, _Init) \
    1.75 +#  define __declare_float_limits_member(__type, __mem, _Init) \
    1.76  template <class __number,  \
    1.77           int __Digits, int __Digits10,    \
    1.78           int __MinExp, int __MaxExp,      \
    1.79 @@ -88,15 +91,15 @@
    1.80           __IsIEC559, __RoundStyle>::\
    1.81           __mem
    1.82  
    1.83 -__declare_float_limits_member(bool, is_specialized, true);  
    1.84 -__declare_float_limits_member(int, digits, __Digits);  
    1.85 -__declare_float_limits_member(int, digits10, __Digits10);  
    1.86 -__declare_float_limits_member(bool, is_signed, true);  
    1.87 -__declare_float_limits_member(int, radix, FLT_RADIX);  
    1.88 -__declare_float_limits_member(int, min_exponent, __MinExp);  
    1.89 -__declare_float_limits_member(int, max_exponent, __MaxExp);  
    1.90 -__declare_float_limits_member(int, min_exponent10, __MinExp10);  
    1.91 -__declare_float_limits_member(int, max_exponent10, __MaxExp10);  
    1.92 +__declare_float_limits_member(bool, is_specialized, true);
    1.93 +__declare_float_limits_member(int, digits, __Digits);
    1.94 +__declare_float_limits_member(int, digits10, __Digits10);
    1.95 +__declare_float_limits_member(bool, is_signed, true);
    1.96 +__declare_float_limits_member(int, radix, FLT_RADIX);
    1.97 +__declare_float_limits_member(int, min_exponent, __MinExp);
    1.98 +__declare_float_limits_member(int, max_exponent, __MaxExp);
    1.99 +__declare_float_limits_member(int, min_exponent10, __MinExp10);
   1.100 +__declare_float_limits_member(int, max_exponent10, __MaxExp10);
   1.101  __declare_float_limits_member(bool, has_infinity, true);
   1.102  __declare_float_limits_member(bool, has_quiet_NaN, true);
   1.103  __declare_float_limits_member(bool, has_signaling_NaN, true);
   1.104 @@ -107,164 +110,206 @@
   1.105  __declare_float_limits_member(bool, traps, true);
   1.106  __declare_float_limits_member(bool, tinyness_before, false);
   1.107  __declare_float_limits_member(float_round_style, round_style, __RoundStyle);
   1.108 +#  undef __declare_float_limits_member
   1.109  
   1.110 -# endif /* _STLP_STATIC_CONST_INIT_BUG */
   1.111 +#endif /* _STLP_STATIC_CONST_INIT_BUG */
   1.112  
   1.113  
   1.114 -# ifdef _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
   1.115 +#if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
   1.116  
   1.117 -# if defined(_STLP_BIG_ENDIAN)
   1.118 -# if defined(__OS400__)
   1.119 -#  define _STLP_FLOAT_INF_REP { 0x7f80, 0 }
   1.120 -#  define _STLP_FLOAT_QNAN_REP { 0xffc0, 0 }
   1.121 -#  define _STLP_FLOAT_SNAN_REP { 0xff80, 0 }
   1.122 -#  define _STLP_DOUBLE_INF_REP { 0x7ff0, 0, 0, 0 }
   1.123 -#  define _STLP_DOUBLE_QNAN_REP { 0xfff8, 0, 0, 0 }
   1.124 -#  define _STLP_DOUBLE_SNAN_REP { 0xfff0, 0, 0, 0 }
   1.125 -#  define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 }
   1.126 -#  define _STLP_LDOUBLE_QNAN_REP { 0xfff8, 0, 0, 0, 0, 0, 0, 0 }
   1.127 -#  define _STLP_LDOUBLE_SNAN_REP { 0xfff0, 0, 0, 0, 0, 0, 0, 0 }
   1.128 -# else
   1.129 -#  define _STLP_FLOAT_INF_REP   { 0x7f80, 0 }
   1.130 -#  define _STLP_FLOAT_SNAN_REP  { 0x7f81, 0 }
   1.131 -#  define _STLP_FLOAT_QNAN_REP  { 0x7fc1, 0 }
   1.132 -#  define _STLP_DOUBLE_INF_REP  { 0x7ff0, 0, 0, 0 }
   1.133 -#  define _STLP_DOUBLE_QNAN_REP { 0x7ff1, 0, 0, 0 }
   1.134 -#  define _STLP_DOUBLE_SNAN_REP { 0x7ff9, 0, 0, 0 }
   1.135 -#  define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 }
   1.136 -#  define _STLP_LDOUBLE_SNAN_REP { 0x7ff1, 0, 0, 0, 0, 0, 0, 0 }
   1.137 -#  define _STLP_LDOUBLE_QNAN_REP { 0x7ff9, 0, 0, 0, 0, 0, 0, 0 }
   1.138 -# endif
   1.139 +#  if defined (_STLP_BIG_ENDIAN)
   1.140 +#    if defined (__OS400__)
   1.141 +#      define _STLP_FLOAT_INF_REP { 0x7f80, 0 }
   1.142 +#      define _STLP_FLOAT_QNAN_REP { 0xffc0, 0 }
   1.143 +#      define _STLP_FLOAT_SNAN_REP { 0xff80, 0 }
   1.144 +#      define _STLP_DOUBLE_INF_REP { 0x7ff0, 0, 0, 0 }
   1.145 +#      define _STLP_DOUBLE_QNAN_REP { 0xfff8, 0, 0, 0 }
   1.146 +#      define _STLP_DOUBLE_SNAN_REP { 0xfff0, 0, 0, 0 }
   1.147 +#      define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 }
   1.148 +#      define _STLP_LDOUBLE_QNAN_REP { 0xfff8, 0, 0, 0, 0, 0, 0, 0 }
   1.149 +#      define _STLP_LDOUBLE_SNAN_REP { 0xfff0, 0, 0, 0, 0, 0, 0, 0 }
   1.150 +#    else /* __OS400__ */
   1.151 +#      define _STLP_FLOAT_INF_REP   { 0x7f80, 0 }
   1.152 +#      define _STLP_FLOAT_QNAN_REP  { 0x7fc1, 0 }
   1.153 +#      define _STLP_FLOAT_SNAN_REP  { 0x7f81, 0 }
   1.154 +#      define _STLP_DOUBLE_INF_REP  { 0x7ff0, 0, 0, 0 }
   1.155 +#      define _STLP_DOUBLE_QNAN_REP { 0x7ff9, 0, 0, 0 }
   1.156 +#      define _STLP_DOUBLE_SNAN_REP { 0x7ff1, 0, 0, 0 }
   1.157 +#      define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 }
   1.158 +#      define _STLP_LDOUBLE_QNAN_REP { 0x7ff1, 0, 0, 0, 0, 0, 0, 0 }
   1.159 +#      define _STLP_LDOUBLE_SNAN_REP { 0x7ff9, 0, 0, 0, 0, 0, 0, 0 }
   1.160 +#    endif /* __OS400__ */
   1.161  
   1.162 -# elif defined (_STLP_LITTLE_ENDIAN)
   1.163 +#  elif defined (_STLP_LITTLE_ENDIAN)
   1.164  
   1.165 -# if 0 /* defined(_STLP_MSVC) || defined(__linux__) */
   1.166 -// some IA-32 platform ?? 
   1.167 -#  define _STLP_FLOAT_INF_REP { 0, 0x7f80 }
   1.168 -#  define _STLP_FLOAT_QNAN_REP { 0, 0xffc0 }
   1.169 -#  define _STLP_FLOAT_SNAN_REP { 0, 0xff80 }
   1.170 +#    if 0 /* defined(_STLP_MSVC) || defined(__linux__) */
   1.171 +// some IA-32 platform ??
   1.172 +/*
   1.173 +#      define _STLP_FLOAT_INF_REP { 0, 0x7f80 }
   1.174 +#      define _STLP_FLOAT_QNAN_REP { 0, 0xffc0 }
   1.175 +#      define _STLP_FLOAT_SNAN_REP { 0, 0xff80 }
   1.176  
   1.177 -#  define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
   1.178 -#  define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0xfff8 }
   1.179 -#  define _STLP_DOUBLE_SNAN_REP { 0, 0, 0, 0xfff0 }
   1.180 -#  define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x7FF0, 0 } // ????
   1.181 -#  define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xFFF8, 0 } // ????
   1.182 -#  define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xFFF0, 0 } // ????
   1.183 +#      define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
   1.184 +#      define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0xfff8 }
   1.185 +#      define _STLP_DOUBLE_SNAN_REP { 0, 0, 0, 0xfff0 }
   1.186 +#      define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x7FF0, 0 } // ????
   1.187 +#      define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xFFF8, 0 } // ????
   1.188 +#      define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xFFF0, 0 } // ????
   1.189 +*/
   1.190 +#    elif defined(__DECCXX)
   1.191  
   1.192 -# elif defined(__DECCXX)
   1.193 +#      define _STLP_FLOAT_INF_REP { 0, 0x7f80 }
   1.194 +#      define _STLP_FLOAT_QNAN_REP { 0, 0xffc0 }
   1.195 +#      define _STLP_FLOAT_SNAN_REP { 0x5555, 0x7f85 }
   1.196  
   1.197 -#  define _STLP_FLOAT_INF_REP { 0, 0x7f80 }
   1.198 -#  define _STLP_FLOAT_QNAN_REP { 0, 0xffc0 }
   1.199 -#  define _STLP_FLOAT_SNAN_REP { 0x5555, 0x7f85 }
   1.200 +#      define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
   1.201 +#      define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0xfff8 }
   1.202 +#      define _STLP_DOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x7ff5 }
   1.203  
   1.204 -#  define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
   1.205 -#  define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0xfff8 }
   1.206 -#  define _STLP_DOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x7ff5 }
   1.207 -
   1.208 -#  define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0, 0, 0, 0, 0x7fff }
   1.209 -#  define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0, 0, 0, 0x8000, 0xffff }
   1.210 -#  define _STLP_LDOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x7fff}
   1.211 -# else
   1.212 -#  define _STLP_FLOAT_INF_REP { 0, 0x7f80 }
   1.213 -#  define _STLP_FLOAT_QNAN_REP { 0, 0x7fa0 }
   1.214 -#  define _STLP_FLOAT_SNAN_REP { 0, 0x7fc0 }
   1.215 -#  define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
   1.216 -#  define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0x7ff4 }
   1.217 -#  define _STLP_DOUBLE_SNAN_REP { 0, 0, 0, 0x7ff8 }
   1.218 -#  if defined (_STLP_MSVC) || defined (__ICL) || defined (__BORLANDC__)
   1.219 -#   define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x7FF0, 0 } // ????
   1.220 -#   define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xFFF8, 0 } // ????
   1.221 -#   define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xFFF8, 0 }
   1.222 +#      define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0, 0, 0, 0, 0x7fff }
   1.223 +#      define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0, 0, 0, 0x8000, 0xffff }
   1.224 +#      define _STLP_LDOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x7fff}
   1.225 +#    else
   1.226 +#      define _STLP_FLOAT_INF_REP { 0, 0x7f80  }
   1.227 +#      define _STLP_FLOAT_QNAN_REP { 0, 0x7fC0  }
   1.228 +#      define _STLP_FLOAT_SNAN_REP { 0x0001, 0x7f80 }
   1.229 +#      define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
   1.230 +#      define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0x7ff8 }
   1.231 +#      define _STLP_DOUBLE_SNAN_REP { 0x0001, 0, 0, 0x7ff0 }
   1.232 +#      if defined (_STLP_MSVC) || defined (__ICL)
   1.233 +#        define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x7FF0, 0 }
   1.234 +#        define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xFFF8, 0 }
   1.235 +#        define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xFFF8, 0 }
   1.236 +#      elif defined (__BORLANDC__)
   1.237 +#        define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x8000, 0x7fff }
   1.238 +#        define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xc000, 0x7fff }
   1.239 +#        define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xa000, 0x7fff }
   1.240 +#      else
   1.241 +#        define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x8000, 0x7fff, 0 }
   1.242 +#        define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xa000, 0x7fff, 0 }
   1.243 +#        define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xc000, 0x7fff, 0 }
   1.244 +#      endif
   1.245 +#    endif
   1.246  #  else
   1.247 -#   define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x8000, 0x7fff }
   1.248 -#   define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xa000, 0x7fff }
   1.249 -#   define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xc000, 0x7fff }
   1.250 -#  endif
   1.251 -# endif
   1.252 -#else
   1.253  /* This is an architecture we don't know how to handle. Return some
   1.254  obviously wrong values. */
   1.255 -# define _STLP_FLOAT_INF_REP { 0, 0 }
   1.256 -# define _STLP_FLOAT_QNAN_REP { 0, 0 }
   1.257 -# define _STLP_FLOAT_SNAN_REP { 0, 0 }
   1.258 -# define _STLP_DOUBLE_INF_REP { 0, 0 }
   1.259 -# define _STLP_DOUBLE_QNAN_REP { 0, 0 }
   1.260 -# define _STLP_DOUBLE_SNAN_REP { 0, 0 }
   1.261 -# define _STLP_LDOUBLE_INF_REP { 0 }
   1.262 -# define _STLP_LDOUBLE_QNAN_REP { 0 }
   1.263 -# define _STLP_LDOUBLE_SNAN_REP { 0 }
   1.264 +#    define _STLP_FLOAT_INF_REP { 0, 0 }
   1.265 +#    define _STLP_FLOAT_QNAN_REP { 0, 0 }
   1.266 +#    define _STLP_FLOAT_SNAN_REP { 0, 0 }
   1.267 +#    define _STLP_DOUBLE_INF_REP { 0, 0 }
   1.268 +#    define _STLP_DOUBLE_QNAN_REP { 0, 0 }
   1.269 +#    define _STLP_DOUBLE_SNAN_REP { 0, 0 }
   1.270 +#    define _STLP_LDOUBLE_INF_REP { 0 }
   1.271 +#    define _STLP_LDOUBLE_QNAN_REP { 0 }
   1.272 +#    define _STLP_LDOUBLE_SNAN_REP { 0 }
   1.273  
   1.274 -#endif
   1.275 +#  endif
   1.276  
   1.277 -#if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
   1.278 -# ifndef _STLP_NO_LONG_DOUBLE
   1.279 +#  if 0
   1.280 +/*
   1.281 +#    if defined(_STLP_BIG_ENDIAN)
   1.282 +
   1.283 +#    elif defined (_STLP_LITTLE_ENDIAN)
   1.284 +#    else
   1.285 +
   1.286 +//This is an architecture we don't know how to handle.  Return some
   1.287 +//obviously wrong values.
   1.288 +#      define _STLP_FLOAT_INF_REP  { 0, 0 }
   1.289 +#      define _STLP_FLOAT_QNAN_REP { 0, 0 }
   1.290 +#      define _STLP_FLOAT_SNAN_REP { 0, 0 }
   1.291 +#      define _STLP_DOUBLE_INF_REP  { 0, 0 }
   1.292 +#      define _STLP_DOUBLE_QNAN_REP { 0, 0 }
   1.293 +#      define _STLP_DOUBLE_SNAN_REP { 0, 0 }
   1.294 +#      define _STLP_LDOUBLE_INF_REP  { 0 }
   1.295 +#      define _STLP_LDOUBLE_QNAN_REP { 0 }
   1.296 +#      define _STLP_LDOUBLE_SNAN_REP { 0 }
   1.297 +#    endif
   1.298 +*/
   1.299 +#  endif
   1.300 +
   1.301 +union _F_rep {
   1.302 +  unsigned short rep[2];
   1.303 +  float val;
   1.304 +};
   1.305 +union _D_rep {
   1.306 +  unsigned short rep[4];
   1.307 +  double val;
   1.308 +};
   1.309 +
   1.310 +#  ifndef _STLP_NO_LONG_DOUBLE
   1.311 +union _LD_rep {
   1.312 +  unsigned short rep[8];
   1.313 +  long double val;
   1.314 +};
   1.315 +#  endif
   1.316 +
   1.317  template <class __dummy>
   1.318 -const _L_rep _LimG<__dummy>::_L_inf  = {_STLP_LDOUBLE_INF_REP}; 
   1.319 +float _STLP_CALL _LimG<__dummy>::get_F_inf() {
   1.320 +  _F_rep _F_inf = {_STLP_FLOAT_INF_REP};
   1.321 +  return _F_inf.val;
   1.322 +}
   1.323  template <class __dummy>
   1.324 -const _L_rep _LimG<__dummy>::_L_qNaN  = {_STLP_LDOUBLE_QNAN_REP}; 
   1.325 +float _STLP_CALL _LimG<__dummy>::get_F_qNaN() {
   1.326 +  _F_rep _F_qNaN = {_STLP_FLOAT_QNAN_REP};
   1.327 +  return _F_qNaN.val;
   1.328 +}
   1.329  template <class __dummy>
   1.330 -const _L_rep _LimG<__dummy>::_L_sNaN  = {_STLP_LDOUBLE_SNAN_REP}; 
   1.331 -# endif
   1.332 +float _STLP_CALL _LimG<__dummy>::get_F_sNaN() {
   1.333 +  _F_rep _F_sNaN = {_STLP_FLOAT_SNAN_REP};
   1.334 +  return _F_sNaN.val;
   1.335 +}
   1.336 +
   1.337  template <class __dummy>
   1.338 -const _D_rep _LimG<__dummy>::_D_inf  = {_STLP_DOUBLE_INF_REP}; 
   1.339 +double _STLP_CALL _LimG<__dummy>::get_D_inf() {
   1.340 +  _D_rep _D_inf = {_STLP_DOUBLE_INF_REP};
   1.341 +  return _D_inf.val;
   1.342 +}
   1.343  template <class __dummy>
   1.344 -const _D_rep _LimG<__dummy>::_D_qNaN  = {_STLP_DOUBLE_QNAN_REP}; 
   1.345 +double _STLP_CALL _LimG<__dummy>::get_D_qNaN() {
   1.346 +  _D_rep _D_qNaN = {_STLP_DOUBLE_QNAN_REP};
   1.347 +  return _D_qNaN.val;
   1.348 +}
   1.349  template <class __dummy>
   1.350 -const _D_rep _LimG<__dummy>::_D_sNaN  = {_STLP_DOUBLE_SNAN_REP}; 
   1.351 +double _STLP_CALL _LimG<__dummy>::get_D_sNaN() {
   1.352 +  _D_rep _D_sNaN = {_STLP_DOUBLE_SNAN_REP};
   1.353 +  return _D_sNaN.val;
   1.354 +}
   1.355 +
   1.356 +#  if !defined (_STLP_NO_LONG_DOUBLE)
   1.357  template <class __dummy>
   1.358 -const _F_rep _LimG<__dummy>::_F_inf  = {_STLP_FLOAT_INF_REP}; 
   1.359 +long double _STLP_CALL _LimG<__dummy>::get_LD_inf() {
   1.360 +  _LD_rep _LD_inf = {_STLP_LDOUBLE_INF_REP};
   1.361 +  return _LD_inf.val;
   1.362 +}
   1.363  template <class __dummy>
   1.364 -const _F_rep _LimG<__dummy>::_F_qNaN  = {_STLP_FLOAT_QNAN_REP}; 
   1.365 +long double _STLP_CALL _LimG<__dummy>::get_LD_qNaN() {
   1.366 +  _LD_rep _LD_qNaN = {_STLP_LDOUBLE_QNAN_REP};
   1.367 +  return _LD_qNaN.val;
   1.368 +}
   1.369  template <class __dummy>
   1.370 -const _F_rep _LimG<__dummy>::_F_sNaN  = {_STLP_FLOAT_SNAN_REP}; 
   1.371 +long double _STLP_CALL _LimG<__dummy>::get_LD_sNaN() {
   1.372 +  _LD_rep _LD_sNaN = {_STLP_LDOUBLE_SNAN_REP};
   1.373 +  return _LD_sNaN.val;
   1.374 +}
   1.375 +#  endif /* _STLP_NO_LONG_DOUBLE */
   1.376  
   1.377 -#else
   1.378 +#endif /* _STLP_EXPOSE_GLOBALS_IMPLEMENTATION */
   1.379  
   1.380 -__DECLARE_INSTANCE( const _F_rep,
   1.381 -                   _LimG<bool>::_F_inf,  = _STLP_FLOAT_INF_REP);
   1.382 -__DECLARE_INSTANCE( const _F_rep,
   1.383 -                   _LimG<bool>::_F_qNaN,  = _STLP_FLOAT_QNAN_REP);
   1.384 -__DECLARE_INSTANCE( const _F_rep,
   1.385 -                   _LimG<bool>::_F_sNaN,  = _STLP_FLOAT_SNAN_REP);
   1.386 -__DECLARE_INSTANCE( const _D_rep,
   1.387 -                   _LimG<bool>::_D_inf,  = _STLP_DOUBLE_INF_REP);
   1.388 -__DECLARE_INSTANCE( const _D_rep,
   1.389 -                   _LimG<bool>::_D_qNaN,  = _STLP_DOUBLE_QNAN_REP);
   1.390 -__DECLARE_INSTANCE( const _D_rep,
   1.391 -                   _LimG<bool>::_D_sNaN,  = _STLP_DOUBLE_SNAN_REP);
   1.392 -# ifndef _STLP_NO_LONG_DOUBLE
   1.393 -__DECLARE_INSTANCE( const _L_rep,
   1.394 -                   _LimG<bool>::_L_inf,  = _STLP_LDOUBLE_INF_REP);
   1.395 -__DECLARE_INSTANCE( const _L_rep,
   1.396 -                   _LimG<bool>::_L_qNaN,  = _STLP_LDOUBLE_QNAN_REP);
   1.397 -__DECLARE_INSTANCE( const _L_rep,
   1.398 -                   _LimG<bool>::_L_sNaN,  = _STLP_LDOUBLE_SNAN_REP);
   1.399 -# endif
   1.400 +#undef _STLP_LIMITS_MIN_TYPE
   1.401 +#undef _STLP_LIMITS_MAX_TYPE
   1.402  
   1.403 -#endif /* STATIC_DATA */   
   1.404 +#undef _STLP_FLOAT_INF_REP
   1.405 +#undef _STLP_FLOAT_QNAN_REP
   1.406 +#undef _STLP_FLOAT_SNAN_REP
   1.407 +#undef _STLP_DOUBLE_INF_REP
   1.408 +#undef _STLP_DOUBLE_QNAN_REP
   1.409 +#undef _STLP_DOUBLE_SNAN_REP
   1.410 +#undef _STLP_LDOUBLE_INF_REP
   1.411 +#undef _STLP_LDOUBLE_QNAN_REP
   1.412 +#undef _STLP_LDOUBLE_SNAN_REP
   1.413  
   1.414 -# endif /* _STLP_EXPOSE_GLOBALS_IMPLEMENTATION */
   1.415 -    
   1.416 -# undef __declare_integer_limits_member
   1.417 -# undef __declare_float_limits_member
   1.418 -# undef __HACK_ILIMITS
   1.419 -# undef __HACK_NOTHING
   1.420 -# undef __declare_int_members
   1.421 -# undef __declare_float_members
   1.422 -# undef _STLP_LIMITS_MIN_TYPE
   1.423 -# undef _STLP_LIMITS_MAX_TYPE
   1.424 -
   1.425 -# undef _STLP_FLOAT_INF_REP
   1.426 -# undef _STLP_FLOAT_QNAN_REP
   1.427 -# undef _STLP_FLOAT_SNAN_REP
   1.428 -# undef _STLP_DOUBLE_INF_REP
   1.429 -# undef _STLP_DOUBLE_QNAN_REP
   1.430 -# undef _STLP_DOUBLE_SNAN_REP
   1.431 -# undef _STLP_LDOUBLE_INF_REP
   1.432 -# undef _STLP_LDOUBLE_QNAN_REP
   1.433 -# undef _STLP_LDOUBLE_SNAN_REP
   1.434 +_STLP_MOVE_TO_STD_NAMESPACE
   1.435  
   1.436  _STLP_END_NAMESPACE
   1.437  
   1.438 -
   1.439  #endif /* _STLP_LIMITS_C_INCLUDED */