summaryrefslogtreecommitdiffstats
path: root/Source/kwsys/hash_map.hxx.in
diff options
context:
space:
mode:
Diffstat (limited to 'Source/kwsys/hash_map.hxx.in')
-rw-r--r--Source/kwsys/hash_map.hxx.in246
1 files changed, 147 insertions, 99 deletions
diff --git a/Source/kwsys/hash_map.hxx.in b/Source/kwsys/hash_map.hxx.in
index 60c7086..3f9174f 100644
--- a/Source/kwsys/hash_map.hxx.in
+++ b/Source/kwsys/hash_map.hxx.in
@@ -1,14 +1,5 @@
-/*============================================================================
- KWSys - Kitware System Library
- Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
- Distributed under the OSI-approved BSD License (the "License");
- see accompanying file Copyright.txt for details.
-
- This software is distributed WITHOUT ANY WARRANTY; without even the
- implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ file Copyright.txt or https://cmake.org/licensing#kwsys for details. */
/*
* Copyright (c) 1996
* Silicon Graphics Computer Systems, Inc.
@@ -38,36 +29,37 @@
#define @KWSYS_NAMESPACE@_hash_map_hxx
#include <@KWSYS_NAMESPACE@/hashtable.hxx>
+
#include <@KWSYS_NAMESPACE@/hash_fun.hxx>
+
#include <functional> // equal_to
#if defined(_MSC_VER)
-# pragma warning (push)
-# pragma warning (disable:4284)
-# pragma warning (disable:4786)
+#pragma warning(push)
+#pragma warning(disable : 4284)
+#pragma warning(disable : 4786)
#endif
#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-# pragma set woff 1174
-# pragma set woff 1375
+#pragma set woff 1174
+#pragma set woff 1375
#endif
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
// select1st is an extension: it is not part of the standard.
template <class T1, class T2>
-struct hash_select1st:
- public std::unary_function<std::pair<T1, T2>, T1>
+struct hash_select1st : public std::unary_function<std::pair<T1, T2>, T1>
{
const T1& operator()(const std::pair<T1, T2>& __x) const
- { return __x.first; }
+ {
+ return __x.first;
+ }
};
// Forward declaration of equality operator; needed for friend declaration.
-template <class _Key, class _Tp,
- class _HashFcn = hash<_Key>,
+template <class _Key, class _Tp, class _HashFcn = hash<_Key>,
class _EqualKey = std::equal_to<_Key>,
class _Alloc = std::allocator<char> >
class hash_map;
@@ -76,13 +68,13 @@ template <class _Key, class _Tp, class _HashFn, class _EqKey, class _Alloc>
bool operator==(const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&,
const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&);
-template <class _Key, class _Tp, class _HashFcn, class _EqualKey,
- class _Alloc>
+template <class _Key, class _Tp, class _HashFcn, class _EqualKey, class _Alloc>
class hash_map
{
private:
- typedef hashtable<std::pair<const _Key,_Tp>,_Key,_HashFcn,
- hash_select1st<const _Key,_Tp>,_EqualKey,_Alloc> _Ht;
+ typedef hashtable<std::pair<const _Key, _Tp>, _Key, _HashFcn,
+ hash_select1st<const _Key, _Tp>, _EqualKey, _Alloc>
+ _Ht;
_Ht _M_ht;
public:
@@ -110,34 +102,51 @@ public:
allocator_type get_allocator() const { return _M_ht.get_allocator(); }
public:
- hash_map() : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
+ hash_map()
+ : _M_ht(100, hasher(), key_equal(), allocator_type())
+ {
+ }
explicit hash_map(size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
+ : _M_ht(__n, hasher(), key_equal(), allocator_type())
+ {
+ }
hash_map(size_type __n, const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
+ : _M_ht(__n, __hf, key_equal(), allocator_type())
+ {
+ }
hash_map(size_type __n, const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a) {}
+ : _M_ht(__n, __hf, __eql, __a)
+ {
+ }
template <class _InputIterator>
hash_map(_InputIterator __f, _InputIterator __l)
: _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
+ {
+ _M_ht.insert_unique(__f, __l);
+ }
template <class _InputIterator>
hash_map(_InputIterator __f, _InputIterator __l, size_type __n)
: _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
+ {
+ _M_ht.insert_unique(__f, __l);
+ }
template <class _InputIterator>
hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
const hasher& __hf)
: _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
+ {
+ _M_ht.insert_unique(__f, __l);
+ }
template <class _InputIterator>
hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
: _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_unique(__f, __l); }
+ {
+ _M_ht.insert_unique(__f, __l);
+ }
public:
size_type size() const { return _M_ht.size(); }
@@ -145,8 +154,7 @@ public:
bool empty() const { return _M_ht.empty(); }
void swap(hash_map& __hs) { _M_ht.swap(__hs._M_ht); }
- friend bool operator==<>(const hash_map&,
- const hash_map&);
+ friend bool operator==<>(const hash_map&, const hash_map&);
iterator begin() { return _M_ht.begin(); }
iterator end() { return _M_ht.end(); }
@@ -154,31 +162,44 @@ public:
const_iterator end() const { return _M_ht.end(); }
public:
- std::pair<iterator,bool> insert(const value_type& __obj)
- { return _M_ht.insert_unique(__obj); }
+ std::pair<iterator, bool> insert(const value_type& __obj)
+ {
+ return _M_ht.insert_unique(__obj);
+ }
template <class _InputIterator>
void insert(_InputIterator __f, _InputIterator __l)
- { _M_ht.insert_unique(__f,__l); }
- std::pair<iterator,bool> insert_noresize(const value_type& __obj)
- { return _M_ht.insert_unique_noresize(__obj); }
+ {
+ _M_ht.insert_unique(__f, __l);
+ }
+ std::pair<iterator, bool> insert_noresize(const value_type& __obj)
+ {
+ return _M_ht.insert_unique_noresize(__obj);
+ }
iterator find(const key_type& __key) { return _M_ht.find(__key); }
const_iterator find(const key_type& __key) const
- { return _M_ht.find(__key); }
+ {
+ return _M_ht.find(__key);
+ }
- _Tp& operator[](const key_type& __key) {
+ _Tp& operator[](const key_type& __key)
+ {
return _M_ht.find_or_insert(value_type(__key, _Tp())).second;
}
size_type count(const key_type& __key) const { return _M_ht.count(__key); }
std::pair<iterator, iterator> equal_range(const key_type& __key)
- { return _M_ht.equal_range(__key); }
- std::pair<const_iterator, const_iterator>
- equal_range(const key_type& __key) const
- { return _M_ht.equal_range(__key); }
+ {
+ return _M_ht.equal_range(__key);
+ }
+ std::pair<const_iterator, const_iterator> equal_range(
+ const key_type& __key) const
+ {
+ return _M_ht.equal_range(__key);
+ }
- size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
+ size_type erase(const key_type& __key) { return _M_ht.erase(__key); }
void erase(iterator __it) { _M_ht.erase(__it); }
void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
void clear() { _M_ht.clear(); }
@@ -187,53 +208,51 @@ public:
size_type bucket_count() const { return _M_ht.bucket_count(); }
size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
size_type elems_in_bucket(size_type __n) const
- { return _M_ht.elems_in_bucket(__n); }
+ {
+ return _M_ht.elems_in_bucket(__n);
+ }
};
template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
-bool
-operator==(const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
- const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
+bool operator==(const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1,
+ const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2)
{
return __hm1._M_ht == __hm2._M_ht;
}
template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
-inline bool
-operator!=(const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
- const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2) {
+inline bool operator!=(
+ const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1,
+ const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2)
+{
return !(__hm1 == __hm2);
}
template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
-inline void
-swap(hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
- hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
+inline void swap(hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1,
+ hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2)
{
__hm1.swap(__hm2);
}
// Forward declaration of equality operator; needed for friend declaration.
-template <class _Key, class _Tp,
- class _HashFcn = hash<_Key>,
+template <class _Key, class _Tp, class _HashFcn = hash<_Key>,
class _EqualKey = std::equal_to<_Key>,
class _Alloc = std::allocator<char> >
class hash_multimap;
template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
-bool
-operator==(const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm1,
- const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm2);
+bool operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1,
+ const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2);
-template <class _Key, class _Tp, class _HashFcn, class _EqualKey,
- class _Alloc>
+template <class _Key, class _Tp, class _HashFcn, class _EqualKey, class _Alloc>
class hash_multimap
{
private:
typedef hashtable<std::pair<const _Key, _Tp>, _Key, _HashFcn,
hash_select1st<const _Key, _Tp>, _EqualKey, _Alloc>
- _Ht;
+ _Ht;
_Ht _M_ht;
public:
@@ -261,34 +280,51 @@ public:
allocator_type get_allocator() const { return _M_ht.get_allocator(); }
public:
- hash_multimap() : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
+ hash_multimap()
+ : _M_ht(100, hasher(), key_equal(), allocator_type())
+ {
+ }
explicit hash_multimap(size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
+ : _M_ht(__n, hasher(), key_equal(), allocator_type())
+ {
+ }
hash_multimap(size_type __n, const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
+ : _M_ht(__n, __hf, key_equal(), allocator_type())
+ {
+ }
hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a) {}
+ : _M_ht(__n, __hf, __eql, __a)
+ {
+ }
template <class _InputIterator>
hash_multimap(_InputIterator __f, _InputIterator __l)
: _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
+ {
+ _M_ht.insert_equal(__f, __l);
+ }
template <class _InputIterator>
hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n)
: _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
+ {
+ _M_ht.insert_equal(__f, __l);
+ }
template <class _InputIterator>
hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
const hasher& __hf)
: _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
+ {
+ _M_ht.insert_equal(__f, __l);
+ }
template <class _InputIterator>
hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
: _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_equal(__f, __l); }
+ {
+ _M_ht.insert_equal(__f, __l);
+ }
public:
size_type size() const { return _M_ht.size(); }
@@ -296,8 +332,7 @@ public:
bool empty() const { return _M_ht.empty(); }
void swap(hash_multimap& __hs) { _M_ht.swap(__hs._M_ht); }
- friend bool operator==<>(const hash_multimap&,
- const hash_multimap&);
+ friend bool operator==<>(const hash_multimap&, const hash_multimap&);
iterator begin() { return _M_ht.begin(); }
iterator end() { return _M_ht.end(); }
@@ -306,26 +341,38 @@ public:
public:
iterator insert(const value_type& __obj)
- { return _M_ht.insert_equal(__obj); }
+ {
+ return _M_ht.insert_equal(__obj);
+ }
template <class _InputIterator>
void insert(_InputIterator __f, _InputIterator __l)
- { _M_ht.insert_equal(__f,__l); }
+ {
+ _M_ht.insert_equal(__f, __l);
+ }
iterator insert_noresize(const value_type& __obj)
- { return _M_ht.insert_equal_noresize(__obj); }
+ {
+ return _M_ht.insert_equal_noresize(__obj);
+ }
iterator find(const key_type& __key) { return _M_ht.find(__key); }
const_iterator find(const key_type& __key) const
- { return _M_ht.find(__key); }
+ {
+ return _M_ht.find(__key);
+ }
size_type count(const key_type& __key) const { return _M_ht.count(__key); }
std::pair<iterator, iterator> equal_range(const key_type& __key)
- { return _M_ht.equal_range(__key); }
- std::pair<const_iterator, const_iterator>
- equal_range(const key_type& __key) const
- { return _M_ht.equal_range(__key); }
+ {
+ return _M_ht.equal_range(__key);
+ }
+ std::pair<const_iterator, const_iterator> equal_range(
+ const key_type& __key) const
+ {
+ return _M_ht.equal_range(__key);
+ }
- size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
+ size_type erase(const key_type& __key) { return _M_ht.erase(__key); }
void erase(iterator __it) { _M_ht.erase(__it); }
void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
void clear() { _M_ht.clear(); }
@@ -335,28 +382,29 @@ public:
size_type bucket_count() const { return _M_ht.bucket_count(); }
size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
size_type elems_in_bucket(size_type __n) const
- { return _M_ht.elems_in_bucket(__n); }
+ {
+ return _M_ht.elems_in_bucket(__n);
+ }
};
template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
-bool
-operator==(const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm1,
- const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm2)
+bool operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1,
+ const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2)
{
return __hm1._M_ht == __hm2._M_ht;
}
template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
-inline bool
-operator!=(const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm1,
- const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm2) {
+inline bool operator!=(
+ const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1,
+ const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2)
+{
return !(__hm1 == __hm2);
}
template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
-inline void
-swap(hash_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
- hash_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
+inline void swap(hash_multimap<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1,
+ hash_multimap<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2)
{
__hm1.swap(__hm2);
}
@@ -364,12 +412,12 @@ swap(hash_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
} // namespace @KWSYS_NAMESPACE@
#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-# pragma reset woff 1174
-# pragma reset woff 1375
+#pragma reset woff 1174
+#pragma reset woff 1375
#endif
#if defined(_MSC_VER)
-# pragma warning (pop)
+#pragma warning(pop)
#endif
#endif