]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libstdc++/36104 (gnu-versioned-namespace is broken)
authorBenjamin Kosnik <bkoz@redhat.com>
Sat, 15 Jan 2011 00:27:10 +0000 (00:27 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Sat, 15 Jan 2011 00:27:10 +0000 (00:27 +0000)
2011-01-14  Benjamin Kosnik  <bkoz@redhat.com>

PR libstdc++/36104
* include/Makefile.am (bits_sup_headers, stamp-bits-sup): New.
* include/Makefile.in: Regenerate.
* libsupc++/Makefile.am (std_HEADERS, bits_HEADERS): New.
(install-stdHEADERS, install-bitsHEADERS): New.
* libsupc++/Makefile.in: Regenerate.

* include/bits/c++config: Update for inline namespaces.
* libsupc++/cxxabi-forced.h: To...
* libsupc++/cxxabi_forced.h: ...this.
* libsupc++/hash_bytes.h: Separate file.
* libsupc++/typeinfo: Use it.
* libsupc++/exception: Adjust for bits subdirectory.
* libsupc++/eh_aux_runtime.cc: Same.
* libsupc++/eh_ptr.cc: Same.
* libsupc++/new_op.cc: Same.
* libsupc++/exception_defines.h: Same.
* libsupc++/nested_exception.h: Same.
* libsupc++/eh_terminate.cc: Same.
* libsupc++/vec.cc: Same.
* libsupc++/vterminate.cc: Same.
* libsupc++/exception_ptr.h: Same.
* libsupc++/eh_personality.cc: Same.
* libsupc++/eh_call.cc: Same.
* libsupc++/new_opnt.cc: Same.
* libsupc++/hash_bytes.cc: Same.
* config/cpu/arm/cxxabi_tweaks.h: Same.
* config/cpu/generic/cxxabi_tweaks.h: Same.
* libsupc++/cxxabi.h: Same. Consolidate _GLIBCXX_NOTHROW defines.
* include/std/bitset: Same.
* include/ext/vstring.tcc: Same.
* include/bits/hashtable.h: Same.
* include/bits/functional_hash.h: Same.
* include/bits/hashtable_policy.h: Same.
* include/bits/basic_string.h: Same.
* include/bits/istream.tcc: Same.
* include/bits/ostream.tcc: Same.
* include/bits/algorithmfwd.h: Same.
* include/bits/basic_string.tcc: Same.
* include/bits/ostream_insert.h: Same.
* include/bits/fstream.tcc: Same.
* include/bits/functexcept.h: Same.

* doc/doxygen/user.cfg.in: Adjust names.

* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.

From-SVN: r168831

41 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h
libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h
libstdc++-v3/doc/doxygen/user.cfg.in
libstdc++-v3/include/Makefile.am
libstdc++-v3/include/Makefile.in
libstdc++-v3/include/bits/algorithmfwd.h
libstdc++-v3/include/bits/basic_string.h
libstdc++-v3/include/bits/basic_string.tcc
libstdc++-v3/include/bits/c++config
libstdc++-v3/include/bits/fstream.tcc
libstdc++-v3/include/bits/functexcept.h
libstdc++-v3/include/bits/functional_hash.h
libstdc++-v3/include/bits/hashtable.h
libstdc++-v3/include/bits/hashtable_policy.h
libstdc++-v3/include/bits/istream.tcc
libstdc++-v3/include/bits/ostream.tcc
libstdc++-v3/include/bits/ostream_insert.h
libstdc++-v3/include/ext/vstring.tcc
libstdc++-v3/include/std/bitset
libstdc++-v3/libsupc++/Makefile.am
libstdc++-v3/libsupc++/Makefile.in
libstdc++-v3/libsupc++/cxxabi.h
libstdc++-v3/libsupc++/cxxabi_forced.h [moved from libstdc++-v3/libsupc++/cxxabi-forced.h with 84% similarity]
libstdc++-v3/libsupc++/eh_aux_runtime.cc
libstdc++-v3/libsupc++/eh_call.cc
libstdc++-v3/libsupc++/eh_personality.cc
libstdc++-v3/libsupc++/eh_ptr.cc
libstdc++-v3/libsupc++/eh_terminate.cc
libstdc++-v3/libsupc++/exception
libstdc++-v3/libsupc++/exception_defines.h
libstdc++-v3/libsupc++/exception_ptr.h
libstdc++-v3/libsupc++/hash_bytes.cc
libstdc++-v3/libsupc++/hash_bytes.h [new file with mode: 0644]
libstdc++-v3/libsupc++/nested_exception.h
libstdc++-v3/libsupc++/new_op.cc
libstdc++-v3/libsupc++/new_opnt.cc
libstdc++-v3/libsupc++/typeinfo
libstdc++-v3/libsupc++/vec.cc
libstdc++-v3/libsupc++/vterminate.cc
libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc

index cd122ad4d6a1d40fdd339cd6b1aef5f29e9e8e21..57295dfd86fa0f4e9bb146796b12864eb0c680e6 100644 (file)
@@ -1,3 +1,52 @@
+2011-01-14  Benjamin Kosnik  <bkoz@redhat.com>
+
+       PR libstdc++/36104
+       * include/Makefile.am (bits_sup_headers, stamp-bits-sup): New.
+       * include/Makefile.in: Regenerate.
+       * libsupc++/Makefile.am (std_HEADERS, bits_HEADERS): New.
+       (install-stdHEADERS, install-bitsHEADERS): New.
+       * libsupc++/Makefile.in: Regenerate.
+
+       * include/bits/c++config: Update for inline namespaces.
+       * libsupc++/cxxabi-forced.h: To...
+       * libsupc++/cxxabi_forced.h: ...this.
+       * libsupc++/hash_bytes.h: Separate file.
+       * libsupc++/typeinfo: Use it.
+       * libsupc++/exception: Adjust for bits subdirectory.
+       * libsupc++/eh_aux_runtime.cc: Same.
+       * libsupc++/eh_ptr.cc: Same.
+       * libsupc++/new_op.cc: Same.
+       * libsupc++/exception_defines.h: Same.
+       * libsupc++/nested_exception.h: Same.
+       * libsupc++/eh_terminate.cc: Same.
+       * libsupc++/vec.cc: Same.
+       * libsupc++/vterminate.cc: Same.
+       * libsupc++/exception_ptr.h: Same.
+       * libsupc++/eh_personality.cc: Same.
+       * libsupc++/eh_call.cc: Same.
+       * libsupc++/new_opnt.cc: Same.
+       * libsupc++/hash_bytes.cc: Same.
+       * config/cpu/arm/cxxabi_tweaks.h: Same.
+       * config/cpu/generic/cxxabi_tweaks.h: Same.
+       * libsupc++/cxxabi.h: Same. Consolidate _GLIBCXX_NOTHROW defines.
+       * include/std/bitset: Same.
+       * include/ext/vstring.tcc: Same.
+       * include/bits/hashtable.h: Same.
+       * include/bits/functional_hash.h: Same.
+       * include/bits/hashtable_policy.h: Same.
+       * include/bits/basic_string.h: Same.
+       * include/bits/istream.tcc: Same.
+       * include/bits/ostream.tcc: Same.
+       * include/bits/algorithmfwd.h: Same.
+       * include/bits/basic_string.tcc: Same.
+       * include/bits/ostream_insert.h: Same.
+       * include/bits/fstream.tcc: Same.
+       * include/bits/functexcept.h: Same.
+
+       * doc/doxygen/user.cfg.in: Adjust names.
+
+       * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.
+
 2011-01-14  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * testsuite/25_algorithms/is_permutation/check_type.cc: Minor
index 1bfc58810f4972322c42449d53e44ca306c9080f..2ac349dfc179e95194c34ef65840967a638444c9 100644 (file)
@@ -1,6 +1,6 @@
 // Control various target specific ABI tweaks.  ARM version.
 
-// Copyright (C) 2004, 2006, 2008, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2006, 2008, 2009, 2011 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
@@ -22,8 +22,9 @@
 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 // <http://www.gnu.org/licenses/>.
 
-/** @file cxxabi_tweaks.h
- *  The header provides an CPU-variable interface to the C++ ABI.
+/** @file bits/cxxabi_tweaks.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{cxxabi.h}
  */
 
 #ifndef _CXXABI_TWEAKS_H
index 8354691e140890a8c38ad1f0daaf8738dfd69c7f..f48f73e0003d6295d01f52e9fcb1567421aa5098 100644 (file)
@@ -1,6 +1,6 @@
 // Control various target specific ABI tweaks.  Generic version.
 
-// Copyright (C) 2004, 2006, 2008, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2006, 2008, 2009, 2011 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
@@ -22,8 +22,9 @@
 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 // <http://www.gnu.org/licenses/>.
 
-/** @file cxxabi_tweaks.h
- *  The header provides an CPU-variable interface to the C++ ABI.
+/** @file bits/cxxabi_tweaks.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{cxxabi.h}
  */
 
 #ifndef _CXXABI_TWEAKS_H
index be7119ca8213ed509ac7663ef70ef4b9417dbd9e..442bba21b06306cabe47b555faac952f69074160 100644 (file)
@@ -586,7 +586,7 @@ WARN_LOGFILE           =
 
 INPUT                  = @srcdir@/doc/doxygen/doxygroups.cc \
                          @srcdir@/libsupc++/cxxabi.h \
-                         @srcdir@/libsupc++/cxxabi-forced.h \
+                         @srcdir@/libsupc++/cxxabi_forced.h \
                          @srcdir@/libsupc++/exception \
                          @srcdir@/libsupc++/exception_defines.h \
                          @srcdir@/libsupc++/exception_ptr.h \
index 6587179a4ef21d2b59d7f050bb17c2a99621fdee..5b6352e33b85635ac2004882e240068d2c8de4ac 100644 (file)
@@ -1,6 +1,7 @@
 ## Makefile for the include subdirectory of the GNU C++ Standard library.
 ##
-## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+## 2011
 ## Free Software Foundation, Inc.
 ##
 ## This file is part of the libstdc++ version 3 distribution.
@@ -172,6 +173,14 @@ bits_headers = \
        ${bits_srcdir}/valarray_after.h \
        ${bits_srcdir}/vector.tcc
 
+bits_sup_srcdir = ${glibcxx_srcdir}/libsupc++
+bits_sup_headers = \
+        ${bits_sup_srcdir}/cxxabi_forced.h \
+        ${bits_sup_srcdir}/exception_defines.h \
+        ${bits_sup_srcdir}/exception_ptr.h \
+        ${bits_sup_srcdir}/hash_bytes.h \
+        ${bits_sup_srcdir}/nested_exception.h
+
 backward_srcdir = ${glibcxx_srcdir}/include/backward
 backward_builddir = ./backward
 backward_headers = \
@@ -888,7 +897,7 @@ endif
 # List of all timestamp files.  By keeping only one copy of this list, both
 # CLEANFILES and all-local are kept up-to-date.
 allstamped = \
-       stamp-std stamp-bits stamp-c_base stamp-c_compatibility \
+       stamp-std stamp-bits stamp-bits-sup stamp-c_base stamp-c_compatibility \
        stamp-backward stamp-ext stamp-pb stamp-tr1 stamp-decimal \
        stamp-debug stamp-parallel stamp-profile stamp-profile-impl \
        stamp-host 
@@ -917,6 +926,10 @@ stamp-bits: ${bits_headers}
        @-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
        @$(STAMP) stamp-bits
 
+stamp-bits-sup: stamp-bits ${bits_sup_headers}
+       @-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
+       @$(STAMP) stamp-bits-sup
+
 stamp-c_base: ${c_base_headers}
        @-mkdir -p ${c_base_builddir}
        @-cd ${c_base_builddir} && $(LN_S) $? . 2>/dev/null
@@ -1071,14 +1084,14 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
                              stamp-namespace-version \
                              stamp-visibility
        @date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
-       nsa_version=`cat stamp-namespace-version` ;\
+       ns_version=`cat stamp-namespace-version` ;\
        visibility=`cat stamp-visibility` ;\
        ldbl_compat='s,g,g,' ;\
        grep "^[        ]*#[    ]*define[       ][      ]*_GLIBCXX_LONG_DOUBLE_COMPAT[  ][      ]*1[    ]*$$" \
        ${CONFIG_HEADER} > /dev/null 2>&1 \
        && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
        sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \
-       -e "s,define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION, define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION $$nsa_version," \
+       -e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \
        -e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \
        -e "$$ldbl_compat" \
             < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
index 3260ef9bc200191bd5d94eb17e6d42ca791670f5..d78315885cc66f5be74e1eb0f8c0e7239a450900 100644 (file)
@@ -423,6 +423,14 @@ bits_headers = \
        ${bits_srcdir}/valarray_after.h \
        ${bits_srcdir}/vector.tcc
 
+bits_sup_srcdir = ${glibcxx_srcdir}/libsupc++
+bits_sup_headers = \
+        ${bits_sup_srcdir}/cxxabi_forced.h \
+        ${bits_sup_srcdir}/exception_defines.h \
+        ${bits_sup_srcdir}/exception_ptr.h \
+        ${bits_sup_srcdir}/hash_bytes.h \
+        ${bits_sup_srcdir}/nested_exception.h
+
 backward_srcdir = ${glibcxx_srcdir}/include/backward
 backward_builddir = ./backward
 backward_headers = \
@@ -1125,7 +1133,7 @@ PCHFLAGS = -x c++-header -nostdinc++ $(CXXFLAGS)
 # List of all timestamp files.  By keeping only one copy of this list, both
 # CLEANFILES and all-local are kept up-to-date.
 allstamped = \
-       stamp-std stamp-bits stamp-c_base stamp-c_compatibility \
+       stamp-std stamp-bits stamp-bits-sup stamp-c_base stamp-c_compatibility \
        stamp-backward stamp-ext stamp-pb stamp-tr1 stamp-decimal \
        stamp-debug stamp-parallel stamp-profile stamp-profile-impl \
        stamp-host 
@@ -1316,6 +1324,10 @@ stamp-bits: ${bits_headers}
        @-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
        @$(STAMP) stamp-bits
 
+stamp-bits-sup: stamp-bits ${bits_sup_headers}
+       @-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
+       @$(STAMP) stamp-bits-sup
+
 stamp-c_base: ${c_base_headers}
        @-mkdir -p ${c_base_builddir}
        @-cd ${c_base_builddir} && $(LN_S) $? . 2>/dev/null
@@ -1464,14 +1476,14 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
                              stamp-namespace-version \
                              stamp-visibility
        @date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
-       nsa_version=`cat stamp-namespace-version` ;\
+       ns_version=`cat stamp-namespace-version` ;\
        visibility=`cat stamp-visibility` ;\
        ldbl_compat='s,g,g,' ;\
        grep "^[        ]*#[    ]*define[       ][      ]*_GLIBCXX_LONG_DOUBLE_COMPAT[  ][      ]*1[    ]*$$" \
        ${CONFIG_HEADER} > /dev/null 2>&1 \
        && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
        sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \
-       -e "s,define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION, define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION $$nsa_version," \
+       -e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \
        -e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \
        -e "$$ldbl_compat" \
             < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
index fd5dbb211e169cf2d342e61b6727fcd5fb6d7584..f6f4eacd1f65f0af043c1a0c6a95b3e190645d7c 100644 (file)
@@ -804,7 +804,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
 
 _GLIBCXX_END_NESTED_NAMESPACE
 
-#ifdef _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
+#ifdef _GLIBCXX_PARALLEL
 # include <parallel/algorithmfwd.h>
 #endif
 
index bffa8afd4c698af91004e0ef1cf7892ab4043702..03c89620ddfcee22b30d1131fecadb73a6ebab6d 100644 (file)
@@ -1,7 +1,7 @@
 // Components for manipulating sequences of characters -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010
+// 2006, 2007, 2008, 2009, 2010, 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
index a64c7815485acbb7f9e229fa59ae73e27f0a3787..2b22c6b0acf38628ac3a145a4a3a623fb8caa972 100644 (file)
@@ -1,7 +1,7 @@
 // Components for manipulating sequences of characters -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010
+// 2006, 2007, 2008, 2009, 2010, 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -41,7 +41,7 @@
 
 #pragma GCC system_header
 
-#include <cxxabi-forced.h>
+#include <bits/cxxabi_forced.h>
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
index 400c244eb98a3da1f1b77491b05c3de84ca1dd3f..7465f364d496897706a93cc6fe547064a18a16ad 100644 (file)
@@ -1,7 +1,7 @@
 // Predefined symbols and macros -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+// 2006, 2007, 2008, 2009, 2010, 2011 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
@@ -32,7 +32,7 @@
 #define _GLIBCXX_CXX_CONFIG_H 1
 
 // The current version of the C++ library in compressed ISO date format.
-#define __GLIBCXX__ 
+#define __GLIBCXX__
 
 // Macros for various attributes.
 #ifndef _GLIBCXX_PURE
@@ -49,7 +49,7 @@
 
 #ifndef _GLIBCXX_NOTHROW
 # ifdef __cplusplus
-#  define _GLIBCXX_NOTHROW throw() 
+#  define _GLIBCXX_NOTHROW throw()
 # else
 #  define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
 # endif
@@ -87,7 +87,7 @@ namespace std
 {
   typedef __SIZE_TYPE__        size_t;
   typedef __PTRDIFF_TYPE__     ptrdiff_t;
-  
+
 #ifdef __GXX_EXPERIMENTAL_CXX0X__
   typedef decltype(nullptr)    nullptr_t;
 #endif
@@ -103,23 +103,19 @@ namespace std
 #ifndef _GLIBCXX_CONSTEXPR
 # ifdef __GXX_EXPERIMENTAL_CXX0X__
 #  define _GLIBCXX_CONSTEXPR constexpr
-# else
-#  define _GLIBCXX_CONSTEXPR 
-# endif
-#endif
-
-#ifndef _GLIBCXX_USE_CONSTEXPR
-# ifdef __GXX_EXPERIMENTAL_CXX0X__
 #  define _GLIBCXX_USE_CONSTEXPR constexpr
 # else
+#  define _GLIBCXX_CONSTEXPR
 #  define _GLIBCXX_USE_CONSTEXPR const
 # endif
 #endif
 
-// Macros for activating various namespace association modes.
-// _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
-// _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
-// _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
+// Macros for activating various inline namespaces.
+//
+// _GLIBCXX_NAMESPACE_DEBUG
+// _GLIBCXX_NAMESPACE_PARALLEL
+// _GLIBCXX_NAMESPACE_PROFILE
+// _GLIBCXX_NAMESPACE_VERSION
 
 // Guide to libstdc++ namespaces.
 /*
@@ -127,6 +123,7 @@ namespace std
   {
     namespace __debug { }
     namespace __parallel { }
+    namespace __profile { }
     namespace __norm { } // __normative, __shadow, __replaced
     namespace __cxx1998 { }
 
@@ -135,26 +132,26 @@ namespace std
 */
 
 #ifdef _GLIBCXX_DEBUG
-# define _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 1
+# define _GLIBCXX_INLINE_DEBUG 1
 #endif
 
 #ifdef _GLIBCXX_PARALLEL
-# define _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL 1
+# define _GLIBCXX_INLINE_PARALLEL 1
 #endif
 
-// Namespace association for profile
+// Namespace association for profile.
 #ifdef _GLIBCXX_PROFILE
-# define _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE 1
+# define _GLIBCXX_INLINE_PROFILE 1
 #endif
 
-#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 
+#define _GLIBCXX_INLINE_VERSION
 
-// Defined if any namespace association modes are active.
-#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG \
-  || _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL \
-  || _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE \
-  || _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
-# define _GLIBCXX_USE_NAMESPACE_ASSOCIATION 1
+// Defined if inline namespaces modes are active.
+#if _GLIBCXX_INLINE_DEBUG \
+  || _GLIBCXX_INLINE_PARALLEL \
+  || _GLIBCXX_INLINE_PROFILE \
+  || _GLIBCXX_INLINE_VERSION
+# define _GLIBCXX_USE_INLINE_NAMESPACES 1
 #endif
 
 // Macros for namespace scope. Either namespace std:: or the name
@@ -169,7 +166,7 @@ namespace std
 // _GLIBCXX_END_NAMESPACE
 // _GLIBCXX_BEGIN_NESTED_NAMESPACE
 // _GLIBCXX_END_NESTED_NAMESPACE
-#ifndef _GLIBCXX_USE_NAMESPACE_ASSOCIATION
+#ifndef _GLIBCXX_USE_INLINE_NAMESPACES
 # define _GLIBCXX_STD_D _GLIBCXX_STD
 # define _GLIBCXX_STD_P _GLIBCXX_STD
 # define _GLIBCXX_STD_PR _GLIBCXX_STD
@@ -180,7 +177,7 @@ namespace std
 # define _GLIBCXX_END_NAMESPACE }
 #else
 
-# if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION // && not anything else
+# if _GLIBCXX_INLINE_VERSION // && not anything else
 #  define _GLIBCXX_STD_D _GLIBCXX_STD
 #  define _GLIBCXX_STD_P _GLIBCXX_STD
 #  define _GLIBCXX_STD _6
@@ -189,37 +186,37 @@ namespace std
 # endif
 
 //  debug
-# if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
+# if _GLIBCXX_INLINE_DEBUG && !_GLIBCXX_INLINE_PARALLEL && !_GLIBCXX_INLINE_PROFILE
 #  define _GLIBCXX_STD_D __norm
 #  define _GLIBCXX_STD_P _GLIBCXX_STD
 #  define _GLIBCXX_STD __cxx1998
-#  define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { 
+#  define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
 #  define _GLIBCXX_END_NAMESPACE }
 #  define _GLIBCXX_EXTERN_TEMPLATE -1
 # endif
 
 // parallel
-# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
+# if _GLIBCXX_INLINE_PARALLEL && !_GLIBCXX_INLINE_DEBUG && !_GLIBCXX_INLINE_PROFILE
 #  define _GLIBCXX_STD_D _GLIBCXX_STD
 #  define _GLIBCXX_STD_P __norm
 #  define _GLIBCXX_STD __cxx1998
-#  define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { 
+#  define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
 #  define _GLIBCXX_END_NAMESPACE }
 # endif
 
 // debug + parallel
-# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG  && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
+# if _GLIBCXX_INLINE_PARALLEL && _GLIBCXX_INLINE_DEBUG  && !_GLIBCXX_INLINE_PROFILE
 #  define _GLIBCXX_STD_D __norm
 #  define _GLIBCXX_STD_P __norm
 #  define _GLIBCXX_STD __cxx1998
-#  define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { 
+#  define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
 #  define _GLIBCXX_END_NAMESPACE }
 #  define _GLIBCXX_EXTERN_TEMPLATE -1
 # endif
 
 // profile
-# if _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
-#  if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL || _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
+# if _GLIBCXX_INLINE_PROFILE
+#  if _GLIBCXX_INLINE_PARALLEL || _GLIBCXX_INLINE_DEBUG
 #   error Cannot use -D_GLIBCXX_PROFILE with -D_GLIBCXX_DEBUG or \
     -D_GLIBCXX_PARALLEL
 #  endif
@@ -227,12 +224,12 @@ namespace std
 #  define _GLIBCXX_STD_P _GLIBCXX_STD
 #  define _GLIBCXX_STD_PR __norm
 #  define _GLIBCXX_STD __cxx1998
-#  define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { 
+#  define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
 #  define _GLIBCXX_END_NAMESPACE }
 # endif
 
 # if __NO_INLINE__ && !__GXX_WEAK__
-#  warning currently using namespace associated mode which may fail \
+#  warning currently using inlined namespace mode which may fail \
    without inlining due to lack of weak symbols
 # endif
 
@@ -240,52 +237,52 @@ namespace std
 # define _GLIBCXX_END_NESTED_NAMESPACE } }
 #endif
 
-// Namespace associations for debug mode.
-#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
+// Inline namespaces for debug mode.
+#if _GLIBCXX_INLINE_DEBUG && !_GLIBCXX_INLINE_PROFILE
 namespace std
-{ 
-  namespace __norm { } 
+{
+  namespace __norm { }
   inline namespace __debug { }
   inline namespace __cxx1998 { }
 }
 #endif
 
-// Namespace associations for parallel mode.
-#if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
+// Inline namespaces for parallel mode.
+#if _GLIBCXX_INLINE_PARALLEL
 namespace std
-{ 
-  namespace __norm { } 
+{
+  namespace __norm { }
   inline namespace __parallel { }
   inline namespace __cxx1998 { }
 }
 #endif
 
-// Namespace associations for profile mode
-#if _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
+// Inline namespaces for profile mode
+#if _GLIBCXX_INLINE_PROFILE
 namespace std
-{ 
-  namespace __norm { } 
+{
+  namespace __norm { }
   inline namespace __profile { }
   inline namespace __cxx1998 { }
 }
 #endif
 
-// Namespace associations for versioning mode.
-#if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
+// Inline namespaces for versioning mode.
+#if _GLIBCXX_INLINE_VERSION
 namespace std
 {
   inline namespace _6 { }
 }
 
-namespace __gnu_cxx 
-{ 
+namespace __gnu_cxx
+{
   inline namespace _6 { }
 }
 
 namespace std
 {
-  namespace tr1 
-  { 
+  namespace tr1
+  {
     inline namespace _6 { }
   }
 }
@@ -295,8 +292,8 @@ namespace std
 // Define if compatibility should be provided for -mlong-double-64
 #undef _GLIBCXX_LONG_DOUBLE_COMPAT
 
-// Namespace associations for long double 128 mode.
-#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ 
+// Inline namespaces for long double 128 mode.
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
 namespace std
 {
   inline namespace __gnu_cxx_ldbl128 { }
@@ -341,11 +338,11 @@ namespace std
 
 #else // !__cplusplus
 # define _GLIBCXX_BEGIN_EXTERN_C
-# define _GLIBCXX_END_EXTERN_C 
+# define _GLIBCXX_END_EXTERN_C
 # undef _GLIBCXX_BEGIN_NAMESPACE
 # undef _GLIBCXX_END_NAMESPACE
-# define _GLIBCXX_BEGIN_NAMESPACE(X) 
-# define _GLIBCXX_END_NAMESPACE 
+# define _GLIBCXX_BEGIN_NAMESPACE(X)
+# define _GLIBCXX_END_NAMESPACE
 #endif
 
 // First includes.
@@ -397,7 +394,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   // Avoid the use of assert, because we're trying to keep the <cassert>
   // include out of the mix.
   inline void
-  __replacement_assert(const char* __file, int __line, 
+  __replacement_assert(const char* __file, int __line,
                       const char* __function, const char* __condition)
   {
     __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line,
@@ -406,8 +403,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   }
 _GLIBCXX_END_NAMESPACE
 
-#define __glibcxx_assert(_Condition)                                   \
-  do                                                                   \
+#define __glibcxx_assert(_Condition)                                   \
+  do                                                                   \
   {                                                                    \
     if (! (_Condition))                                                 \
       std::__replacement_assert(__FILE__, __LINE__,                    \
index 6e00388a63a30edaf6fe81792ad9a06785303ef9..bd0fa4be0101a2cc84590e8c9451849e1f28864f 100644 (file)
@@ -1,7 +1,7 @@
 // File based streams -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-// 2007, 2008, 2009, 2010
+// 2007, 2008, 2009, 2010, 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -38,7 +38,7 @@
 
 #pragma GCC system_header
 
-#include <cxxabi-forced.h>
+#include <bits/cxxabi_forced.h>
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
index 832ed7b55de0df51159ae4238e3f9cbff501afe1..714d1cfd6b8ca7b10c746eb838daf73c8ee8fe3f 100644 (file)
@@ -1,6 +1,6 @@
 // Function-Based Exception Support -*- C++ -*-
 
-// Copyright (C) 2001, 2004, 2005, 2008, 2009, 2010
+// Copyright (C) 2001, 2004, 2005, 2008, 2009, 2010, 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -38,7 +38,7 @@
 #define _FUNCTEXCEPT_H 1
 
 #include <bits/c++config.h>
-#include <exception_defines.h>
+#include <bits/exception_defines.h>
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
index 6cf70b7da80040cc5d3a4170076a5285147f8f51..30754510fca89e6ee639ebcb137f3a1e3a918670 100644 (file)
@@ -1,6 +1,6 @@
 // functional_hash.h header -*- C++ -*-
 
-// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 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
 
 #pragma GCC system_header
 
-#include <bits/c++config.h>
+#include <bits/hash_bytes.h>
+
+_GLIBCXX_BEGIN_NAMESPACE(std)
 
-namespace std
-{
   /** @defgroup hashes Hashes
    *  @ingroup functors
    *
@@ -122,20 +122,6 @@ namespace std
 
 #undef _Cxx_hashtable_define_trivial_hash
 
-  // Hash function implementation for the nontrivial specialization.
-  // All of them are based on a primitive that hashes a pointer to
-  // a byte array. The actual hash algorithm is not guaranteed to
-  // stay the same from release to release -- it may be updated or
-  // tuned to improve hash quality or speed.
-  size_t
-  _Hash_bytes(const void* __ptr, size_t __len, size_t __seed);
-
-  // A similar hash primitive, using the FNV hash algorithm. This
-  // algorithm is guaranteed to stay the same from release to release.
-  // (although it might not produce the same values on different machines.)
-  size_t
-  _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed);
-
   struct _Hash_impl
   {
     static size_t
@@ -158,7 +144,7 @@ namespace std
   {
     static size_t
     hash(const void* __ptr, size_t __clength,
-         size_t __seed = static_cast<size_t>(2166136261UL))
+        size_t __seed = static_cast<size_t>(2166136261UL))
     { return _Fnv_hash_bytes(__ptr, __clength, __seed); }
 
     template<typename _Tp>
@@ -196,6 +182,7 @@ namespace std
     hash<long double>::operator()(long double __val) const;
 
   // @} group hashes
-}
+
+_GLIBCXX_END_NAMESPACE
 
 #endif // _FUNCTIONAL_HASH_H
index fd29c5950c9d30729e59bb3fc869bd0835c9bca3..721d1228a7fedf2318ecc842838b5904a90c5531 100644 (file)
@@ -1,6 +1,6 @@
 // hashtable.h header -*- C++ -*-
 
-// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 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
 
 #include <bits/hashtable_policy.h>
 
-namespace std
-{
+_GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
+
   // Class template _Hashtable, class definition.
-  
+
   // Meaning of class template _Hashtable's template parameters
-  
+
   // _Key and _Value: arbitrary CopyConstructible types.
-  
+
   // _Allocator: an allocator type ([lib.allocator.requirements]) whose
   // value type is Value.  As a conforming extension, we allow for
   // value type != Value.
 
   // _ExtractKey: function object that takes a object of type Value
   // and returns a value of type _Key.
-  
+
   // _Equal: function object that takes two objects of type k and returns
   // a bool-like value that is true if the two objects are considered equal.
-  
+
   // _H1: the hash function.  A unary function object with argument type
   // Key and result type size_t.  Return values should be distributed
   // over the entire range [0, numeric_limits<size_t>:::max()].
-  
+
   // _H2: the range-hashing function (in the terminology of Tavori and
   // Dreizin).  A binary function object whose argument types and result
   // type are all size_t.  Given arguments r and N, the return value is
   // in the range [0, N).
-  
+
   // _Hash: the ranged hash function (Tavori and Dreizin). A binary function
   // whose argument types are _Key and size_t and whose result type is
   // size_t.  Given arguments k and N, the return value is in the range
   // [0, N).  Default: hash(k, N) = h2(h1(k), N).  If _Hash is anything other
   // than the default, _H1 and _H2 are ignored.
-  
+
   // _RehashPolicy: Policy class with three members, all of which govern
   // the bucket count. _M_next_bkt(n) returns a bucket count no smaller
   // than n.  _M_bkt_for_elements(n) returns a bucket count appropriate
@@ -76,27 +76,27 @@ namespace std
   // current element count is n_elt, we need to increase the bucket
   // count.  If so, returns make_pair(true, n), where n is the new
   // bucket count.  If not, returns make_pair(false, <anything>).
-  
+
   // ??? Right now it is hard-wired that the number of buckets never
   // shrinks.  Should we allow _RehashPolicy to change that?
-  
+
   // __cache_hash_code: bool.  true if we store the value of the hash
   // function along with the value.  This is a time-space tradeoff.
   // Storing it may improve lookup speed by reducing the number of times
   // we need to call the Equal function.
-  
+
   // __constant_iterators: bool.  true if iterator and const_iterator are
   // both constant iterator types.  This is true for unordered_set and
   // unordered_multiset, false for unordered_map and unordered_multimap.
-  
+
   // __unique_keys: bool.  true if the return value of _Hashtable::count(k)
   // is always at most one, false if it may be an arbitrary number.  This
   // true for unordered_set and unordered_map, false for unordered_multiset
   // and unordered_multimap.
-  
+
   template<typename _Key, typename _Value, typename _Allocator,
           typename _ExtractKey, typename _Equal,
-          typename _H1, typename _H2, typename _Hash, 
+          typename _H1, typename _H2, typename _Hash,
           typename _RehashPolicy,
           bool __cache_hash_code,
           bool __constant_iterators,
@@ -145,33 +145,33 @@ namespace std
       typedef std::ptrdiff_t                              difference_type;
       typedef __detail::_Node_iterator<value_type, __constant_iterators,
                                       __cache_hash_code>
-                                                          local_iterator;
+                                                         local_iterator;
       typedef __detail::_Node_const_iterator<value_type,
                                             __constant_iterators,
                                             __cache_hash_code>
-                                                          const_local_iterator;
+                                                         const_local_iterator;
 
       typedef __detail::_Hashtable_iterator<value_type, __constant_iterators,
                                            __cache_hash_code>
-                                                          iterator;
+                                                         iterator;
       typedef __detail::_Hashtable_const_iterator<value_type,
                                                  __constant_iterators,
                                                  __cache_hash_code>
-                                                          const_iterator;
+                                                         const_iterator;
 
       template<typename _Key2, typename _Value2, typename _Ex2, bool __unique2,
               typename _Hashtable2>
-        friend struct __detail::_Map_base;
+       friend struct __detail::_Map_base;
 
     private:
       typedef __detail::_Hash_node<_Value, __cache_hash_code> _Node;
       typedef typename _Allocator::template rebind<_Node>::other
-                                                        _Node_allocator_type;
+                                                       _Node_allocator_type;
       typedef typename _Allocator::template rebind<_Node*>::other
-                                                        _Bucket_allocator_type;
+                                                       _Bucket_allocator_type;
 
       typedef typename _Allocator::template rebind<_Value>::other
-                                                        _Value_allocator_type;
+                                                       _Value_allocator_type;
 
       _Node_allocator_type   _M_node_allocator;
       _Node**                _M_buckets;
@@ -181,39 +181,39 @@ namespace std
       _RehashPolicy          _M_rehash_policy;
 
       template<typename... _Args>
-        _Node*
-        _M_allocate_node(_Args&&... __args);
-  
+       _Node*
+       _M_allocate_node(_Args&&... __args);
+
       void
       _M_deallocate_node(_Node* __n);
-  
+
       void
       _M_deallocate_nodes(_Node**, size_type);
 
       _Node**
       _M_allocate_buckets(size_type __n);
-  
+
       void
       _M_deallocate_buckets(_Node**, size_type __n);
 
-    public:                        
+    public:
       // Constructor, destructor, assignment, swap
       _Hashtable(size_type __bucket_hint,
                 const _H1&, const _H2&, const _Hash&,
                 const _Equal&, const _ExtractKey&,
                 const allocator_type&);
-  
+
       template<typename _InputIterator>
-        _Hashtable(_InputIterator __first, _InputIterator __last,
+       _Hashtable(_InputIterator __first, _InputIterator __last,
                   size_type __bucket_hint,
-                  const _H1&, const _H2&, const _Hash&, 
+                  const _H1&, const _H2&, const _Hash&,
                   const _Equal&, const _ExtractKey&,
                   const allocator_type&);
-  
+
       _Hashtable(const _Hashtable&);
 
       _Hashtable(_Hashtable&&);
-      
+
       _Hashtable&
       operator=(const _Hashtable& __ht)
       {
@@ -264,7 +264,7 @@ namespace std
       size_type
       size() const
       { return _M_element_count; }
-  
+
       bool
       empty() const
       { return size() == 0; }
@@ -288,18 +288,18 @@ namespace std
       size_type
       bucket_count() const
       { return _M_bucket_count; }
-  
+
       size_type
       max_bucket_count() const
       { return max_size(); }
-  
+
       size_type
       bucket_size(size_type __n) const
       { return std::distance(begin(__n), end(__n)); }
-  
+
       size_type
       bucket(const key_type& __k) const
-      { 
+      {
        return this->_M_bucket_index(__k, this->_M_hash_code(__k),
                                     bucket_count());
       }
@@ -331,7 +331,7 @@ namespace std
 
       float
       load_factor() const
-      { 
+      {
        return static_cast<float>(size()) / static_cast<float>(bucket_count());
       }
 
@@ -342,8 +342,8 @@ namespace std
       const _RehashPolicy&
       __rehash_policy() const
       { return _M_rehash_policy; }
-      
-      void 
+
+      void
       __rehash_policy(const _RehashPolicy&);
 
       // Lookup.
@@ -369,28 +369,28 @@ namespace std
                   typename _Hashtable::_Hash_code_type) const;
 
       template<typename _Arg>
-        iterator
-        _M_insert_bucket(_Arg&&, size_type,
+       iterator
+       _M_insert_bucket(_Arg&&, size_type,
                         typename _Hashtable::_Hash_code_type);
 
       template<typename _Arg>
-        std::pair<iterator, bool>
-        _M_insert(_Arg&&, std::true_type);
+       std::pair<iterator, bool>
+       _M_insert(_Arg&&, std::true_type);
 
       template<typename _Arg>
-        iterator
-        _M_insert(_Arg&&, std::false_type);
+       iterator
+       _M_insert(_Arg&&, std::false_type);
 
       typedef typename std::conditional<__unique_keys,
                                        std::pair<iterator, bool>,
                                        iterator>::type
-        _Insert_Return_Type;
+       _Insert_Return_Type;
 
       typedef typename std::conditional<__unique_keys,
                                        std::_Select1st<_Insert_Return_Type>,
                                        std::_Identity<_Insert_Return_Type>
-                                   >::type
-        _Insert_Conv_Type;
+                                  >::type
+       _Insert_Conv_Type;
 
     public:
       // Insert and erase
@@ -415,22 +415,22 @@ namespace std
               std::enable_if<!__constant_iterators
                              && std::is_convertible<_Pair,
                                                     value_type>::value>::type>
-        _Insert_Return_Type
-        insert(_Pair&& __v)
-        { return _M_insert(std::forward<_Pair>(__v),
+       _Insert_Return_Type
+       insert(_Pair&& __v)
+       { return _M_insert(std::forward<_Pair>(__v),
                           std::integral_constant<bool, __unique_keys>()); }
 
       template<typename _Pair, typename = typename
               std::enable_if<!__constant_iterators
                              && std::is_convertible<_Pair,
                                                     value_type>::value>::type>
-        iterator
-        insert(const_iterator, _Pair&& __v)
-        { return _Insert_Conv_Type()(insert(std::forward<_Pair>(__v))); }
+       iterator
+       insert(const_iterator, _Pair&& __v)
+       { return _Insert_Conv_Type()(insert(std::forward<_Pair>(__v))); }
 
       template<typename _InputIterator>
-        void
-        insert(_InputIterator __first, _InputIterator __last);
+       void
+       insert(_InputIterator __first, _InputIterator __last);
 
       void
       insert(initializer_list<value_type> __l)
@@ -461,7 +461,7 @@ namespace std
 
 
   // Definitions of class template _Hashtable's out-of-line member functions.
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -487,7 +487,7 @@ namespace std
          }
       }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -500,7 +500,7 @@ namespace std
       _M_node_allocator.deallocate(__n, 1);
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -522,7 +522,7 @@ namespace std
        }
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -543,7 +543,7 @@ namespace std
       return __p;
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -556,7 +556,7 @@ namespace std
       __alloc.deallocate(__p, __n + 1);
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -581,7 +581,7 @@ namespace std
       _M_begin_bucket_index = _M_bucket_count;
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -622,8 +622,8 @@ namespace std
            __throw_exception_again;
          }
       }
-  
-  template<typename _Key, typename _Value, 
+
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -664,7 +664,7 @@ namespace std
        }
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -690,7 +690,7 @@ namespace std
       __ht._M_rehash_policy = _RehashPolicy();
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -702,7 +702,7 @@ namespace std
       _M_deallocate_buckets(_M_buckets, _M_bucket_count);
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -729,7 +729,7 @@ namespace std
       std::swap(_M_element_count, __x._M_element_count);
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -744,7 +744,7 @@ namespace std
        _M_rehash(__n_bkt);
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -761,7 +761,7 @@ namespace std
       return __p ? iterator(__p, _M_buckets + __n) : this->end();
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -778,7 +778,7 @@ namespace std
       return __p ? const_iterator(__p, _M_buckets + __n) : this->end();
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -798,7 +798,7 @@ namespace std
       return __result;
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -818,7 +818,7 @@ namespace std
       std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
       _Node** __head = _M_buckets + __n;
       _Node* __p = _M_find_node(*__head, __k, __code);
-      
+
       if (__p)
        {
          _Node* __p1 = __p->_M_next;
@@ -836,7 +836,7 @@ namespace std
        return std::make_pair(this->end(), this->end());
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -876,13 +876,13 @@ namespace std
 
   // Find the node whose key compares equal to k, beginning the search
   // at p (usually the head of a bucket).  Return nil if no node is found.
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
     typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey,
                        _Equal, _H1, _H2, _Hash, _RehashPolicy,
-                       __chc, __cit, __uk>::_Node* 
+                       __chc, __cit, __uk>::_Node*
     _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
               _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
     _M_find_node(_Node* __p, const key_type& __k,
@@ -895,7 +895,7 @@ namespace std
     }
 
   // Insert v in bucket n (assumes no element with its key already present).
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -943,7 +943,7 @@ namespace std
       }
 
   // Insert v if no element with its key is already present.
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -967,7 +967,7 @@ namespace std
       }
 
   // Insert v unconditionally.
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -984,7 +984,7 @@ namespace std
                                            _M_element_count, 1);
        if (__do_rehash.first)
          _M_rehash(__do_rehash.second);
+
        const key_type& __k = this->_M_extract(__v);
        typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
        size_type __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
@@ -993,7 +993,7 @@ namespace std
        _Node* __prev = _M_find_node(_M_buckets[__n], __k, __code);
        _Node* __new_node = _M_allocate_node(std::forward<_Arg>(__v));
 
-        if (__prev)
+       if (__prev)
          {
            __new_node->_M_next = __prev->_M_next;
            __prev->_M_next = __new_node;
@@ -1005,18 +1005,18 @@ namespace std
            if (__n < _M_begin_bucket_index)
              _M_begin_bucket_index = __n;
          }
-        this->_M_store_code(__new_node, __code);
+       this->_M_store_code(__new_node, __code);
 
-        ++_M_element_count;
-        return iterator(__new_node, _M_buckets + __n);
+       ++_M_element_count;
+       return iterator(__new_node, _M_buckets + __n);
       }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
     template<typename _InputIterator>
-      void 
+      void
       _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
                 _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
       insert(_InputIterator __first, _InputIterator __last)
@@ -1032,7 +1032,7 @@ namespace std
          this->insert(*__first);
       }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -1073,7 +1073,7 @@ namespace std
       return __result;
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -1087,7 +1087,7 @@ namespace std
       typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
       std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
       size_type __result = 0;
-      
+
       _Node** __slot = _M_buckets + __n;
       while (*__slot && !this->_M_compare(__k, __code, *__slot))
        __slot = &((*__slot)->_M_next);
@@ -1101,8 +1101,8 @@ namespace std
          if (std::__addressof(this->_M_extract((*__slot)->_M_v))
              != std::__addressof(__k))
            {
-              _Node* __p = *__slot;
-              *__slot = __p->_M_next;
+             _Node* __p = *__slot;
+             *__slot = __p->_M_next;
              _M_deallocate_node(__p);
              --_M_element_count;
              ++__result;
@@ -1143,7 +1143,7 @@ namespace std
   // ??? This could be optimized by taking advantage of the bucket
   // structure, but it's not clear that it's worth doing.  It probably
   // wouldn't even be an optimization unless the load factor is large.
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -1159,7 +1159,7 @@ namespace std
       return iterator(__last._M_cur_node, __last._M_cur_bucket);
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -1172,8 +1172,8 @@ namespace std
       _M_element_count = 0;
       _M_begin_bucket_index = _M_bucket_count;
     }
-  template<typename _Key, typename _Value, 
+
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -1187,7 +1187,7 @@ namespace std
                                                              + 1)));
     }
 
-  template<typename _Key, typename _Value, 
+  template<typename _Key, typename _Value,
           typename _Allocator, typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
           bool __chc, bool __cit, bool __uk>
@@ -1228,6 +1228,7 @@ namespace std
          __throw_exception_again;
        }
     }
-}
+
+_GLIBCXX_END_NESTED_NAMESPACE // namespace std
 
 #endif // _HASHTABLE_H
index 622784ab097b5d77d449d40ce6ae5a65b9663448..e439dfaac8f15bb9460835b0523089e47964af64 100644 (file)
@@ -1,6 +1,6 @@
 // Internal policy header for unordered_set and unordered_map -*- C++ -*-
 
-// Copyright (C) 2010 Free Software Foundation, Inc.
+// Copyright (C) 2010, 2011 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
 
 /** @file bits/hashtable_policy.h
  *  This is an internal header file, included by other library headers.
- *  Do not attempt to use it directly. 
+ *  Do not attempt to use it directly.
  *  @headername{unordered_map,unordered_set}
  */
 
 #ifndef _HASHTABLE_POLICY_H
 #define _HASHTABLE_POLICY_H 1
 
-namespace std
-{
+_GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
+
 namespace __detail
 {
   // Helper function: return distance(first, last) for forward
@@ -59,7 +59,7 @@ namespace __detail
 
   // Auxiliary types used for all instantiations of _Hashtable: nodes
   // and iterators.
-  
+
   // Nodes, used to wrap elements stored in the hash table.  A policy
   // template parameter of class template _Hashtable controls whether
   // nodes also store a hash code. In some cases (e.g. strings) this
@@ -75,7 +75,7 @@ namespace __detail
       _Hash_node*  _M_next;
 
       template<typename... _Args>
-        _Hash_node(_Args&&... __args)
+       _Hash_node(_Args&&... __args)
        : _M_v(std::forward<_Args>(__args)...),
          _M_hash_code(), _M_next() { }
     };
@@ -87,7 +87,7 @@ namespace __detail
       _Hash_node*  _M_next;
 
       template<typename... _Args>
-        _Hash_node(_Args&&... __args)
+       _Hash_node(_Args&&... __args)
        : _M_v(std::forward<_Args>(__args)...),
          _M_next() { }
     };
@@ -99,7 +99,7 @@ namespace __detail
     {
       _Node_iterator_base(_Hash_node<_Value, __cache>* __p)
       : _M_cur(__p) { }
-      
+
       void
       _M_incr()
       { _M_cur = _M_cur->_M_next; }
@@ -126,10 +126,10 @@ namespace __detail
       typedef _Value                                   value_type;
       typedef typename std::conditional<__constant_iterators,
                                        const _Value*, _Value*>::type
-                                                       pointer;
+                                                      pointer;
       typedef typename std::conditional<__constant_iterators,
                                        const _Value&, _Value&>::type
-                                                       reference;
+                                                      reference;
       typedef std::ptrdiff_t                           difference_type;
       typedef std::forward_iterator_tag                iterator_category;
 
@@ -143,21 +143,21 @@ namespace __detail
       reference
       operator*() const
       { return this->_M_cur->_M_v; }
-  
+
       pointer
       operator->() const
       { return std::__addressof(this->_M_cur->_M_v); }
 
       _Node_iterator&
       operator++()
-      { 
+      {
        this->_M_incr();
-       return *this; 
+       return *this;
       }
-  
+
       _Node_iterator
       operator++(int)
-      { 
+      {
        _Node_iterator __tmp(*this);
        this->_M_incr();
        return __tmp;
@@ -188,21 +188,21 @@ namespace __detail
       reference
       operator*() const
       { return this->_M_cur->_M_v; }
-  
+
       pointer
       operator->() const
       { return std::__addressof(this->_M_cur->_M_v); }
 
       _Node_const_iterator&
       operator++()
-      { 
+      {
        this->_M_incr();
-       return *this; 
+       return *this;
       }
-  
+
       _Node_const_iterator
       operator++(int)
-      { 
+      {
        _Node_const_iterator __tmp(*this);
        this->_M_incr();
        return __tmp;
@@ -265,10 +265,10 @@ namespace __detail
       typedef _Value                                   value_type;
       typedef typename std::conditional<__constant_iterators,
                                        const _Value*, _Value*>::type
-                                                       pointer;
+                                                      pointer;
       typedef typename std::conditional<__constant_iterators,
                                        const _Value&, _Value&>::type
-                                                       reference;
+                                                      reference;
       typedef std::ptrdiff_t                           difference_type;
       typedef std::forward_iterator_tag                iterator_category;
 
@@ -286,21 +286,21 @@ namespace __detail
       reference
       operator*() const
       { return this->_M_cur_node->_M_v; }
-  
+
       pointer
       operator->() const
       { return std::__addressof(this->_M_cur_node->_M_v); }
 
       _Hashtable_iterator&
       operator++()
-      { 
+      {
        this->_M_incr();
        return *this;
       }
-  
+
       _Hashtable_iterator
       operator++(int)
-      { 
+      {
        _Hashtable_iterator __tmp(*this);
        this->_M_incr();
        return __tmp;
@@ -336,21 +336,21 @@ namespace __detail
       reference
       operator*() const
       { return this->_M_cur_node->_M_v; }
-  
+
       pointer
       operator->() const
       { return std::__addressof(this->_M_cur_node->_M_v); }
 
       _Hashtable_const_iterator&
       operator++()
-      { 
+      {
        this->_M_incr();
        return *this;
       }
-  
+
       _Hashtable_const_iterator
       operator++(int)
-      { 
+      {
        _Hashtable_const_iterator __tmp(*this);
        this->_M_incr();
        return __tmp;
@@ -390,16 +390,16 @@ namespace __detail
 
     float
     max_load_factor() const
-    { return _M_max_load_factor; }      
+    { return _M_max_load_factor; }
 
     // Return a bucket size no smaller than n.
     std::size_t
     _M_next_bkt(std::size_t __n) const;
-    
+
     // Return a bucket count appropriate for n elements
     std::size_t
     _M_bkt_for_elements(std::size_t __n) const;
-    
+
     // __n_bkt is current bucket count, __n_elt is current element count,
     // and __n_ins is number of elements to be inserted.  Do we need to
     // increase bucket count?  If so, return make_pair(true, n), where n
@@ -418,7 +418,7 @@ namespace __detail
   extern const unsigned long __prime_list[];
 
   // XXX This is a hack.  There's no good reason for any of
-  // _Prime_rehash_policy's member functions to be inline.  
+  // _Prime_rehash_policy's member functions to be inline.
 
   // Return a prime no smaller than n.
   inline std::size_t
@@ -427,7 +427,7 @@ namespace __detail
   {
     const unsigned long* __p = std::lower_bound(__prime_list, __prime_list
                                                + _S_n_primes, __n);
-    _M_next_resize = 
+    _M_next_resize =
       static_cast<std::size_t>(__builtin_ceil(*__p * _M_max_load_factor));
     return *__p;
   }
@@ -448,7 +448,7 @@ namespace __detail
 
   // Finds the smallest prime p such that alpha p > __n_elt + __n_ins.
   // If p > __n_bkt, return make_pair(true, p); otherwise return
-  // make_pair(false, 0).  In principle this isn't very different from 
+  // make_pair(false, 0).  In principle this isn't very different from
   // _M_bkt_for_elements.
 
   // The only tricky part is that we're caching the element count at
@@ -474,7 +474,7 @@ namespace __detail
              (__builtin_ceil(*__p * _M_max_load_factor));
            return std::make_pair(true, *__p);
          }
-       else 
+       else
          {
            _M_next_resize = static_cast<std::size_t>
              (__builtin_ceil(__n_bkt * _M_max_load_factor));
@@ -642,10 +642,10 @@ namespace __detail
   //       we have a dummy type as placeholder.
   //   (2) Whether or not we cache hash codes.  Caching hash codes is
   //       meaningless if we have a ranged hash function.
-  // We also put the key extraction and equality comparison function 
+  // We also put the key extraction and equality comparison function
   // objects here, for convenience.
-  
-  // Primary template: unused except as a hook for specializations.  
+
+  // Primary template: unused except as a hook for specializations.
   template<typename _Key, typename _Value,
           typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash,
@@ -666,11 +666,11 @@ namespace __detail
       : _M_extract(__ex), _M_eq(__eq), _M_ranged_hash(__h) { }
 
       typedef void* _Hash_code_type;
-  
+
       _Hash_code_type
       _M_hash_code(const _Key& __key) const
       { return 0; }
-  
+
       std::size_t
       _M_bucket_index(const _Key& __k, _Hash_code_type,
                      std::size_t __n) const
@@ -680,7 +680,7 @@ namespace __detail
       _M_bucket_index(const _Hash_node<_Value, false>* __p,
                      std::size_t __n) const
       { return _M_ranged_hash(_M_extract(__p->_M_v), __n); }
-  
+
       bool
       _M_compare(const _Key& __k, _Hash_code_type,
                 _Hash_node<_Value, false>* __n) const
@@ -694,7 +694,7 @@ namespace __detail
       _M_copy_code(_Hash_node<_Value, false>*,
                   const _Hash_node<_Value, false>*) const
       { }
-      
+
       void
       _M_swap(_Hash_code_base& __x)
       {
@@ -712,11 +712,11 @@ namespace __detail
 
   // No specialization for ranged hash function while caching hash codes.
   // That combination is meaningless, and trying to do it is an error.
-  
-  
+
+
   // Specialization: ranged hash function, cache hash codes.  This
   // combination is meaningless, so we provide only a declaration
-  // and no definition.  
+  // and no definition.
   template<typename _Key, typename _Value,
           typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2, typename _Hash>
@@ -725,7 +725,7 @@ namespace __detail
 
   // Specialization: hash function and range-hashing function, no
   // caching of hash codes.  H is provided but ignored.  Provides
-  // typedef and accessor required by TR1.  
+  // typedef and accessor required by TR1.
   template<typename _Key, typename _Value,
           typename _ExtractKey, typename _Equal,
           typename _H1, typename _H2>
@@ -749,7 +749,7 @@ namespace __detail
       _Hash_code_type
       _M_hash_code(const _Key& __k) const
       { return _M_h1(__k); }
-      
+
       std::size_t
       _M_bucket_index(const _Key&, _Hash_code_type __c,
                      std::size_t __n) const
@@ -790,7 +790,7 @@ namespace __detail
       _H2          _M_h2;
     };
 
-  // Specialization: hash function and range-hashing function, 
+  // Specialization: hash function and range-hashing function,
   // caching hash codes.  H is provided but ignored.  Provides
   // typedef and accessor required by TR1.
   template<typename _Key, typename _Value,
@@ -800,7 +800,7 @@ namespace __detail
                           _Default_ranged_hash, true>
     {
       typedef _H1 hasher;
-      
+
       hasher
       hash_function() const
       { return _M_h1; }
@@ -812,11 +812,11 @@ namespace __detail
       : _M_extract(__ex), _M_eq(__eq), _M_h1(__h1), _M_h2(__h2) { }
 
       typedef std::size_t _Hash_code_type;
-  
+
       _Hash_code_type
       _M_hash_code(const _Key& __k) const
       { return _M_h1(__k); }
-  
+
       std::size_t
       _M_bucket_index(const _Key&, _Hash_code_type __c,
                      std::size_t __n) const
@@ -849,7 +849,7 @@ namespace __detail
        std::swap(_M_h1, __x._M_h1);
        std::swap(_M_h2, __x._M_h2);
       }
-      
+
     protected:
       _ExtractKey  _M_extract;
       _Equal       _M_eq;
@@ -898,8 +898,8 @@ namespace __detail
 
     private:
       template<typename _Uiterator>
-        static bool
-        _S_is_permutation(_Uiterator, _Uiterator, _Uiterator);
+       static bool
+       _S_is_permutation(_Uiterator, _Uiterator, _Uiterator);
     };
 
   // See std::is_permutation in N3068.
@@ -978,6 +978,7 @@ namespace __detail
       return true;
     }
 } // namespace __detail
-}
+
+_GLIBCXX_END_NESTED_NAMESPACE // namespace std
 
 #endif // _HASHTABLE_POLICY_H
index 394553e1be93d115ec75a6c0fcc830a453a0e6ff..6fc6b31ad261bbdc38f47814a542d3357b4f697b 100644 (file)
@@ -1,7 +1,7 @@
 // istream classes -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010
+// 2006, 2007, 2008, 2009, 2010, 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -38,7 +38,7 @@
 
 #pragma GCC system_header
 
-#include <cxxabi-forced.h>
+#include <bits/cxxabi_forced.h>
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
index 7a6330b45f3c29fcecbeb987a327e0f63176e0d9..ec41595a7c99613c1e655dd9edd94af33fd33d5b 100644 (file)
@@ -1,7 +1,7 @@
 // ostream classes -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010
+// 2006, 2007, 2008, 2009, 2010, 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -38,7 +38,7 @@
 
 #pragma GCC system_header
 
-#include <cxxabi-forced.h>
+#include <bits/cxxabi_forced.h>
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
index 9e07abee89f7ac9990721c6efa716b4fbdcea014..3d7cf2d504206a4bd95760bdeb3d00c8fda00a0b 100644 (file)
@@ -1,6 +1,6 @@
 // Helpers for ostream inserters -*- C++ -*-
 
-// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 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
@@ -33,7 +33,7 @@
 #pragma GCC system_header
 
 #include <iosfwd>
-#include <cxxabi-forced.h>
+#include <bits/cxxabi_forced.h>
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
index 60effafae7de1cbf4f7c5cf69b38f9a884a34a6a..95d4cc36cc49f6cfaeab377bc0b4590ec591b429 100644 (file)
@@ -1,6 +1,6 @@
 // Versatile string -*- C++ -*-
 
-// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -33,7 +33,7 @@
 
 #pragma GCC system_header
 
-#include <cxxabi-forced.h>
+#include <bits/cxxabi_forced.h>
 
 _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
 
index 86f361c9867930ebb05fe7fa93e30947967e506a..29b06d52e721ac3df7e954a4b4a498022ab9df95 100644 (file)
@@ -1,6 +1,7 @@
 // <bitset> -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -49,7 +50,7 @@
 #include <bits/functexcept.h>   // For invalid_argument, out_of_range,
                                 // overflow_error
 #include <iosfwd>
-#include <cxxabi-forced.h>
+#include <bits/cxxabi_forced.h>
 
 #define _GLIBCXX_BITSET_BITS_PER_WORD  (__CHAR_BIT__ * sizeof(unsigned long))
 #define _GLIBCXX_BITSET_WORDS(__n) \
index 688e139cf595b8148060ab9cf7f0a093a114d56e..f66832882bd666b9e47a712f7be4c6cf1402f4e4 100644 (file)
@@ -1,7 +1,7 @@
 ## Makefile for the GNU C++ Support library.
 ##
 ## Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-## 2009, 2010
+## 2009, 2010, 2011
 ## Free Software Foundation, Inc.
 ##
 ## Process this file with automake to produce Makefile.in.
@@ -31,10 +31,14 @@ toolexeclib_LTLIBRARIES = libsupc++.la
 # 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
 noinst_LTLIBRARIES = libsupc++convenience.la
 
+std_HEADERS = \
+       cxxabi.h exception initializer_list new typeinfo 
 
-headers = \
-       exception new typeinfo cxxabi.h cxxabi-forced.h exception_defines.h \
-       initializer_list exception_ptr.h nested_exception.h
+bits_HEADERS = \
+       cxxabi_forced.h hash_bytes.h \
+       exception_defines.h exception_ptr.h nested_exception.h 
+
+headers = $(std_HEADERS) $(bits_HEADERS)
 
 if GLIBCXX_HOSTED
   c_sources = \
@@ -88,12 +92,9 @@ sources = \
        vmi_class_type_info.cc \
        vterminate.cc
 
-libsupc___la_SOURCES = $(sources) $(c_sources)
+libsupc___la_SOURCES = $(sources) $(c_sources) 
 libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
 
-glibcxxinstalldir = $(gxx_include_dir)
-glibcxxinstall_HEADERS = $(headers)
-
 # AM_CXXFLAGS needs to be in each subdirectory so that it can be
 # modified in a per-library or per-sub-library way.  Need to manually
 # set this option because CONFIG_CXXFLAGS has to be after
@@ -132,7 +133,7 @@ cp-demangle.o: cp-demangle.c
        $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
 
 
-# libstdc++ libtool notes
+# Libtool notes
 
 # 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
 # last. (That way, things like -O2 passed down from the toplevel can
@@ -169,21 +170,43 @@ CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \
          --mode=link $(CXX) \
          $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
 
+
+# Install notes
 # We have to have rules modified from the default to counteract SUN make
-# prepending each of $(glibcxxinstall_HEADERS) with VPATH below.
-install-glibcxxinstallHEADERS: $(glibcxxinstall_HEADERS)
+# prepending each of $(*_HEADERS) with VPATH below.
+stddir = $(gxx_include_dir)
+bitsdir = $(gxx_include_dir)/bits
+
+install-stdHEADERS: $(std_HEADERS)
        @$(NORMAL_INSTALL)
-       $(mkinstalldirs) $(DESTDIR)$(glibcxxinstalldir)
-       @list='$(glibcxxinstall_HEADERS)'; for p in $$list; do \
+       $(mkinstalldirs) $(DESTDIR)$(stddir)
+       @list='$(std_HEADERS)'; for p in $$list; do \
          q=`echo $$p | sed -e 's,.*/,,'`; \
          if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
-         echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcxxinstalldir)/$$q"; \
-         $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcxxinstalldir)/$$q; \
+         echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q"; \
+         $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q; \
+       done
+
+install-bitsHEADERS: $(bits_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(bitsdir)
+       @list='$(bits_HEADERS)'; for p in $$list; do \
+         q=`echo $$p | sed -e 's,.*/,,'`; \
+         if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
+         echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q"; \
+         $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q; \
+       done
+
+uninstall-stdHEADERS:
+       @$(NORMAL_UNINSTALL)
+       list='$(std_HEADERS)'; for p in $$list; do \
+         q=`echo $$p | sed -e 's,.*/,,'`; \
+         rm -f $(DESTDIR)$(stddir)/$$q; \
        done
 
-uninstall-glibcxxinstallHEADERS:
+uninstall-bitsHEADERS:
        @$(NORMAL_UNINSTALL)
-       list='$(glibcxxinstall_HEADERS)'; for p in $$list; do \
+       list='$(bits_HEADERS)'; for p in $$list; do \
          q=`echo $$p | sed -e 's,.*/,,'`; \
-         rm -f $(DESTDIR)$(glibcxxinstalldir)/$$q; \
+         rm -f $(DESTDIR)$(bitsdir)/$$q; \
        done
index 5ecbcf197014ccb9cba2521bc2ddba6ee4afbabb..9951feddca17deb99a6a95553ca9bb61326d17ab 100644 (file)
@@ -37,7 +37,7 @@ build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
 DIST_COMMON = $(top_srcdir)/fragment.am $(srcdir)/Makefile.in \
-       $(srcdir)/Makefile.am $(glibcxxinstall_HEADERS)
+       $(srcdir)/Makefile.am $(bits_HEADERS) $(std_HEADERS)
 subdir = libsupc++
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
@@ -86,8 +86,8 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \
-       "$(DESTDIR)$(glibcxxinstalldir)"
+am__installdirs = "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(bitsdir)" \
+       "$(DESTDIR)$(stddir)"
 LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
 libsupc___la_LIBADD =
 am__objects_1 = array_type_info.lo atexit_arm.lo bad_alloc.lo \
@@ -122,7 +122,7 @@ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
 CXXLD = $(CXX)
 SOURCES = $(libsupc___la_SOURCES) $(libsupc__convenience_la_SOURCES)
-HEADERS = $(glibcxxinstall_HEADERS)
+HEADERS = $(bits_HEADERS) $(std_HEADERS)
 ETAGS = etags
 CTAGS = ctags
 ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
@@ -339,10 +339,14 @@ AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
 toolexeclib_LTLIBRARIES = libsupc++.la
 # 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
 noinst_LTLIBRARIES = libsupc++convenience.la
-headers = \
-       exception new typeinfo cxxabi.h cxxabi-forced.h exception_defines.h \
-       initializer_list exception_ptr.h nested_exception.h
+std_HEADERS = \
+       cxxabi.h exception initializer_list new typeinfo 
 
+bits_HEADERS = \
+       cxxabi_forced.h hash_bytes.h \
+       exception_defines.h exception_ptr.h nested_exception.h 
+
+headers = $(std_HEADERS) $(bits_HEADERS)
 @GLIBCXX_HOSTED_TRUE@c_sources = \
 @GLIBCXX_HOSTED_TRUE@  cp-demangle.c 
 
@@ -393,10 +397,8 @@ sources = \
        vmi_class_type_info.cc \
        vterminate.cc
 
-libsupc___la_SOURCES = $(sources) $(c_sources)
+libsupc___la_SOURCES = $(sources) $(c_sources) 
 libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
-glibcxxinstalldir = $(gxx_include_dir)
-glibcxxinstall_HEADERS = $(headers)
 
 # AM_CXXFLAGS needs to be in each subdirectory so that it can be
 # modified in a per-library or per-sub-library way.  Need to manually
@@ -429,7 +431,7 @@ LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared $(LIBTOOLFLAGS) --mode=comp
             $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 
 
-# libstdc++ libtool notes
+# Libtool notes
 
 # 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
 # last. (That way, things like -O2 passed down from the toplevel can
@@ -466,6 +468,12 @@ CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \
          --mode=link $(CXX) \
          $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
 
+
+# Install notes
+# We have to have rules modified from the default to counteract SUN make
+# prepending each of $(*_HEADERS) with VPATH below.
+stddir = $(gxx_include_dir)
+bitsdir = $(gxx_include_dir)/bits
 all: all-am
 
 .SUFFIXES:
@@ -630,7 +638,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
-       for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(glibcxxinstalldir)"; do \
+       for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(bitsdir)" "$(DESTDIR)$(stddir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
@@ -680,7 +688,7 @@ info: info-am
 
 info-am:
 
-install-data-am: install-glibcxxinstallHEADERS
+install-data-am: install-bitsHEADERS install-stdHEADERS
 
 install-dvi: install-dvi-am
 
@@ -725,7 +733,7 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-glibcxxinstallHEADERS \
+uninstall-am: uninstall-bitsHEADERS uninstall-stdHEADERS \
        uninstall-toolexeclibLTLIBRARIES
 
 .MAKE: install-am install-strip
@@ -734,16 +742,17 @@ uninstall-am: uninstall-glibcxxinstallHEADERS \
        clean-libtool clean-noinstLTLIBRARIES \
        clean-toolexeclibLTLIBRARIES ctags distclean distclean-compile \
        distclean-generic distclean-libtool distclean-tags dvi dvi-am \
-       html html-am info info-am install install-am install-data \
-       install-data-am install-dvi install-dvi-am install-exec \
-       install-exec-am install-glibcxxinstallHEADERS install-html \
+       html html-am info info-am install install-am \
+       install-bitsHEADERS install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
        install-html-am install-info install-info-am install-man \
        install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip install-toolexeclibLTLIBRARIES installcheck \
-       installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-compile \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags uninstall uninstall-am uninstall-glibcxxinstallHEADERS \
+       install-stdHEADERS install-strip \
+       install-toolexeclibLTLIBRARIES installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-bitsHEADERS uninstall-stdHEADERS \
        uninstall-toolexeclibLTLIBRARIES
 
 
@@ -755,23 +764,38 @@ cp-demangle.lo: cp-demangle.c
 cp-demangle.o: cp-demangle.c
        $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
 
-# We have to have rules modified from the default to counteract SUN make
-# prepending each of $(glibcxxinstall_HEADERS) with VPATH below.
-install-glibcxxinstallHEADERS: $(glibcxxinstall_HEADERS)
+install-stdHEADERS: $(std_HEADERS)
        @$(NORMAL_INSTALL)
-       $(mkinstalldirs) $(DESTDIR)$(glibcxxinstalldir)
-       @list='$(glibcxxinstall_HEADERS)'; for p in $$list; do \
+       $(mkinstalldirs) $(DESTDIR)$(stddir)
+       @list='$(std_HEADERS)'; for p in $$list; do \
          q=`echo $$p | sed -e 's,.*/,,'`; \
          if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
-         echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcxxinstalldir)/$$q"; \
-         $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcxxinstalldir)/$$q; \
+         echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q"; \
+         $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q; \
+       done
+
+install-bitsHEADERS: $(bits_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(bitsdir)
+       @list='$(bits_HEADERS)'; for p in $$list; do \
+         q=`echo $$p | sed -e 's,.*/,,'`; \
+         if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
+         echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q"; \
+         $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q; \
+       done
+
+uninstall-stdHEADERS:
+       @$(NORMAL_UNINSTALL)
+       list='$(std_HEADERS)'; for p in $$list; do \
+         q=`echo $$p | sed -e 's,.*/,,'`; \
+         rm -f $(DESTDIR)$(stddir)/$$q; \
        done
 
-uninstall-glibcxxinstallHEADERS:
+uninstall-bitsHEADERS:
        @$(NORMAL_UNINSTALL)
-       list='$(glibcxxinstall_HEADERS)'; for p in $$list; do \
+       list='$(bits_HEADERS)'; for p in $$list; do \
          q=`echo $$p | sed -e 's,.*/,,'`; \
-         rm -f $(DESTDIR)$(glibcxxinstalldir)/$$q; \
+         rm -f $(DESTDIR)$(bitsdir)/$$q; \
        done
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
index be898d7811a8ea32c9aafda2cb64504f16d46398..c93085a072bc33cb370d73866c75a8d5a1c2315d 100644 (file)
@@ -1,6 +1,6 @@
-// new abi support -*- C++ -*-
-  
-// Copyright (C) 2000, 2002, 2003, 2004, 2006, 2007, 2009, 2010
+// ABI Support -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2003, 2004, 2006, 2007, 2009, 2010, 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of GCC.
@@ -9,12 +9,12 @@
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation; either version 3, or (at your option)
 // any later version.
-// 
+//
 // GCC 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.
-// 
+//
 // Under Section 7 of GPL version 3, you are granted additional
 // permissions described in the GCC Runtime Library Exception, version
 // 3.1, as published by the Free Software Foundation.
 // <http://www.gnu.org/licenses/>.
 
 // Written by Nathan Sidwell, Codesourcery LLC, <nathan@codesourcery.com>
+
 /* This file declares the new abi entry points into the runtime. It is not
    normally necessary for user programs to include this header, or use the
    entry points directly. However, this header is available should that be
    needed.
-   
+
    Some of the entry points are intended for both C and C++, thus this header
    is includable from both C and C++. Though the C++ specific parts are not
    available in C, naturally enough.  */
 #pragma GCC visibility push(default)
 
 #include <stddef.h>
+#include <bits/c++config.h>
 #include <bits/cxxabi_tweaks.h>
-#include <cxxabi-forced.h>
-#ifdef __cplusplus
-#define _GLIBCXX_NOTHROW throw() 
-#else
-#define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
-#endif
+#include <bits/cxxabi_forced.h>
 
 #ifdef __cplusplus
 namespace __cxxabiv1
-{  
-  extern "C" 
+{
+  extern "C"
   {
 #endif
 
   typedef __cxa_cdtor_return_type (*__cxa_cdtor_type)(void *);
 
   // Allocate array.
-  void* 
-  __cxa_vec_new(size_t __element_count, size_t __element_size, 
+  void*
+  __cxa_vec_new(size_t __element_count, size_t __element_size,
                size_t __padding_size, __cxa_cdtor_type __constructor,
                __cxa_cdtor_type __destructor);
 
   void*
   __cxa_vec_new2(size_t __element_count, size_t __element_size,
                 size_t __padding_size, __cxa_cdtor_type __constructor,
-                __cxa_cdtor_type __destructor, void *(*__alloc) (size_t), 
+                __cxa_cdtor_type __destructor, void *(*__alloc) (size_t),
                 void (*__dealloc) (void*));
 
   void*
   __cxa_vec_new3(size_t __element_count, size_t __element_size,
                 size_t __padding_size, __cxa_cdtor_type __constructor,
-                __cxa_cdtor_type __destructor, void *(*__alloc) (size_t), 
+                __cxa_cdtor_type __destructor, void *(*__alloc) (size_t),
                 void (*__dealloc) (void*, size_t));
 
   // Construct array.
@@ -91,41 +86,41 @@ namespace __cxxabiv1
 
   __cxa_vec_ctor_return_type
   __cxa_vec_cctor(void* __dest_array, void* __src_array,
-                 size_t __element_count, size_t __element_size, 
-                 __cxa_cdtor_return_type (*__constructor) (void*, void*), 
+                 size_t __element_count, size_t __element_size,
+                 __cxa_cdtor_return_type (*__constructor) (void*, void*),
                  __cxa_cdtor_type __destructor);
+
   // Destruct array.
-  void 
+  void
   __cxa_vec_dtor(void* __array_address, size_t __element_count,
                 size_t __element_size, __cxa_cdtor_type __destructor);
-  
-  void 
+
+  void
   __cxa_vec_cleanup(void* __array_address, size_t __element_count, size_t __s,
                    __cxa_cdtor_type __destructor) _GLIBCXX_NOTHROW;
-  
+
   // Destruct and release array.
-  void 
+  void
   __cxa_vec_delete(void* __array_address, size_t __element_size,
                   size_t __padding_size, __cxa_cdtor_type __destructor);
 
-  void 
+  void
   __cxa_vec_delete2(void* __array_address, size_t __element_size,
                    size_t __padding_size, __cxa_cdtor_type __destructor,
                    void (*__dealloc) (void*));
-                  
-  void 
+
+  void
   __cxa_vec_delete3(void* __array_address, size_t __element_size,
                    size_t __padding_size, __cxa_cdtor_type __destructor,
                    void (*__dealloc) (void*, size_t));
 
-  int 
+  int
   __cxa_guard_acquire(__guard*);
 
-  void 
+  void
   __cxa_guard_release(__guard*) _GLIBCXX_NOTHROW;
 
-  void 
+  void
   __cxa_guard_abort(__guard*) _GLIBCXX_NOTHROW;
 
   // Pure virtual functions.
@@ -148,7 +143,7 @@ namespace __cxxabiv1
 
 
   /**
-   *  @brief Demangling routine. 
+   *  @brief Demangling routine.
    *  ABI-mandated entry point in the C++ runtime library for demangling.
    *
    *  @param __mangled_name A NUL-terminated character string
@@ -177,7 +172,7 @@ namespace __cxxabiv1
    *  The demangling is performed using the C++ ABI mangling rules,
    *  with GNU extensions. For example, this function is used in
    *  __gnu_cxx::__verbose_terminate_handler.
-   * 
+   *
    *  See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch39.html
    *  for other examples of use.
    *
@@ -205,10 +200,10 @@ namespace __cxxabiv1
   class __fundamental_type_info : public std::type_info
   {
   public:
-    explicit 
+    explicit
     __fundamental_type_info(const char* __n) : std::type_info(__n) { }
 
-    virtual 
+    virtual
     ~__fundamental_type_info();
   };
 
@@ -216,10 +211,10 @@ namespace __cxxabiv1
   class __array_type_info : public std::type_info
   {
   public:
-    explicit 
+    explicit
     __array_type_info(const char* __n) : std::type_info(__n) { }
 
-    virtual 
+    virtual
     ~__array_type_info();
   };
 
@@ -227,15 +222,15 @@ namespace __cxxabiv1
   class __function_type_info : public std::type_info
   {
   public:
-    explicit 
+    explicit
     __function_type_info(const char* __n) : std::type_info(__n) { }
 
-    virtual 
+    virtual
     ~__function_type_info();
 
   protected:
     // Implementation defined member function.
-    virtual bool 
+    virtual bool
     __is_function_p() const;
   };
 
@@ -243,10 +238,10 @@ namespace __cxxabiv1
   class __enum_type_info : public std::type_info
   {
   public:
-    explicit 
+    explicit
     __enum_type_info(const char* __n) : std::type_info(__n) { }
 
-    virtual 
+    virtual
     ~__enum_type_info();
   };
 
@@ -257,17 +252,17 @@ namespace __cxxabiv1
     unsigned int               __flags; // Qualification of the target object.
     const std::type_info*      __pointee; // Type of pointed to object.
 
-    explicit 
-    __pbase_type_info(const char* __n, int __quals, 
+    explicit
+    __pbase_type_info(const char* __n, int __quals,
                      const std::type_info* __type)
     : std::type_info(__n), __flags(__quals), __pointee(__type)
     { }
-    
-    virtual 
+
+    virtual
     ~__pbase_type_info();
 
     // Implementation defined type.
-    enum __masks 
+    enum __masks
       {
        __const_mask = 0x1,
        __volatile_mask = 0x2,
@@ -283,11 +278,11 @@ namespace __cxxabiv1
     operator=(const __pbase_type_info&);
 
     // Implementation defined member functions.
-    virtual bool 
-    __do_catch(const std::type_info* __thr_type, void** __thr_obj, 
+    virtual bool
+    __do_catch(const std::type_info* __thr_type, void** __thr_obj,
               unsigned int __outer) const;
 
-    inline virtual bool 
+    inline virtual bool
     __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
                    unsigned __outer) const;
   };
@@ -296,22 +291,22 @@ namespace __cxxabiv1
   class __pointer_type_info : public __pbase_type_info
   {
   public:
-    explicit 
-    __pointer_type_info(const char* __n, int __quals, 
+    explicit
+    __pointer_type_info(const char* __n, int __quals,
                        const std::type_info* __type)
     : __pbase_type_info (__n, __quals, __type) { }
 
 
-    virtual 
+    virtual
     ~__pointer_type_info();
 
   protected:
     // Implementation defined member functions.
-    virtual bool 
+    virtual bool
     __is_pointer_p() const;
 
-    virtual bool 
-    __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj, 
+    virtual bool
+    __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
                    unsigned __outer) const;
   };
 
@@ -323,13 +318,13 @@ namespace __cxxabiv1
   public:
     __class_type_info* __context;   // Class of the member.
 
-    explicit 
+    explicit
     __pointer_to_member_type_info(const char* __n, int __quals,
-                                 const std::type_info* __type, 
+                                 const std::type_info* __type,
                                  __class_type_info* __klass)
     : __pbase_type_info(__n, __quals, __type), __context(__klass) { }
 
-    virtual 
+    virtual
     ~__pointer_to_member_type_info();
 
   protected:
@@ -339,7 +334,7 @@ namespace __cxxabiv1
     operator=(const __pointer_to_member_type_info&);
 
     // Implementation defined member function.
-    virtual bool 
+    virtual bool
     __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
                    unsigned __outer) const;
   };
@@ -351,26 +346,26 @@ namespace __cxxabiv1
     const __class_type_info*   __base_type;  // Base class type.
     long                       __offset_flags;  // Offset and info.
 
-    enum __offset_flags_masks 
+    enum __offset_flags_masks
       {
        __virtual_mask = 0x1,
        __public_mask = 0x2,
        __hwm_bit = 2,
        __offset_shift = 8          // Bits to shift offset.
       };
-  
+
     // Implementation defined member functions.
-    bool 
+    bool
     __is_virtual_p() const
     { return __offset_flags & __virtual_mask; }
 
-    bool 
+    bool
     __is_public_p() const
     { return __offset_flags & __public_mask; }
 
-    ptrdiff_t 
+    ptrdiff_t
     __offset() const
-    { 
+    {
       // This shift, being of a signed type, is implementation
       // defined. GCC implements such shifts as arithmetic, which is
       // what we want.
@@ -382,10 +377,10 @@ namespace __cxxabiv1
   class __class_type_info : public std::type_info
   {
   public:
-    explicit 
+    explicit
     __class_type_info (const char *__n) : type_info(__n) { }
 
-    virtual 
+    virtual
     ~__class_type_info ();
 
     // Implementation defined types.
@@ -396,24 +391,24 @@ namespace __cxxabiv1
     enum __sub_kind
       {
        // We have no idea.
-       __unknown = 0, 
+       __unknown = 0,
 
        // Not contained within us (in some circumstances this might
        // mean not contained publicly)
-       __not_contained, 
+       __not_contained,
 
        // Contained ambiguously.
-       __contained_ambig, 
-    
+       __contained_ambig,
+
        // Via a virtual path.
-       __contained_virtual_mask = __base_class_type_info::__virtual_mask, 
+       __contained_virtual_mask = __base_class_type_info::__virtual_mask,
 
        // Via a public path.
-       __contained_public_mask = __base_class_type_info::__public_mask,   
+       __contained_public_mask = __base_class_type_info::__public_mask,
 
        // Contained within us.
        __contained_mask = 1 << __base_class_type_info::__hwm_bit,
-    
+
        __contained_private = __contained_mask,
        __contained_public = __contained_mask | __contained_public_mask
       };
@@ -423,17 +418,17 @@ namespace __cxxabiv1
 
   protected:
     // Implementation defined member functions.
-    virtual bool 
+    virtual bool
     __do_upcast(const __class_type_info* __dst_type, void**__obj_ptr) const;
 
-    virtual bool 
-    __do_catch(const type_info* __thr_type, void** __thr_obj, 
+    virtual bool
+    __do_catch(const type_info* __thr_type, void** __thr_obj,
               unsigned __outer) const;
 
   public:
-    // Helper for upcast. See if DST is us, or one of our bases. 
-    // Return false if not found, true if found. 
-    virtual bool 
+    // Helper for upcast. See if DST is us, or one of our bases.
+    // Return false if not found, true if found.
+    virtual bool
     __do_upcast(const __class_type_info* __dst, const void* __obj,
                __upcast_result& __restrict __result) const;
 
@@ -443,9 +438,9 @@ namespace __cxxabiv1
     // objects might be contained within this type.  If SRC_PTR is one
     // of our SRC_TYPE bases, indicate the virtuality. Returns
     // not_contained for non containment or private containment.
-    inline __sub_kind 
+    inline __sub_kind
     __find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
-                     const __class_type_info* __src_type, 
+                     const __class_type_info* __src_type,
                      const void* __src_ptr) const;
 
     // Helper for dynamic cast. ACCESS_PATH gives the access from the
@@ -455,17 +450,17 @@ namespace __cxxabiv1
     // started from and SRC_PTR points to that base within the most
     // derived object. Fill in RESULT with what we find. Return true
     // if we have located an ambiguous match.
-    virtual bool 
+    virtual bool
     __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
-                const __class_type_info* __dst_type, const void* __obj_ptr, 
-                const __class_type_info* __src_type, const void* __src_ptr, 
+                const __class_type_info* __dst_type, const void* __obj_ptr,
+                const __class_type_info* __src_type, const void* __src_ptr,
                 __dyncast_result& __result) const;
-    
+
     // Helper for find_public_subobj. SRC2DST indicates how SRC_TYPE
     // bases are inherited by the type started from -- which is not
     // necessarily the current type. The current type will be a base
     // of the destination type.  OBJ_PTR points to the current base.
-    virtual __sub_kind 
+    virtual __sub_kind
     __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
                         const __class_type_info* __src_type,
                         const void* __src_ptr) const;
@@ -477,11 +472,11 @@ namespace __cxxabiv1
   public:
     const __class_type_info* __base_type;
 
-    explicit 
+    explicit
     __si_class_type_info(const char *__n, const __class_type_info *__base)
     : __class_type_info(__n), __base_type(__base) { }
 
-    virtual 
+    virtual
     ~__si_class_type_info();
 
   protected:
@@ -491,24 +486,24 @@ namespace __cxxabiv1
     operator=(const __si_class_type_info&);
 
     // Implementation defined member functions.
-    virtual bool 
+    virtual bool
     __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
                 const __class_type_info* __dst_type, const void* __obj_ptr,
                 const __class_type_info* __src_type, const void* __src_ptr,
                 __dyncast_result& __result) const;
 
-    virtual __sub_kind 
+    virtual __sub_kind
     __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
                         const __class_type_info* __src_type,
                         const void* __sub_ptr) const;
 
-    virtual bool 
+    virtual bool
     __do_upcast(const __class_type_info*__dst, const void*__obj,
                __upcast_result& __restrict __result) const;
   };
 
   // Type information for a class with multiple and/or virtual bases.
-  class __vmi_class_type_info : public __class_type_info 
+  class __vmi_class_type_info : public __class_type_info
   {
   public:
     unsigned int               __flags;  // Details about the class hierarchy.
@@ -519,15 +514,15 @@ namespace __cxxabiv1
     // internally generated by the compiler.
     __base_class_type_info     __base_info[1];  // Array of bases.
 
-    explicit 
+    explicit
     __vmi_class_type_info(const char* __n, int ___flags)
     : __class_type_info(__n), __flags(___flags), __base_count(0) { }
 
-    virtual 
+    virtual
     ~__vmi_class_type_info();
 
     // Implementation defined types.
-    enum __flags_masks 
+    enum __flags_masks
       {
        __non_diamond_repeat_mask = 0x1, // Distinct instance of repeated base.
        __diamond_shaped_mask = 0x2, // Diamond shaped multiple inheritance.
@@ -536,18 +531,18 @@ namespace __cxxabiv1
 
   protected:
     // Implementation defined member functions.
-    virtual bool 
+    virtual bool
     __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
                 const __class_type_info* __dst_type, const void* __obj_ptr,
                 const __class_type_info* __src_type, const void* __src_ptr,
                 __dyncast_result& __result) const;
 
-    virtual __sub_kind 
-    __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr, 
+    virtual __sub_kind
+    __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
                         const __class_type_info* __src_type,
                         const void* __src_ptr) const;
-    
-    virtual bool 
+
+    virtual bool
     __do_upcast(const __class_type_info* __dst, const void* __obj,
                __upcast_result& __restrict __result) const;
   };
@@ -628,4 +623,4 @@ namespace __gnu_cxx
 
 #pragma GCC visibility pop
 
-#endif // __CXXABI_H 
+#endif // __CXXABI_H
similarity index 84%
rename from libstdc++-v3/libsupc++/cxxabi-forced.h
rename to libstdc++-v3/libsupc++/cxxabi_forced.h
index 27ff34952e6482cb9fb346f3864a3525721f54fe..c45ce799d4773cb8a19a1b0d776b3fc1d45c91d9 100644 (file)
@@ -1,6 +1,6 @@
-// cxxabi.h subset for inclusion by other library headers -*- C++ -*-
+// cxxabi.h subset for cancellation -*- C++ -*-
   
-// Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
 //
 // This file is part of GCC.
 //
@@ -23,8 +23,9 @@
 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 // <http://www.gnu.org/licenses/>.
 
-/** @file cxxabi-forced.h
- *  The header provides an interface to the C++ ABI.
+/** @file bits/cxxabi_forced.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{cxxabi.h}
  */
 
 #ifndef _CXXABI_FORCED_H
index 579c23986019e0fd40bf81fbdbbbe9fbb2241e39..c6abe3546477a250b2b079dcea2ce5e0dcb43131 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*- Common throw conditions.
-// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2009
+// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2009, 2011
 // Free Software Foundation
 //
 // This file is part of GCC.
@@ -27,7 +27,7 @@
 #include "exception"
 #include <cstdlib>
 #include "unwind-cxx.h"
-#include "exception_defines.h"
+#include <bits/exception_defines.h>
 
 extern "C" void
 __cxxabiv1::__cxa_bad_cast ()
index 0054e52016d586b4f9fd758310a3a2ce850f9e52..f519f35f02a929d29774297c116fae40be1aec7e 100644 (file)
@@ -1,5 +1,6 @@
 // -*- C++ -*- Helpers for calling unextected and terminate
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+// 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of GCC.
@@ -25,7 +26,7 @@
 
 #include <bits/c++config.h>
 #include <cstdlib>
-#include <exception_defines.h>
+#include <bits/exception_defines.h>
 #include "unwind-cxx.h"
 
 using namespace __cxxabiv1;
index 2b194f2e4863fb3b5f310756e4557a3784156c33..19c2044736bc374faf238fa53066bdb5b6c0de61 100644 (file)
@@ -1,5 +1,6 @@
 // -*- C++ -*- The GNU C++ exception personality routine.
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of GCC.
@@ -25,7 +26,7 @@
 
 #include <bits/c++config.h>
 #include <cstdlib>
-#include <exception_defines.h>
+#include <bits/exception_defines.h>
 #include <cxxabi.h>
 #include "unwind-cxx.h"
 
index cf79062c35380332490a8f883bd6fa9b34dd3110..94c28427d6d27e62a026c7c1cc7f7bd33ae96a51 100644 (file)
@@ -29,7 +29,7 @@
 #define _GLIBCXX_EH_PTR_COMPAT
 
 #include <exception>
-#include <exception_ptr.h>
+#include <bits/exception_ptr.h>
 #include "unwind-cxx.h"
 
 using namespace __cxxabiv1;
index f87f7b51d61d0b82ebbdd66b28114cb78615ff7a..87359d09fdd7dac4082bf52d2c35bfe3e27e15de 100644 (file)
@@ -1,5 +1,6 @@
 // -*- C++ -*- std::terminate, std::unexpected and friends.
-// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2009
+// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2009,
+// 2011
 // Free Software Foundation
 //
 // This file is part of GCC.
@@ -27,7 +28,7 @@
 #include "exception"
 #include <cstdlib>
 #include "unwind-cxx.h"
-#include "exception_defines.h"
+#include <bits/exception_defines.h>
 
 using namespace __cxxabiv1;
 
index 857b2022b2a6673eadbd8eb0f6c7c114b269ff60..7f779f93c74371494e6c1173815bb23511612351 100644 (file)
@@ -1,7 +1,7 @@
 // Exception Handling support header for -*- C++ -*-
 
 // Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-// 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 // Free Software Foundation
 //
 // This file is part of GCC.
@@ -148,8 +148,8 @@ _GLIBCXX_END_NAMESPACE
 
 #if (defined(__GXX_EXPERIMENTAL_CXX0X__) \
      && defined(_GLIBCXX_ATOMIC_BUILTINS_4))
-#include <exception_ptr.h>
-#include <nested_exception.h>
+#include <bits/exception_ptr.h>
+#include <bits/nested_exception.h>
 #endif
 
 #endif
index 951d96f32f38a8b100211d05965664fc0c35ec6d..269937cff9dd7e8d16ad91b9c1c694ae0acfcf07 100644 (file)
@@ -1,6 +1,7 @@
 // -fno-exceptions Support -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2006, 2007, 2008, 2009,
+// 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 // <http://www.gnu.org/licenses/>.
 
-//
-// ISO C++ 14882: 19.1  Exception classes
-//
-
-/** @file exception_defines.h
- *  This is a Standard C++ Library header.
+/** @file bits/exception_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{exception}
  */
 
 #ifndef _EXCEPTION_DEFINES_H
index 312d61d443dc00524c28056cf287502b4a66145f..ef826f6bad0be17695e71e05e5674b512616e725 100644 (file)
@@ -1,6 +1,6 @@
 // Exception Handling support header (exception_ptr class) for -*- C++ -*-
 
-// Copyright (C) 2008, 2009, 2010 Free Software Foundation
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation
 //
 // This file is part of GCC.
 //
@@ -23,7 +23,7 @@
 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 // <http://www.gnu.org/licenses/>.
 
-/** @file exception_ptr.h
+/** @file bits/exception_ptr.h
  *  This is an internal header file, included by other library headers.
  *  Do not attempt to use it directly. @headername{exception}
  */
@@ -34,7 +34,7 @@
 #pragma GCC visibility push(default)
 
 #include <bits/c++config.h>
-#include <exception_defines.h>
+#include <bits/exception_defines.h>
 
 #if !defined(_GLIBCXX_ATOMIC_BUILTINS_4)
 #  error This platform does not support exception propagation.
index a247a11492e5c0c9ed022b1584192c70fdbae2ab..951f7bb115563454345356d7bfb39e36445361fd 100644 (file)
@@ -1,6 +1,6 @@
 // Definition of _Hash_bytes. -*- C++ -*-
 
-// Copyright (C) 2010 Free Software Foundation, Inc.
+// Copyright (C) 2010, 2011 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
@@ -32,7 +32,7 @@
 // function apears to be better in both speed and hash quality, and
 // FNV is provided primarily for backward compatibility.
 
-#include <bits/c++config.h>
+#include <bits/hash_bytes.h>
 
 namespace
 {
@@ -63,8 +63,8 @@ namespace
 #endif
 }
 
-namespace std
-{
+_GLIBCXX_BEGIN_NAMESPACE(std)
+
 #if __SIZEOF_SIZE_T__ == 4
 
   // Implementation of Murmur hash for 32-bit size_t.
@@ -97,7 +97,7 @@ namespace std
        hash ^= static_cast<unsigned char>(buf[1]) << 8;
       case 1:
        hash ^= static_cast<unsigned char>(buf[0]);
-        hash *= m;
+       hash *= m;
       };
 
     // Do a few final mixes of the hash.
@@ -182,4 +182,5 @@ namespace std
   { return _Hash_bytes(ptr, len, seed); }
 
 #endif /* __SIZEOF_SIZE_T__ */
-}
+
+_GLIBCXX_END_NAMESPACE
diff --git a/libstdc++-v3/libsupc++/hash_bytes.h b/libstdc++-v3/libsupc++/hash_bytes.h
new file mode 100644 (file)
index 0000000..95db644
--- /dev/null
@@ -0,0 +1,56 @@
+// Declarations for hash functions. -*- C++ -*-
+
+// Copyright (C) 2010, 2011 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 3, 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.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/hash_bytes.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{functional}
+ */
+
+#ifndef _HASH_BYTES_H
+#define _HASH_BYTES_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+_GLIBCXX_BEGIN_NAMESPACE(std)
+
+  // Hash function implementation for the nontrivial specialization.
+  // All of them are based on a primitive that hashes a pointer to a
+  // byte array. The actual hash algorithm is not guaranteed to stay
+  // the same from release to release -- it may be updated or tuned to
+  // improve hash quality or speed.
+  size_t
+  _Hash_bytes(const void* __ptr, size_t __len, size_t __seed);
+
+  // A similar hash primitive, using the FNV hash algorithm. This
+  // algorithm is guaranteed to stay the same from release to release.
+  // (although it might not produce the same values on different
+  // machines.)
+  size_t
+  _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed);
+
+_GLIBCXX_END_NAMESPACE
+
+#endif
index 1836b6e8335e5bbe7285ff9c9953ff5646c980fe..799bd1979d7d87666968a9e4c0a532a2cd84a695 100644 (file)
@@ -1,6 +1,6 @@
 // Nested Exception support header (nested_exception class) for -*- C++ -*-
 
-// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2009, 2010, 2011 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
@@ -22,7 +22,7 @@
 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 // <http://www.gnu.org/licenses/>.
 
-/** @file nested_exception.h
+/** @file bits/nested_exception.h
  *  This is an internal header file, included by other library headers.
  *  Do not attempt to use it directly. @headername{exception}
  */
index 4857c22f2230a9887b496f651a973e35625732e2..c61e941bcff8b9a37c65c52a526b1dd5f2d394e2 100644 (file)
@@ -1,6 +1,6 @@
 // Support routines for the -*- C++ -*- dynamic memory management.
 
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2009
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2009, 2011
 // Free Software Foundation
 //
 // This file is part of GCC.
@@ -26,7 +26,7 @@
 
 #include <bits/c++config.h>
 #include <cstdlib>
-#include <exception_defines.h>
+#include <bits/exception_defines.h>
 #include "new"
 
 using std::new_handler;
index 075934d7b10e2c2549d633a0866a6637bc092c95..1bcdead5846e84b264c6da49964f34f322e86d8e 100644 (file)
@@ -1,5 +1,5 @@
 // Support routines for the -*- C++ -*- dynamic memory management.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004, 2009
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004, 2009, 2011
 // Free Software Foundation
 //
 // This file is part of GCC.
@@ -24,7 +24,7 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <bits/c++config.h>
-#include <exception_defines.h>
+#include <bits/exception_defines.h>
 #include "new"
 
 using std::new_handler;
index 8030eb40e2f0ef98c7be6e85bbcb649867b2e83c..69311d69e9a8bb114e41838480aa7c662f3db06e 100644 (file)
@@ -1,6 +1,6 @@
 // RTTI support for -*- C++ -*-
 // Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-// 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
 // Free Software Foundation
 //
 // This file is part of GCC.
 #pragma GCC system_header
 
 #include <exception>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <bits/hash_bytes.h>
+#endif
+
 
 #pragma GCC visibility push(default)
 
@@ -78,11 +82,6 @@ namespace __cxxabiv1
 
 namespace std 
 {
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-  size_t
-  _Hash_bytes(const void* __ptr, size_t __len, size_t __seed);
-#endif
-
   /**
    *  @brief  Part of RTTI.
    *
index 286401cdf1050f5d9193f92d766a91a71a377ebb..700c5ef431dc9fdb7f0e4aaa1017e2e5e89d83d6 100644 (file)
@@ -1,6 +1,7 @@
 // New abi Support -*- C++ -*-
 
-// Copyright (C) 2000, 2001, 2003, 2004, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2001, 2003, 2004, 2009, 2011
+// Free Software Foundation, Inc.
 //  
 // This file is part of GCC.
 //
@@ -28,7 +29,7 @@
 #include <cxxabi.h>
 #include <new>
 #include <exception>
-#include <exception_defines.h>
+#include <bits/exception_defines.h>
 #include "unwind-cxx.h"
 
 namespace __cxxabiv1
index 099ef1807730bb2c7d55c110f1df26dc29f2cb42..008d57846efc1f7559d3ab5bd93e528180c96696 100644 (file)
@@ -1,6 +1,6 @@
 // Verbose terminate_handler -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2004, 2005, 2009 Free Software Foundation
+// Copyright (C) 2001, 2002, 2004, 2005, 2009, 2011 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
@@ -27,7 +27,7 @@
 #if _GLIBCXX_HOSTED
 #include <cstdlib>
 #include <exception>
-#include <exception_defines.h>
+#include <bits/exception_defines.h>
 #include <cxxabi.h>
 # include <cstdio>
 
index 7f8072427cae3c2b866ccc326f4ee2d0d955a6f3..b53dc40e5b429b8bb5a7fb66497f44709b63a27d 100644 (file)
@@ -3,7 +3,7 @@
 
 // -*- C++ -*-
 
-// Copyright (C) 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2006, 2007, 2009, 2010, 2011 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
@@ -22,4 +22,4 @@
 
 #include <vector>
 
-// { dg-error "Cannot use -D_GLIBCXX_PROFILE with " "" { target *-*-* } 223 }
+// { dg-error "Cannot use -D_GLIBCXX_PROFILE with " "" { target *-*-* } 220 }