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 */