From patchwork Fri Sep 10 14:18:58 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Carlini X-Patchwork-Id: 64396 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 7F00FB70F3 for ; Sat, 11 Sep 2010 00:19:34 +1000 (EST) Received: (qmail 27288 invoked by alias); 10 Sep 2010 14:19:31 -0000 Received: (qmail 27264 invoked by uid 22791); 10 Sep 2010 14:19:29 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from vsmtp4.tin.it (HELO vsmtp4.tin.it) (212.216.176.224) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 10 Sep 2010 14:19:02 +0000 Received: from [192.168.0.4] (79.53.235.11) by vsmtp4.tin.it (8.5.113) id 4BCE3CBE0B043C6C; Fri, 10 Sep 2010 16:18:59 +0200 Message-ID: <4C8A3E52.2080501@oracle.com> Date: Fri, 10 Sep 2010 16:18:58 +0200 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100714 SUSE/3.0.6 Thunderbird/3.0.6 MIME-Version: 1.0 To: "gcc-patches@gcc.gnu.org" CC: libstdc++ Subject: [v3] Untangle src/hash files X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hi, this untangles the *.cc files dealing with the C++0x and TR1 hash functions, which, as noticed by Matt, where making difficult changing the C++0x one independently. Tested x86_64-linux, committed. Paolo. ////////////////// 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. Index: src/hash-string-aux.cc =================================================================== --- src/hash-string-aux.cc (revision 164074) +++ src/hash-string-aux.cc (working copy) @@ -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 Index: src/hash_tr1.cc =================================================================== --- src/hash_tr1.cc (revision 164074) +++ src/hash_tr1.cc (working copy) @@ -30,6 +30,29 @@ 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 } } Index: src/compatibility-c++0x.cc =================================================================== --- src/compatibility-c++0x.cc (revision 164074) +++ src/compatibility-c++0x.cc (working copy) @@ -50,10 +50,32 @@ // 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 hash::operator()(error_code __e) const { const size_t __tmp = std::_Fnv_hash::hash(__e._M_value);