summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2001-06-20 03:05:31 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2001-06-20 03:05:31 +0000
commit637dcfcd9dc8973a2404f0c5768317f3c3be3f11 (patch)
tree3290a5f379f7019a16033b44dfb5dc3ee2ca1465 /libstdc++-v3
parentf7e364476dae9e151ccc6e21f7f3a846db946536 (diff)
downloadgcc-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')
-rw-r--r--libstdc++-v3/ChangeLog11
-rw-r--r--libstdc++-v3/include/c_std/bits/std_cwchar.h3
-rw-r--r--libstdc++-v3/include/c_std/bits/std_cwctype.h2
-rwxr-xr-xlibstdc++-v3/mknumeric_limits208
-rw-r--r--libstdc++-v3/testsuite/17_intro/header_cwchar.cc3
-rw-r--r--libstdc++-v3/testsuite/17_intro/header_cwctype.cc26
-rw-r--r--libstdc++-v3/testsuite/18_support/numeric_limits.cc16
7 files changed, 207 insertions, 62 deletions
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 <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.
+ * testsuite/17_intro/header_cwctype.cc: Update.
+
2001-06-18 Benjamin Kosnik <bkoz@redhat.com>
* 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 <bits/c++config.h>
#include <bits/std_cstddef.h>
+#include <bits/std_ctime.h>
#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 <<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
+
+
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 <cwctype>
- // 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> 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;
}