diff options
author | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-06-20 03:05:31 +0000 |
---|---|---|
committer | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-06-20 03:05:31 +0000 |
commit | 637dcfcd9dc8973a2404f0c5768317f3c3be3f11 (patch) | |
tree | 3290a5f379f7019a16033b44dfb5dc3ee2ca1465 /libstdc++-v3/mknumeric_limits | |
parent | f7e364476dae9e151ccc6e21f7f3a846db946536 (diff) | |
download | gcc-637dcfcd9dc8973a2404f0c5768317f3c3be3f11.tar.gz |
2001-06-19 Benjamin Kosnik <bkoz@redhat.com>
* mknumeric_limits: Add static defintions, format.
* testsuite/18_support/numeric_limits.cc (test02): Add test.
* include/c_std/bits/std_cwchar.h: Include ctime.
* testsuite/17_intro/header_cwchar.cc : Check.
* include/c_std/bits/std_cwctype.h: Inject wctype.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43466 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/mknumeric_limits')
-rwxr-xr-x | libstdc++-v3/mknumeric_limits | 208 |
1 files changed, 151 insertions, 57 deletions
diff --git a/libstdc++-v3/mknumeric_limits b/libstdc++-v3/mknumeric_limits index 635e280abd6..53d4106be45 100755 --- a/libstdc++-v3/mknumeric_limits +++ b/libstdc++-v3/mknumeric_limits @@ -99,67 +99,159 @@ cat <<EOF > $OUT_H-t #include <bits/c++config.h> #include <bits/std_cfloat.h> -namespace std { - - enum float_round_style { - round_indeterminate = -1, - round_toward_zero = 0, - round_to_nearest = 1, - round_toward_infinity = 2, - round_toward_neg_infinity = 3 +namespace std +{ + enum float_round_style + { + round_indeterminate = -1, + round_toward_zero = 0, + round_to_nearest = 1, + round_toward_infinity = 2, + round_toward_neg_infinity = 3 + }; + + enum float_denorm_style + { + denorm_indeterminate = -1, + denorm_absent = 0, + denorm_present = 1 + }; + + template<typename _Tp> + struct numeric_limits + { + static const bool is_specialized = false; + + static _Tp min() throw() { return static_cast<_Tp>(0); } + static _Tp max() throw() { return static_cast<_Tp>(0); } + + static const int digits = 0; + static const int digits10 = 0; + static const bool is_signed = false; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = 0; + + static _Tp epsilon() throw() { return static_cast<_Tp>(0); } + static _Tp round_error() throw() { return static_cast<_Tp>(0); } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static _Tp infinity() throw() { return static_cast<_Tp>(0); } + static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); } + static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); } + static _Tp denorm_min() throw() { return static_cast<_Tp>(0); } + + static const bool is_iec559 = false; + static const bool is_bounded = false; + static const bool is_modulo = false; + + static const bool traps = false; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; }; - enum float_denorm_style { - denorm_indeterminate = -1, - denorm_absent = 0, - denorm_present = 1 - }; + template<typename _Tp> + const bool + numeric_limits<_Tp>::is_specialized; - template<typename _Tp> struct numeric_limits { - static const bool is_specialized = false; - - static _Tp min() throw() { return static_cast<_Tp>(0); } - static _Tp max() throw() { return static_cast<_Tp>(0); } - - static const int digits = 0; - static const int digits10 = 0; - static const bool is_signed = false; - static const bool is_integer = false; - static const bool is_exact = false; - static const int radix = 0; - - static _Tp epsilon() throw() { return static_cast<_Tp>(0); } - static _Tp round_error() throw() { return static_cast<_Tp>(0); } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static _Tp infinity() throw() { return static_cast<_Tp>(0); } - static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); } - static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); } - static _Tp denorm_min() throw() { return static_cast<_Tp>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = false; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; + template<typename _Tp> + const int + numeric_limits<_Tp>::digits; + + template<typename _Tp> + const int + numeric_limits<_Tp>::digits10; + + template<typename _Tp> + const bool + numeric_limits<_Tp>::is_signed; + + template<typename _Tp> + const bool + numeric_limits<_Tp>::is_integer; + + template<typename _Tp> + const bool + numeric_limits<_Tp>::is_exact; + + template<typename _Tp> + const int + numeric_limits<_Tp>::radix; + + template<typename _Tp> + const int + numeric_limits<_Tp>::min_exponent; + + template<typename _Tp> + const int + numeric_limits<_Tp>::min_exponent10; + + template<typename _Tp> + const int + numeric_limits<_Tp>::max_exponent; + + template<typename _Tp> + const int + numeric_limits<_Tp>::max_exponent10; - template<typename _Tp> _Tp __limits_infinity(); - template<typename _Tp> _Tp __limits_quiet_NaN(); - template<typename _Tp> _Tp __limits_signaling_NaN(); - template<typename _Tp> _Tp __limits_denorm_min(); + template<typename _Tp> + const bool + numeric_limits<_Tp>::has_infinity; + + template<typename _Tp> + const bool + numeric_limits<_Tp>::has_quiet_NaN; + + template<typename _Tp> + const bool + numeric_limits<_Tp>::has_signaling_NaN; + + template<typename _Tp> + const float_denorm_style + numeric_limits<_Tp>::has_denorm; + + template<typename _Tp> + const bool + numeric_limits<_Tp>::has_denorm_loss; + + template<typename _Tp> + const bool + numeric_limits<_Tp>::is_iec559; + + template<typename _Tp> + const bool + numeric_limits<_Tp>::is_bounded; + + template<typename _Tp> + const bool + numeric_limits<_Tp>::is_modulo; + + template<typename _Tp> + const bool + numeric_limits<_Tp>::traps; + + template<typename _Tp> + const bool + numeric_limits<_Tp>::tinyness_before; + + template<typename _Tp> + const float_round_style + numeric_limits<_Tp>::round_style; + + template<typename _Tp> _Tp __limits_infinity(); + template<typename _Tp> _Tp __limits_quiet_NaN(); + template<typename _Tp> _Tp __limits_signaling_NaN(); + template<typename _Tp> _Tp __limits_denorm_min(); EOF @@ -271,3 +363,5 @@ EOF mv $OUT_C-t $OUT_C mv $OUT_H-t $OUT_H + + |