From 2dd3121f9ebb10bd60905a987a49c8cd83e7f264 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Fri, 10 Sep 2010 14:07:55 +0000 Subject: [PATCH] hash-string-aux.cc: Remove. 2010-09-10 Paolo Carlini * src/hash-string-aux.cc: Remove. Move contents... * src/hash_tr1.cc: ... here. * src/compatibility-c++0x.cc: ... and here. From-SVN: r164178 --- libstdc++-v3/ChangeLog | 6 ++++ libstdc++-v3/src/compatibility-c++0x.cc | 24 ++++++++++++- libstdc++-v3/src/hash-string-aux.cc | 48 ------------------------- libstdc++-v3/src/hash_tr1.cc | 25 ++++++++++++- 4 files changed, 53 insertions(+), 50 deletions(-) delete mode 100644 libstdc++-v3/src/hash-string-aux.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 127ea5e7995..819e45bd6f2 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2010-09-10 Paolo Carlini + + * src/hash-string-aux.cc: Remove. Move contents... + * src/hash_tr1.cc: ... here. + * src/compatibility-c++0x.cc: ... and here. + 2010-09-09 Paolo Carlini PR libstdc++/45613 diff --git a/libstdc++-v3/src/compatibility-c++0x.cc b/libstdc++-v3/src/compatibility-c++0x.cc index 759267ab3a5..e86eb8d9dab 100644 --- a/libstdc++-v3/src/compatibility-c++0x.cc +++ b/libstdc++-v3/src/compatibility-c++0x.cc @@ -50,7 +50,29 @@ namespace std // We need these due to the symbols exported since GLIBCXX_3.4.10. // See libstdc++/41662 for details. -#include "hash-string-aux.cc" +#ifndef _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL + template<> + size_t + hash::operator()(string __s) const + { return _Fnv_hash::hash(__s.data(), __s.length()); } + + template<> + size_t + hash::operator()(const string& __s) const + { return _Fnv_hash::hash(__s.data(), __s.length()); } + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + size_t + hash::operator()(wstring __s) const + { return _Fnv_hash::hash(__s.data(), __s.length() * sizeof(wchar_t)); } + + template<> + size_t + hash::operator()(const wstring& __s) const + { return _Fnv_hash::hash(__s.data(), __s.length() * sizeof(wchar_t)); } +#endif +#endif template<> size_t diff --git a/libstdc++-v3/src/hash-string-aux.cc b/libstdc++-v3/src/hash-string-aux.cc deleted file mode 100644 index 711d7f41c9d..00000000000 --- a/libstdc++-v3/src/hash-string-aux.cc +++ /dev/null @@ -1,48 +0,0 @@ -// std::hash and std::tr1::hash definitions, string bits -*- C++ -*- - -// Copyright (C) 2007, 2008, 2009, 2010 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 -// . - -#ifndef _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL - template<> - size_t - hash::operator()(string __s) const - { return _Fnv_hash::hash(__s.data(), __s.length()); } - - template<> - size_t - hash::operator()(const string& __s) const - { return _Fnv_hash::hash(__s.data(), __s.length()); } - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - size_t - hash::operator()(wstring __s) const - { return _Fnv_hash::hash(__s.data(), __s.length() * sizeof(wchar_t)); } - - template<> - size_t - hash::operator()(const wstring& __s) const - { return _Fnv_hash::hash(__s.data(), __s.length() * sizeof(wchar_t)); } -#endif - -#endif diff --git a/libstdc++-v3/src/hash_tr1.cc b/libstdc++-v3/src/hash_tr1.cc index 0dca086b95c..03f3ad3c094 100644 --- a/libstdc++-v3/src/hash_tr1.cc +++ b/libstdc++-v3/src/hash_tr1.cc @@ -30,6 +30,29 @@ namespace std namespace tr1 { #include "hash-long-double-aux.cc" -#include "hash-string-aux.cc" + +#ifndef _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL + template<> + size_t + hash::operator()(string __s) const + { return _Fnv_hash::hash(__s.data(), __s.length()); } + + template<> + size_t + hash::operator()(const string& __s) const + { return _Fnv_hash::hash(__s.data(), __s.length()); } + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + size_t + hash::operator()(wstring __s) const + { return _Fnv_hash::hash(__s.data(), __s.length() * sizeof(wchar_t)); } + + template<> + size_t + hash::operator()(const wstring& __s) const + { return _Fnv_hash::hash(__s.data(), __s.length() * sizeof(wchar_t)); } +#endif +#endif } }