aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrançois Dumont <fdumont@gcc.gnu.org>2012-01-03 20:33:20 +0000
committerFrançois Dumont <fdumont@gcc.gnu.org>2012-01-03 20:33:20 +0000
commit346afd846bbed003f8b35d927a319d7f29f87138 (patch)
treee85bc8c2cf1a99c638b138d80c792fccd9d1dbef
parent2b59b5284fe61754d1b91d9a43a8ecba27644c42 (diff)
downloadgcc-346afd846bbed003f8b35d927a319d7f29f87138.zip
gcc-346afd846bbed003f8b35d927a319d7f29f87138.tar.gz
gcc-346afd846bbed003f8b35d927a319d7f29f87138.tar.bz2
hashtable_policy.h (_Ebo_helper<>): Rename to the more specific _Hashtable_ebo_helper.
2012-01-03 François Dumont <fdumont@gcc.gnu.org> * include/bits/hashtable_policy.h (_Ebo_helper<>): Rename to the more specific _Hashtable_ebo_helper. Hide this implementation detail thanks to private inheritance. From-SVN: r182857
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/include/bits/hashtable_policy.h75
2 files changed, 47 insertions, 34 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 451596a..1e8f64b 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-03 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/bits/hashtable_policy.h (_Ebo_helper<>): Rename to the more
+ specific _Hashtable_ebo_helper. Hide this implementation detail thanks
+ to private inheritance.
+
2012-01-03 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51738
diff --git a/libstdc++-v3/include/bits/hashtable_policy.h b/libstdc++-v3/include/bits/hashtable_policy.h
index 261e56b..66386e8 100644
--- a/libstdc++-v3/include/bits/hashtable_policy.h
+++ b/libstdc++-v3/include/bits/hashtable_policy.h
@@ -1,6 +1,6 @@
// Internal policy header for unordered_set and unordered_map -*- C++ -*-
-// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+// Copyright (C) 2010, 2011, 2012 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
@@ -517,43 +517,43 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// and when it worth it, type is empty.
template<int _Nm, typename _Tp,
bool __use_ebo = !__is_final(_Tp) && __is_empty(_Tp)>
- struct _Ebo_helper;
+ struct _Hashtable_ebo_helper;
// Specialization using EBO.
template<int _Nm, typename _Tp>
- struct _Ebo_helper<_Nm, _Tp, true> : _Tp
+ struct _Hashtable_ebo_helper<_Nm, _Tp, true> : private _Tp
{
- _Ebo_helper() = default;
- _Ebo_helper(const _Tp& __tp) : _Tp(__tp)
+ _Hashtable_ebo_helper() = default;
+ _Hashtable_ebo_helper(const _Tp& __tp) : _Tp(__tp)
{ }
static const _Tp&
- _S_cget(const _Ebo_helper& __eboh)
+ _S_cget(const _Hashtable_ebo_helper& __eboh)
{ return static_cast<const _Tp&>(__eboh); }
static _Tp&
- _S_get(_Ebo_helper& __eboh)
+ _S_get(_Hashtable_ebo_helper& __eboh)
{ return static_cast<_Tp&>(__eboh); }
};
// Specialization not using EBO.
template<int _Nm, typename _Tp>
- struct _Ebo_helper<_Nm, _Tp, false>
+ struct _Hashtable_ebo_helper<_Nm, _Tp, false>
{
- _Ebo_helper() = default;
- _Ebo_helper(const _Tp& __tp) : __m_tp(__tp)
+ _Hashtable_ebo_helper() = default;
+ _Hashtable_ebo_helper(const _Tp& __tp) : _M_tp(__tp)
{ }
static const _Tp&
- _S_cget(const _Ebo_helper& __eboh)
- { return __eboh.__m_tp; }
+ _S_cget(const _Hashtable_ebo_helper& __eboh)
+ { return __eboh._M_tp; }
static _Tp&
- _S_get(_Ebo_helper& __eboh)
- { return __eboh.__m_tp; }
+ _S_get(_Hashtable_ebo_helper& __eboh)
+ { return __eboh._M_tp; }
private:
- _Tp __m_tp;
+ _Tp _M_tp;
};
// Class template _Hash_code_base. Encapsulates two policy issues that
@@ -583,11 +583,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Key, typename _Value, typename _ExtractKey,
typename _H1, typename _H2, typename _Hash>
struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false>
- : _Ebo_helper<0, _ExtractKey>, _Ebo_helper<1, _Hash>
+ : private _Hashtable_ebo_helper<0, _ExtractKey>,
+ private _Hashtable_ebo_helper<1, _Hash>
{
private:
- typedef _Ebo_helper<0, _ExtractKey> _EboExtractKey;
- typedef _Ebo_helper<1, _Hash> _EboHash;
+ typedef _Hashtable_ebo_helper<0, _ExtractKey> _EboExtractKey;
+ typedef _Hashtable_ebo_helper<1, _Hash> _EboHash;
+
protected:
// We need the default constructor for the local iterators.
_Hash_code_base() = default;
@@ -655,12 +657,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename _H1, typename _H2>
struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2,
_Default_ranged_hash, false>
- : _Ebo_helper<0, _ExtractKey>, _Ebo_helper<1, _H1>, _Ebo_helper<2, _H2>
+ : private _Hashtable_ebo_helper<0, _ExtractKey>,
+ private _Hashtable_ebo_helper<1, _H1>,
+ private _Hashtable_ebo_helper<2, _H2>
{
private:
- typedef _Ebo_helper<0, _ExtractKey> _EboExtractKey;
- typedef _Ebo_helper<1, _H1> _EboH1;
- typedef _Ebo_helper<2, _H2> _EboH2;
+ typedef _Hashtable_ebo_helper<0, _ExtractKey> _EboExtractKey;
+ typedef _Hashtable_ebo_helper<1, _H1> _EboH1;
+ typedef _Hashtable_ebo_helper<2, _H2> _EboH2;
public:
typedef _H1 hasher;
@@ -732,12 +736,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename _H1, typename _H2>
struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2,
_Default_ranged_hash, true>
- : _Ebo_helper<0, _ExtractKey>, _Ebo_helper<1, _H1>, _Ebo_helper<2, _H2>
+ : private _Hashtable_ebo_helper<0, _ExtractKey>,
+ private _Hashtable_ebo_helper<1, _H1>,
+ private _Hashtable_ebo_helper<2, _H2>
{
private:
- typedef _Ebo_helper<0, _ExtractKey> _EboExtractKey;
- typedef _Ebo_helper<1, _H1> _EboH1;
- typedef _Ebo_helper<2, _H2> _EboH2;
+ typedef _Hashtable_ebo_helper<0, _ExtractKey> _EboExtractKey;
+ typedef _Hashtable_ebo_helper<1, _H1> _EboH1;
+ typedef _Hashtable_ebo_helper<2, _H2> _EboH2;
public:
typedef _H1 hasher;
@@ -835,12 +841,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename _H1, typename _H2, typename _Hash,
bool __cache_hash_code>
struct _Hashtable_base
- : _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash,
- __cache_hash_code>,
- _Ebo_helper<0, _Equal>
+ : public _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash,
+ __cache_hash_code>,
+ private _Hashtable_ebo_helper<0, _Equal>
{
private:
- typedef _Ebo_helper<0, _Equal> _EboEqual;
+ typedef _Hashtable_ebo_helper<0, _Equal> _EboEqual;
protected:
typedef _Hash_code_base<_Key, _Value, _ExtractKey,
@@ -859,7 +865,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typedef _Equal_helper<_Key, _Value, _ExtractKey,
_Equal, _Hash_code_type,
__cache_hash_code> _EqualHelper;
- return _EqualHelper::_S_equals(_M_eq(), this->_M_extract(), __k, __c, __n);
+ return _EqualHelper::_S_equals(_M_eq(), this->_M_extract(),
+ __k, __c, __n);
}
void
@@ -887,7 +894,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename _H1, typename _H2, typename _Hash>
struct _Local_iterator_base<_Key, _Value, _ExtractKey,
_H1, _H2, _Hash, true>
- : _H2
+ : private _H2
{
_Local_iterator_base() = default;
_Local_iterator_base(_Hash_node<_Value, true>* __p,
@@ -918,8 +925,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename _H1, typename _H2, typename _Hash>
struct _Local_iterator_base<_Key, _Value, _ExtractKey,
_H1, _H2, _Hash, false>
- : _Hash_code_base<_Key, _Value, _ExtractKey,
- _H1, _H2, _Hash, false>
+ : private _Hash_code_base<_Key, _Value, _ExtractKey,
+ _H1, _H2, _Hash, false>
{
_Local_iterator_base() = default;
_Local_iterator_base(_Hash_node<_Value, false>* __p,