]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / include / ext / pb_ds / detail / hash_fn / ranged_hash_fn.hpp
index 24899272f8fd5aa3b8d627f96cb17ff594769488..f2fb6699043d95e90dcb6dc73bc0284cd915c177 100644 (file)
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2005-2022 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
 #ifndef PB_DS_RANGED_HASH_FN_HPP
 #define PB_DS_RANGED_HASH_FN_HPP
 
-#include <ext/pb_ds/detail/basic_types.hpp>
 #include <utility>
+#include <ext/pb_ds/detail/types_traits.hpp>
 #include <debug/debug.h>
 
 namespace __gnu_pbds
 {
   namespace detail
   {
-    template<typename Key, typename Hash_Fn, typename Allocator, 
+    /// Primary template.
+    template<typename Key, typename Hash_Fn, typename _Alloc, 
             typename Comb_Hash_Fn, bool Store_Hash>
     class ranged_hash_fn;
 
 #define PB_DS_CLASS_T_DEC \
-    template<typename Key, typename Hash_Fn, typename Allocator, \
+    template<typename Key, typename Hash_Fn, typename _Alloc, \
             typename Comb_Hash_Fn>
 
 #define PB_DS_CLASS_C_DEC \
-    ranged_hash_fn<Key,        Hash_Fn, Allocator, Comb_Hash_Fn, false>
+    ranged_hash_fn<Key,        Hash_Fn, _Alloc, Comb_Hash_Fn, false>
 
     /**
      * Specialization 1
      * The client supplies a hash function and a ranged hash function,
      * and requests that hash values not be stored.
      **/
-    template<typename Key, typename Hash_Fn, typename Allocator
+    template<typename Key, typename Hash_Fn, typename _Alloc
             typename Comb_Hash_Fn>
-    class ranged_hash_fn< Key, Hash_Fn, Allocator, Comb_Hash_Fn, false> 
+    class ranged_hash_fn< Key, Hash_Fn, _Alloc, Comb_Hash_Fn, false> 
     : public Hash_Fn, public Comb_Hash_Fn
     {
     protected:
-      typedef typename Allocator::size_type size_type;
+      typedef typename _Alloc::size_type size_type;
       typedef Hash_Fn hash_fn_base;
       typedef Comb_Hash_Fn comb_hash_fn_base;
-      typedef typename Allocator::template rebind< Key>::other key_allocator;
-      typedef typename key_allocator::const_reference const_key_reference;
+      typedef typename rebind_traits<_Alloc, Key>::const_reference
+       key_const_reference;
 
       ranged_hash_fn(size_type);
 
@@ -91,7 +92,7 @@ namespace __gnu_pbds
       notify_resized(size_type);
 
       inline size_type
-      operator()(const_key_reference) const;
+      operator()(key_const_reference) const;
     };
 
     PB_DS_CLASS_T_DEC
@@ -130,36 +131,36 @@ namespace __gnu_pbds
     PB_DS_CLASS_T_DEC
     inline typename PB_DS_CLASS_C_DEC::size_type
     PB_DS_CLASS_C_DEC::
-    operator()(const_key_reference r_key) const
+    operator()(key_const_reference r_key) const
     { return (comb_hash_fn_base::operator()(hash_fn_base::operator()(r_key)));}
 
 #undef PB_DS_CLASS_T_DEC
 #undef PB_DS_CLASS_C_DEC
 
 #define PB_DS_CLASS_T_DEC \
-    template<typename Key, typename Hash_Fn, typename Allocator, \
+    template<typename Key, typename Hash_Fn, typename _Alloc, \
             typename Comb_Hash_Fn>
 
 #define PB_DS_CLASS_C_DEC \
-    ranged_hash_fn<Key,Hash_Fn,        Allocator, Comb_Hash_Fn, true>
+    ranged_hash_fn<Key,Hash_Fn,        _Alloc, Comb_Hash_Fn, true>
 
     /**
      * Specialization 2
      * The client supplies a hash function and a ranged hash function,
      * and requests that hash values be stored.
      **/
-    template<typename Key, typename Hash_Fn, typename Allocator,
+    template<typename Key, typename Hash_Fn, typename _Alloc,
             typename Comb_Hash_Fn>
-    class ranged_hash_fn<Key, Hash_Fn, Allocator, Comb_Hash_Fn, true> 
+    class ranged_hash_fn<Key, Hash_Fn, _Alloc, Comb_Hash_Fn, true> 
     : public Hash_Fn, public Comb_Hash_Fn
     {
     protected:
-      typedef typename Allocator::size_type size_type;
+      typedef typename _Alloc::size_type size_type;
       typedef std::pair<size_type, size_type> comp_hash;
       typedef Hash_Fn hash_fn_base;
       typedef Comb_Hash_Fn comb_hash_fn_base;
-      typedef typename Allocator::template rebind<Key>::other key_allocator;
-      typedef typename key_allocator::const_reference const_key_reference;
+      typedef typename rebind_traits<_Alloc, Key>::const_reference
+       key_const_reference;
 
       ranged_hash_fn(size_type);
 
@@ -174,10 +175,10 @@ namespace __gnu_pbds
       notify_resized(size_type);
 
       inline comp_hash
-      operator()(const_key_reference) const;
+      operator()(key_const_reference) const;
 
       inline comp_hash
-      operator()(const_key_reference, size_type) const;
+      operator()(key_const_reference, size_type) const;
     };
 
     PB_DS_CLASS_T_DEC
@@ -216,7 +217,7 @@ namespace __gnu_pbds
     PB_DS_CLASS_T_DEC
     inline typename PB_DS_CLASS_C_DEC::comp_hash
     PB_DS_CLASS_C_DEC::
-    operator()(const_key_reference r_key) const
+    operator()(key_const_reference r_key) const
     {
       const size_type hash = hash_fn_base::operator()(r_key);
       return std::make_pair(comb_hash_fn_base::operator()(hash), hash);
@@ -227,9 +228,9 @@ namespace __gnu_pbds
     PB_DS_CLASS_C_DEC::
     operator()
 #ifdef _GLIBCXX_DEBUG
-      (const_key_reference r_key, size_type hash) const
+      (key_const_reference r_key, size_type hash) const
 #else 
-      (const_key_reference /*r_key*/, size_type hash) const
+      (key_const_reference /*r_key*/, size_type hash) const
 #endif
     {
       _GLIBCXX_DEBUG_ASSERT(hash == hash_fn_base::operator()(r_key));
@@ -240,30 +241,30 @@ namespace __gnu_pbds
 #undef PB_DS_CLASS_C_DEC
 
 #define PB_DS_CLASS_T_DEC \
-    template<typename Key, typename Allocator, typename Comb_Hash_Fn>
+    template<typename Key, typename _Alloc, typename Comb_Hash_Fn>
 
 #define PB_DS_CLASS_C_DEC \
-    ranged_hash_fn<Key,        null_hash_fn, Allocator, Comb_Hash_Fn, false>
+    ranged_hash_fn<Key,        null_type, _Alloc, Comb_Hash_Fn, false>
 
     /**
      * Specialization 3
      * The client does not supply a hash function (by specifying
-     * null_hash_fn as the Hash_Fn parameter), and requests that hash
+     * null_type as the Hash_Fn parameter), and requests that hash
      * values not be stored.
      **/
-    template<typename Key, typename Allocator, typename Comb_Hash_Fn>
-    class ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, false> 
-    : public null_hash_fn, public Comb_Hash_Fn
+    template<typename Key, typename _Alloc, typename Comb_Hash_Fn>
+    class ranged_hash_fn<Key, null_type, _Alloc, Comb_Hash_Fn, false> 
+    : public Comb_Hash_Fn
     {
     protected:
-      typedef typename Allocator::size_type size_type;
+      typedef typename _Alloc::size_type size_type;
       typedef Comb_Hash_Fn comb_hash_fn_base;
 
       ranged_hash_fn(size_type);
 
       ranged_hash_fn(size_type, const Comb_Hash_Fn&);
 
-      ranged_hash_fn(size_type, const null_hash_fn&, const Comb_Hash_Fn&);
+      ranged_hash_fn(size_type, const null_type&, const Comb_Hash_Fn&);
 
       void
       swap(PB_DS_CLASS_C_DEC&);
@@ -282,7 +283,7 @@ namespace __gnu_pbds
 
     PB_DS_CLASS_T_DEC
     PB_DS_CLASS_C_DEC::
-    ranged_hash_fn(size_type size, const null_hash_fn& r_null_hash_fn
+    ranged_hash_fn(size_type size, const null_type& r_null_type
                   const Comb_Hash_Fn& r_comb_hash_fn) 
     : Comb_Hash_Fn(r_comb_hash_fn)
     { }
@@ -297,30 +298,30 @@ namespace __gnu_pbds
 #undef PB_DS_CLASS_C_DEC
 
 #define PB_DS_CLASS_T_DEC \
-    template<typename Key, typename Allocator, typename Comb_Hash_Fn>
+    template<typename Key, typename _Alloc, typename Comb_Hash_Fn>
 
 #define PB_DS_CLASS_C_DEC \
-    ranged_hash_fn<Key,        null_hash_fn, Allocator, Comb_Hash_Fn, true>
+    ranged_hash_fn<Key,        null_type, _Alloc, Comb_Hash_Fn, true>
 
     /**
      * Specialization 4
      * The client does not supply a hash function (by specifying
-     * null_hash_fn as the Hash_Fn parameter), and requests that hash
+     * null_type as the Hash_Fn parameter), and requests that hash
      * values be stored.
      **/
-    template<typename Key, typename Allocator, typename Comb_Hash_Fn>
-    class ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, true> 
-    : public null_hash_fn, public Comb_Hash_Fn
+    template<typename Key, typename _Alloc, typename Comb_Hash_Fn>
+    class ranged_hash_fn<Key, null_type, _Alloc, Comb_Hash_Fn, true> 
+    : public Comb_Hash_Fn
     {
     protected:
-      typedef typename Allocator::size_type size_type;
+      typedef typename _Alloc::size_type size_type;
       typedef Comb_Hash_Fn comb_hash_fn_base;
 
       ranged_hash_fn(size_type);
 
       ranged_hash_fn(size_type, const Comb_Hash_Fn&);
 
-      ranged_hash_fn(size_type, const null_hash_fn&, const Comb_Hash_Fn&);
+      ranged_hash_fn(size_type, const null_type&, const Comb_Hash_Fn&);
 
       void
       swap(PB_DS_CLASS_C_DEC&);
@@ -339,7 +340,7 @@ namespace __gnu_pbds
 
     PB_DS_CLASS_T_DEC
     PB_DS_CLASS_C_DEC::
-    ranged_hash_fn(size_type size, const null_hash_fn& r_null_hash_fn
+    ranged_hash_fn(size_type size, const null_type& r_null_type
                   const Comb_Hash_Fn& r_comb_hash_fn) 
     : Comb_Hash_Fn(r_comb_hash_fn)
     { }