From: Benjamin Kosnik Date: Wed, 20 Jun 2001 03:05:31 +0000 (+0000) Subject: mknumeric_limits: Add static defintions, format. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=54da4898cc9011de71f5458b7313e06840edeb8e;p=gcc.git mknumeric_limits: Add static defintions, format. 2001-06-19 Benjamin Kosnik * 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. From-SVN: r43466 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 1bbe7bc3130..0bf66e831d3 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,14 @@ +2001-06-19 Benjamin Kosnik + + * 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. + * testsuite/17_intro/header_cwctype.cc: Update. + 2001-06-18 Benjamin Kosnik * include/bits/stl_raw_storage_iter.h: Format. Correct derivation. diff --git a/libstdc++-v3/include/c_std/bits/std_cwchar.h b/libstdc++-v3/include/c_std/bits/std_cwchar.h index 6ad9931752d..fffd37acdc9 100644 --- a/libstdc++-v3/include/c_std/bits/std_cwchar.h +++ b/libstdc++-v3/include/c_std/bits/std_cwchar.h @@ -28,7 +28,7 @@ // the GNU General Public License. // -// ISO C++ 14882: ??? +// ISO C++ 14882: 21.4 // #ifndef _CPP_CWCHAR @@ -36,6 +36,7 @@ #include #include +#include #if _GLIBCPP_HAVE_WCHAR_H #pragma GCC system_header diff --git a/libstdc++-v3/include/c_std/bits/std_cwctype.h b/libstdc++-v3/include/c_std/bits/std_cwctype.h index 8fd58d0ecea..53de4d3a1b8 100644 --- a/libstdc++-v3/include/c_std/bits/std_cwctype.h +++ b/libstdc++-v3/include/c_std/bits/std_cwctype.h @@ -56,6 +56,7 @@ #undef towupper #undef towctrans #undef wctrans +#undef wctype namespace std { @@ -82,6 +83,7 @@ namespace std using ::towupper; using ::towctrans; using ::wctrans; + using ::wctype; } #endif 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 < $OUT_H-t #include #include -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 + 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 + const bool + numeric_limits<_Tp>::is_specialized; - template 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 + const int + numeric_limits<_Tp>::digits; + + template + const int + numeric_limits<_Tp>::digits10; + + template + const bool + numeric_limits<_Tp>::is_signed; + + template + const bool + numeric_limits<_Tp>::is_integer; + + template + const bool + numeric_limits<_Tp>::is_exact; + + template + const int + numeric_limits<_Tp>::radix; + + template + const int + numeric_limits<_Tp>::min_exponent; + + template + const int + numeric_limits<_Tp>::min_exponent10; + + template + const int + numeric_limits<_Tp>::max_exponent; + + template + const int + numeric_limits<_Tp>::max_exponent10; - template _Tp __limits_infinity(); - template _Tp __limits_quiet_NaN(); - template _Tp __limits_signaling_NaN(); - template _Tp __limits_denorm_min(); + template + const bool + numeric_limits<_Tp>::has_infinity; + + template + const bool + numeric_limits<_Tp>::has_quiet_NaN; + + template + const bool + numeric_limits<_Tp>::has_signaling_NaN; + + template + const float_denorm_style + numeric_limits<_Tp>::has_denorm; + + template + const bool + numeric_limits<_Tp>::has_denorm_loss; + + template + const bool + numeric_limits<_Tp>::is_iec559; + + template + const bool + numeric_limits<_Tp>::is_bounded; + + template + const bool + numeric_limits<_Tp>::is_modulo; + + template + const bool + numeric_limits<_Tp>::traps; + + template + const bool + numeric_limits<_Tp>::tinyness_before; + + template + const float_round_style + numeric_limits<_Tp>::round_style; + + template _Tp __limits_infinity(); + template _Tp __limits_quiet_NaN(); + template _Tp __limits_signaling_NaN(); + template _Tp __limits_denorm_min(); EOF @@ -271,3 +363,5 @@ EOF mv $OUT_C-t $OUT_C mv $OUT_H-t $OUT_H + + diff --git a/libstdc++-v3/testsuite/17_intro/header_cwchar.cc b/libstdc++-v3/testsuite/17_intro/header_cwchar.cc index cdc91b2a893..0f9974ddb13 100644 --- a/libstdc++-v3/testsuite/17_intro/header_cwchar.cc +++ b/libstdc++-v3/testsuite/17_intro/header_cwchar.cc @@ -27,5 +27,8 @@ int main(void) { // Make sure size_t is in namespace std std::size_t i = 5; + + std::tm mytime; + return 0; } diff --git a/libstdc++-v3/testsuite/17_intro/header_cwctype.cc b/libstdc++-v3/testsuite/17_intro/header_cwctype.cc index 8374a4602ca..ba315b49ce0 100644 --- a/libstdc++-v3/testsuite/17_intro/header_cwctype.cc +++ b/libstdc++-v3/testsuite/17_intro/header_cwctype.cc @@ -22,11 +22,33 @@ #if _GLIBCPP_USE_WCHAR_T #include - // Make sure wint_t is in namespace std - std::wint_t i = 5; +// Make sure wint_t is in namespace std +std::wint_t i = 5; + +// Make sure table 46 is in namespace std. +using std::wctype_t; +using std::wctrans_t; +using std::iswalpha; +using std::iswupper; +using std::iswlower; +using std::iswdigit; +using std::iswxdigit; +using std::iswalnum; +using std::iswspace; +using std::iswpunct; +using std::iswprint; +using std::iswgraph; +using std::iswcntrl; +using std::iswctype; +using std::towctrans; +using std::towlower; +using std::towupper; +using std::wctrans; +using std::wctype; #endif int main(void) { return 0; } + diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits.cc b/libstdc++-v3/testsuite/18_support/numeric_limits.cc index f6173751f7f..4ff7f4a7059 100644 --- a/libstdc++-v3/testsuite/18_support/numeric_limits.cc +++ b/libstdc++-v3/testsuite/18_support/numeric_limits.cc @@ -1,6 +1,6 @@ // 1999-08-23 bkoz -// Copyright (C) 1999 Free Software Foundation +// Copyright (C) 1999, 2001 Free Software Foundation // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -80,9 +80,21 @@ bool test01() return test; } +// test linkage of the generic bits +void test02() +{ + typedef std::numeric_limits b_nl_type; + + // Should probably do all of them... + const int* pi1 = &b_nl_type::digits; + const int* pi2 = &b_nl_type::digits10; + const int* pi3 = &b_nl_type::max_exponent10; + const bool* pb1 = &b_nl_type::traps; +} + int main() { test01(); - + test02(); return 0; }