summaryrefslogtreecommitdiff
path: root/libstdc++-v3/src
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2008-05-20 18:11:34 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2008-05-20 18:11:34 +0000
commit6ea15c6f74c1c91379a9496fb5ce8af537418f68 (patch)
treef6d0edebac2d919d881c984309a9a0736ef21524 /libstdc++-v3/src
parent79f39dd4909403e1faedabba36110f5d9979d087 (diff)
downloadgcc-6ea15c6f74c1c91379a9496fb5ce8af537418f68.tar.gz
2008-05-20 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/33979 (partial) * include/tr1_impl/functional_hash.h (hash<char16_t>, hash<char32_t>): Add specializations. * include/tr1_impl/type_traits (is_integral<char16_t>, is_integral<char32_t>): Likewise. * include/std/limits (numeric_limits<char16_t>, numeric_limits<char32_t>): Likewise. * src/limits_c++0x.cc: Add. * src/Makefile.am: Update. * testsuite/20_util/hash/requirements/explicit_instantiation.cc: Update. * testsuite/20_util/is_integral/value.cc: New. * testsuite/20_util/is_integral/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_integral/requirements/ explicit_instantiation.cc: Likewise. * testsuite/18_support/numeric_limits/char16_32_t.cc: Likewise. * config/abi/pre/gnu.ver: Export new numeric_limits symbols at GLIBCXX_3.4.11. * configure: Regenerate. * src/Makefile.in: Likewise. * config.h.in: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135668 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/src')
-rw-r--r--libstdc++-v3/src/Makefile.am9
-rw-r--r--libstdc++-v3/src/Makefile.in30
-rw-r--r--libstdc++-v3/src/limits_c++0x.cc81
3 files changed, 107 insertions, 13 deletions
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index 0b5f2a70885..f5d99c63525 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -1,6 +1,7 @@
## Makefile for the src subdirectory of the GNU C++ Standard library.
##
-## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005
+## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+## 2006, 2007, 2008
## Free Software Foundation, Inc.
##
## This file is part of the libstdc++ version 3 distribution.
@@ -155,6 +156,7 @@ sources = \
ios_init.cc \
ios_locale.cc \
limits.cc \
+ limits_c++0x.cc \
list.cc \
debug_list.cc \
locale.cc \
@@ -261,6 +263,11 @@ hashtable_c++0x.lo: hashtable_c++0x.cc
hashtable_c++0x.o: hashtable_c++0x.cc
$(CXXCOMPILE) -std=gnu++0x -c $<
+limits_c++0x.lo: limits_c++0x.cc
+ $(LTCXXCOMPILE) -std=gnu++0x -c $<
+limits_c++0x.o: limits_c++0x.cc
+ $(CXXCOMPILE) -std=gnu++0x -c $<
+
date_time.lo: date_time.cc
$(LTCXXCOMPILE) -std=gnu++0x -c $<
date_time.o: date_time.cc
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index c1e56fb4071..508a399e7e8 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -77,17 +77,17 @@ am__libstdc___la_SOURCES_DIST = atomic.cc bitmap_allocator.cc \
complex_io.cc ctype.cc date_time.cc debug.cc functexcept.cc \
hash.cc hash_c++0x.cc globals_io.cc hashtable.cc \
hashtable_c++0x.cc ios.cc ios_failure.cc ios_init.cc \
- ios_locale.cc limits.cc list.cc debug_list.cc locale.cc \
- locale_init.cc locale_facets.cc localename.cc stdexcept.cc \
- strstream.cc system_error.cc tree.cc allocator-inst.cc \
- concept-inst.cc fstream-inst.cc ext-inst.cc ios-inst.cc \
- iostream-inst.cc istream-inst.cc istream.cc locale-inst.cc \
- misc-inst.cc ostream-inst.cc sstream-inst.cc streambuf-inst.cc \
- streambuf.cc string-inst.cc valarray-inst.cc wlocale-inst.cc \
- wstring-inst.cc mutex.cc condition_variable.cc atomicity.cc \
- codecvt_members.cc collate_members.cc ctype_members.cc \
- messages_members.cc monetary_members.cc numeric_members.cc \
- time_members.cc basic_file.cc c++locale.cc \
+ ios_locale.cc limits.cc limits_c++0x.cc list.cc debug_list.cc \
+ locale.cc locale_init.cc locale_facets.cc localename.cc \
+ stdexcept.cc strstream.cc system_error.cc tree.cc \
+ allocator-inst.cc concept-inst.cc fstream-inst.cc ext-inst.cc \
+ ios-inst.cc iostream-inst.cc istream-inst.cc istream.cc \
+ locale-inst.cc misc-inst.cc ostream-inst.cc sstream-inst.cc \
+ streambuf-inst.cc streambuf.cc string-inst.cc valarray-inst.cc \
+ wlocale-inst.cc wstring-inst.cc mutex.cc condition_variable.cc \
+ atomicity.cc codecvt_members.cc collate_members.cc \
+ ctype_members.cc messages_members.cc monetary_members.cc \
+ numeric_members.cc time_members.cc basic_file.cc c++locale.cc \
compatibility-ldbl.cc parallel_list.cc parallel_settings.cc
am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \
ctype_members.lo messages_members.lo monetary_members.lo \
@@ -102,7 +102,7 @@ am__objects_5 = atomic.lo bitmap_allocator.lo pool_allocator.lo \
ctype.lo date_time.lo debug.lo functexcept.lo hash.lo \
hash_c++0x.lo globals_io.lo hashtable.lo hashtable_c++0x.lo \
ios.lo ios_failure.lo ios_init.lo ios_locale.lo limits.lo \
- list.lo debug_list.lo locale.lo locale_init.lo \
+ limits_c++0x.lo list.lo debug_list.lo locale.lo locale_init.lo \
locale_facets.lo localename.lo stdexcept.lo strstream.lo \
system_error.lo tree.lo allocator-inst.lo concept-inst.lo \
fstream-inst.lo ext-inst.lo ios-inst.lo iostream-inst.lo \
@@ -392,6 +392,7 @@ sources = \
ios_init.cc \
ios_locale.cc \
limits.cc \
+ limits_c++0x.cc \
list.cc \
debug_list.cc \
locale.cc \
@@ -856,6 +857,11 @@ hashtable_c++0x.lo: hashtable_c++0x.cc
hashtable_c++0x.o: hashtable_c++0x.cc
$(CXXCOMPILE) -std=gnu++0x -c $<
+limits_c++0x.lo: limits_c++0x.cc
+ $(LTCXXCOMPILE) -std=gnu++0x -c $<
+limits_c++0x.o: limits_c++0x.cc
+ $(CXXCOMPILE) -std=gnu++0x -c $<
+
date_time.lo: date_time.cc
$(LTCXXCOMPILE) -std=gnu++0x -c $<
date_time.o: date_time.cc
diff --git a/libstdc++-v3/src/limits_c++0x.cc b/libstdc++-v3/src/limits_c++0x.cc
new file mode 100644
index 00000000000..d3d5df68ab8
--- /dev/null
+++ b/libstdc++-v3/src/limits_c++0x.cc
@@ -0,0 +1,81 @@
+// std::limits definitions -*- C++ -*-
+
+// Copyright (C) 2008 Free Software Foundation, Inc.
+//
+// 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
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <limits>
+
+namespace std
+{
+ // char16_t
+ const bool numeric_limits<char16_t>::is_specialized;
+ const int numeric_limits<char16_t>::digits;
+ const int numeric_limits<char16_t>::digits10;
+ const bool numeric_limits<char16_t>::is_signed;
+ const bool numeric_limits<char16_t>::is_integer;
+ const bool numeric_limits<char16_t>::is_exact;
+ const int numeric_limits<char16_t>::radix;
+ const int numeric_limits<char16_t>::min_exponent;
+ const int numeric_limits<char16_t>::min_exponent10;
+ const int numeric_limits<char16_t>::max_exponent;
+ const int numeric_limits<char16_t>::max_exponent10;
+ const bool numeric_limits<char16_t>::has_infinity;
+ const bool numeric_limits<char16_t>::has_quiet_NaN;
+ const bool numeric_limits<char16_t>::has_signaling_NaN;
+ const float_denorm_style numeric_limits<char16_t>::has_denorm;
+ const bool numeric_limits<char16_t>::has_denorm_loss;
+ const bool numeric_limits<char16_t>::is_iec559;
+ const bool numeric_limits<char16_t>::is_bounded;
+ const bool numeric_limits<char16_t>::is_modulo;
+ const bool numeric_limits<char16_t>::traps;
+ const bool numeric_limits<char16_t>::tinyness_before;
+ const float_round_style numeric_limits<char16_t>::round_style;
+
+ // char32_t
+ const bool numeric_limits<char32_t>::is_specialized;
+ const int numeric_limits<char32_t>::digits;
+ const int numeric_limits<char32_t>::digits10;
+ const bool numeric_limits<char32_t>::is_signed;
+ const bool numeric_limits<char32_t>::is_integer;
+ const bool numeric_limits<char32_t>::is_exact;
+ const int numeric_limits<char32_t>::radix;
+ const int numeric_limits<char32_t>::min_exponent;
+ const int numeric_limits<char32_t>::min_exponent10;
+ const int numeric_limits<char32_t>::max_exponent;
+ const int numeric_limits<char32_t>::max_exponent10;
+ const bool numeric_limits<char32_t>::has_infinity;
+ const bool numeric_limits<char32_t>::has_quiet_NaN;
+ const bool numeric_limits<char32_t>::has_signaling_NaN;
+ const float_denorm_style numeric_limits<char32_t>::has_denorm;
+ const bool numeric_limits<char32_t>::has_denorm_loss;
+ const bool numeric_limits<char32_t>::is_iec559;
+ const bool numeric_limits<char32_t>::is_bounded;
+ const bool numeric_limits<char32_t>::is_modulo;
+ const bool numeric_limits<char32_t>::traps;
+ const bool numeric_limits<char32_t>::tinyness_before;
+ const float_round_style numeric_limits<char32_t>::round_style;
+}