_hash_set.h revision e46c9386c4f79aa40185f79a19fc5b2a7ef528b3
15faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org/* 25faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * 35faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * Copyright (c) 1994 45faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * Hewlett-Packard Company 55faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * 65faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * Copyright (c) 1996,1997 75faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * Silicon Graphics Computer Systems, Inc. 85faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * 95faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * Copyright (c) 1997 105faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * Moscow Center for SPARC Technology 118b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org * 128b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org * Copyright (c) 1999 135faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * Boris Fomitchev 148640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org * 155faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * This material is provided "as is", with absolutely no warranty expressed 163bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org * or implied. Any use is at your own risk. 17ac9779234ef7a8cf3d791ab7690ef8c388662836joshualitt * 183bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org * Permission to use or copy this software for any purpose is hereby granted 193bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org * without fee, provided the above notices are retained on all copies. 207938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org * Permission to modify the code and to distribute modified code is granted, 217938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org * provided the above notices are retained, and a notice that the code was 227938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org * modified is included with the above copyright notice. 237938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org * 247938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org */ 25cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org 267938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org/* NOTE: This is an internal header file, included by other STL headers. 277938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org * You should not attempt to use it directly. 287938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org */ 295e5f948b6b363dbfc8c076d8ff0c6b8e9ea99958senorblanco 305e5f948b6b363dbfc8c076d8ff0c6b8e9ea99958senorblanco#ifndef _STLP_INTERNAL_HASH_SET_H 315e5f948b6b363dbfc8c076d8ff0c6b8e9ea99958senorblanco#define _STLP_INTERNAL_HASH_SET_H 325faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 335faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#ifndef _STLP_INTERNAL_HASHTABLE_H 345faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org# include <stl/_hashtable.h> 35cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org#endif 368640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org 378640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org_STLP_BEGIN_NAMESPACE 385faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 395faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org//Specific iterator traits creation 405faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org_STLP_CREATE_HASH_ITERATOR_TRAITS(HashSetTraitsT, Const_traits) 413bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org 42cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.orgtemplate <class _Value, _STLP_DFL_TMPL_PARAM(_HashFcn,hash<_Value>), 43cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org _STLP_DFL_TMPL_PARAM(_EqualKey, equal_to<_Value>), 445faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Value>) > 455faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.orgclass hash_set 469fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) 479fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed : public __stlport_class<hash_set<_Value, _HashFcn, _EqualKey, _Alloc> > 489fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#endif 499fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed{ 509fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed typedef hash_set<_Value, _HashFcn, _EqualKey, _Alloc> _Self; 519fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed //Specific iterator traits creation 529fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed typedef _STLP_PRIV _HashSetTraitsT<_Value> _HashSetTraits; 539fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reedpublic: 549fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed typedef hashtable<_Value, _Value, _HashFcn, 559fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed _HashSetTraits, _STLP_PRIV _Identity<_Value>, _EqualKey, _Alloc> _Ht; 569fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reedpublic: 579fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed typedef typename _Ht::key_type key_type; 589fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed typedef typename _Ht::value_type value_type; 598b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org typedef typename _Ht::hasher hasher; 60ce33d60187718e7bb01944ee130c9f5d9fb335eccommit-bot@chromium.org typedef typename _Ht::key_equal key_equal; 61025128811219dc45fd99b6c4d1d14f833cf7a26ecommit-bot@chromium.org 62025128811219dc45fd99b6c4d1d14f833cf7a26ecommit-bot@chromium.org typedef typename _Ht::size_type size_type; 63025128811219dc45fd99b6c4d1d14f833cf7a26ecommit-bot@chromium.org typedef typename _Ht::difference_type difference_type; 645faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org typedef typename _Ht::pointer pointer; 655faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org typedef typename _Ht::const_pointer const_pointer; 66d594dbec0407343b7ac13af9c4580ec5933ab060commit-bot@chromium.org typedef typename _Ht::reference reference; 67d594dbec0407343b7ac13af9c4580ec5933ab060commit-bot@chromium.org typedef typename _Ht::const_reference const_reference; 68d594dbec0407343b7ac13af9c4580ec5933ab060commit-bot@chromium.org 69d594dbec0407343b7ac13af9c4580ec5933ab060commit-bot@chromium.org typedef typename _Ht::iterator iterator; 70025128811219dc45fd99b6c4d1d14f833cf7a26ecommit-bot@chromium.org typedef typename _Ht::const_iterator const_iterator; 71025128811219dc45fd99b6c4d1d14f833cf7a26ecommit-bot@chromium.org 72d594dbec0407343b7ac13af9c4580ec5933ab060commit-bot@chromium.org typedef typename _Ht::allocator_type allocator_type; 73025128811219dc45fd99b6c4d1d14f833cf7a26ecommit-bot@chromium.org 74025128811219dc45fd99b6c4d1d14f833cf7a26ecommit-bot@chromium.org hasher hash_funct() const { return _M_ht.hash_funct(); } 75d594dbec0407343b7ac13af9c4580ec5933ab060commit-bot@chromium.org key_equal key_eq() const { return _M_ht.key_eq(); } 76d594dbec0407343b7ac13af9c4580ec5933ab060commit-bot@chromium.org allocator_type get_allocator() const { return _M_ht.get_allocator(); } 77d594dbec0407343b7ac13af9c4580ec5933ab060commit-bot@chromium.org 785faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.orgprivate: 795faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org _Ht _M_ht; 80cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) 81cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org 825faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.orgpublic: 838640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org hash_set() 84d594dbec0407343b7ac13af9c4580ec5933ab060commit-bot@chromium.org : _M_ht(0, hasher(), key_equal(), allocator_type()) {} 85d594dbec0407343b7ac13af9c4580ec5933ab060commit-bot@chromium.org explicit hash_set(size_type __n) 86c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} 8756d135c03e1d38f0b9e17d79a3cbf8db2a915086sugoi hash_set(size_type __n, const hasher& __hf) 8856d135c03e1d38f0b9e17d79a3cbf8db2a915086sugoi : _M_ht(__n, __hf, key_equal(), allocator_type()) {} 8956d135c03e1d38f0b9e17d79a3cbf8db2a915086sugoi#if !defined (_STLP_DONT_SUP_DFLT_PARAM) 905faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, 919fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed const allocator_type& __a = allocator_type()) 929fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#else 939fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed hash_set(size_type __n, const hasher& __hf, const key_equal& __eql) 949fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed : _M_ht(__n, __hf, __eql, allocator_type()) {} 959fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, 969fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed const allocator_type& __a) 979fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#endif 989fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed : _M_ht(__n, __hf, __eql, __a) {} 999fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed 1009fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#if !defined (_STLP_NO_MOVE_SEMANTIC) 1019fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed hash_set(__move_source<_Self> src) 1029fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {} 1039fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#endif 1049fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed 1059fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#if defined (_STLP_MEMBER_TEMPLATES) 1069fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed template <class _InputIterator> 1079fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed hash_set(_InputIterator __f, _InputIterator __l) 1089fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed : _M_ht(0, hasher(), key_equal(), allocator_type()) 1099fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed { _M_ht.insert_unique(__f, __l); } 1109fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed template <class _InputIterator> 1119fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed hash_set(_InputIterator __f, _InputIterator __l, size_type __n) 1129fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed : _M_ht(__n, hasher(), key_equal(), allocator_type()) 1139fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed { _M_ht.insert_unique(__f, __l); } 1149fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed template <class _InputIterator> 1159fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed hash_set(_InputIterator __f, _InputIterator __l, size_type __n, 1165e5f948b6b363dbfc8c076d8ff0c6b8e9ea99958senorblanco const hasher& __hf) 1179fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed : _M_ht(__n, __hf, key_equal(), allocator_type()) 1185faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org { _M_ht.insert_unique(__f, __l); } 1198b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org template <class _InputIterator> 1205faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_set(_InputIterator __f, _InputIterator __l, size_type __n, 1215faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org const hasher& __hf, const key_equal& __eql, 1225faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) 1235faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org : _M_ht(__n, __hf, __eql, __a) 1245faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org { _M_ht.insert_unique(__f, __l); } 1255faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) 126cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org template <class _InputIterator> 127cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org hash_set(_InputIterator __f, _InputIterator __l, size_type __n, 1285faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org const hasher& __hf, const key_equal& __eql) 1298640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org : _M_ht(__n, __hf, __eql, allocator_type()) 1305faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org { _M_ht.insert_unique(__f, __l); } 1315faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org# endif 1325faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#else 1335faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_set(const value_type* __f, const value_type* __l) 1345faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org : _M_ht(0, hasher(), key_equal(), allocator_type()) 1355faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org { _M_ht.insert_unique(__f, __l); } 1365faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_set(const value_type* __f, const value_type* __l, size_type __n) 1375faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org : _M_ht(__n, hasher(), key_equal(), allocator_type()) 1387938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org { _M_ht.insert_unique(__f, __l); } 1395faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_set(const value_type* __f, const value_type* __l, size_type __n, 1405faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org const hasher& __hf) 1415faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org : _M_ht(__n, __hf, key_equal(), allocator_type()) 1425faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org { _M_ht.insert_unique(__f, __l); } 1435faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_set(const value_type* __f, const value_type* __l, size_type __n, 1445faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org const hasher& __hf, const key_equal& __eql, 1457938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org const allocator_type& __a = allocator_type()) 1467938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org : _M_ht(__n, __hf, __eql, __a) 1477938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org { _M_ht.insert_unique(__f, __l); } 1485faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 1495faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_set(const_iterator __f, const_iterator __l) 1505faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org : _M_ht(0, hasher(), key_equal(), allocator_type()) 1515faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org { _M_ht.insert_unique(__f, __l); } 1525faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_set(const_iterator __f, const_iterator __l, size_type __n) 1535faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org : _M_ht(__n, hasher(), key_equal(), allocator_type()) 1547938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org { _M_ht.insert_unique(__f, __l); } 1557938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org hash_set(const_iterator __f, const_iterator __l, size_type __n, 1567938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org const hasher& __hf) 1577938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org : _M_ht(__n, __hf, key_equal(), allocator_type()) 1587938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org { _M_ht.insert_unique(__f, __l); } 1595faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_set(const_iterator __f, const_iterator __l, size_type __n, 1607938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org const hasher& __hf, const key_equal& __eql, 1617938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org const allocator_type& __a = allocator_type()) 1625faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org : _M_ht(__n, __hf, __eql, __a) 1635faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org { _M_ht.insert_unique(__f, __l); } 1645faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#endif /*_STLP_MEMBER_TEMPLATES */ 1655faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 1665faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.orgpublic: 1675faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org size_type size() const { return _M_ht.size(); } 1685faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org size_type max_size() const { return _M_ht.max_size(); } 1697938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org bool empty() const { return _M_ht.empty(); } 1707938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); } 1715faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 1725faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org void _M_swap_workaround(_Self& __x) { swap(__x); } 1735faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#endif 1745faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 1755faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org iterator begin() { return _M_ht.begin(); } 1765faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org iterator end() { return _M_ht.end(); } 1775faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org const_iterator begin() const { return _M_ht.begin(); } 1788640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org const_iterator end() const { return _M_ht.end(); } 1797938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org 1807938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.orgpublic: 1818c7372bbe8949f2864bd3d9df00d85c5669a74b1senorblanco@chromium.org pair<iterator, bool> insert(const value_type& __obj) 182ae761f7545d8ebf181d220169afac2056b057b8ccommit-bot@chromium.org { return _M_ht.insert_unique(__obj); } 1838c7372bbe8949f2864bd3d9df00d85c5669a74b1senorblanco@chromium.org#if defined (_STLP_MEMBER_TEMPLATES) 1848c7372bbe8949f2864bd3d9df00d85c5669a74b1senorblanco@chromium.org template <class _InputIterator> 1859195743aac79a4fa82059ab614b9795f215475f7senorblanco@chromium.org void insert(_InputIterator __f, _InputIterator __l) 1869195743aac79a4fa82059ab614b9795f215475f7senorblanco@chromium.org#else 1875faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org void insert(const_iterator __f, const_iterator __l) 1887938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org {_M_ht.insert_unique(__f, __l); } 1895faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org void insert(const value_type* __f, const value_type* __l) 1905faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#endif 1915faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org { _M_ht.insert_unique(__f,__l); } 1925faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 1937938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org pair<iterator, bool> insert_noresize(const value_type& __obj) 194cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org { return _M_ht.insert_unique_noresize(__obj); } 195cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org 1967938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org _STLP_TEMPLATE_FOR_CONT_EXT 1975faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org iterator find(const _KT& __key) { return _M_ht.find(__key); } 1988640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org _STLP_TEMPLATE_FOR_CONT_EXT 1998640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org const_iterator find(const _KT& __key) const { return _M_ht.find(__key); } 2008640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org 2015faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org _STLP_TEMPLATE_FOR_CONT_EXT 2025faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org size_type count(const _KT& __key) const { return _M_ht.count(__key); } 2035faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 2045faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org _STLP_TEMPLATE_FOR_CONT_EXT 2055faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org pair<iterator, iterator> equal_range(const _KT& __key) 2068640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org { return _M_ht.equal_range(__key); } 2078640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org _STLP_TEMPLATE_FOR_CONT_EXT 2083bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org pair<const_iterator, const_iterator> equal_range(const _KT& __key) const 209cc9471c36d3967270f7eb26f8b53ce0f17bc9fbbsenorblanco@chromium.org { return _M_ht.equal_range(__key); } 210cc9471c36d3967270f7eb26f8b53ce0f17bc9fbbsenorblanco@chromium.org 211cc9471c36d3967270f7eb26f8b53ce0f17bc9fbbsenorblanco@chromium.org _STLP_TEMPLATE_FOR_CONT_EXT 2128640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org size_type erase(const _KT& __key) {return _M_ht.erase(__key); } 2137938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org void erase(iterator __it) { _M_ht.erase(__it); } 2148640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); } 2158640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org void clear() { _M_ht.clear(); } 2168640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org 2178640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.orgpublic: 2185faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org void resize(size_type __hint) { _M_ht.resize(__hint); } 2195faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org size_type bucket_count() const { return _M_ht.bucket_count(); } 2205faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org size_type max_bucket_count() const { return _M_ht.max_bucket_count(); } 2215faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org size_type elems_in_bucket(size_type __n) const 2228640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org { return _M_ht.elems_in_bucket(__n); } 2237938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org}; 2247938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org 2257938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org//Specific iterator traits creation 226ae761f7545d8ebf181d220169afac2056b057b8ccommit-bot@chromium.org_STLP_CREATE_HASH_ITERATOR_TRAITS(HashMultisetTraitsT, Const_traits) 2278640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org 2287938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.orgtemplate <class _Value, _STLP_DFL_TMPL_PARAM(_HashFcn,hash<_Value>), 2298640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org _STLP_DFL_TMPL_PARAM(_EqualKey, equal_to<_Value>), 2307938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Value>) > 2318640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.orgclass hash_multiset 2328640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) 2338640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org : public __stlport_class<hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> > 2347938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org#endif 2357938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org{ 2367938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org typedef hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> _Self; 237ae761f7545d8ebf181d220169afac2056b057b8ccommit-bot@chromium.org //Specific iterator traits creation 2387938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org typedef _STLP_PRIV _HashMultisetTraitsT<_Value> _HashMultisetTraits; 2395faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.orgpublic: 2405faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org typedef hashtable<_Value, _Value, _HashFcn, 2417938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org _HashMultisetTraits, _STLP_PRIV _Identity<_Value>, _EqualKey, _Alloc> _Ht; 2427938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org 2437938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org typedef typename _Ht::key_type key_type; 244ae761f7545d8ebf181d220169afac2056b057b8ccommit-bot@chromium.org typedef typename _Ht::value_type value_type; 2455faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org typedef typename _Ht::hasher hasher; 2465faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org typedef typename _Ht::key_equal key_equal; 2477938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org 2485faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org typedef typename _Ht::size_type size_type; 2495faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org typedef typename _Ht::difference_type difference_type; 2507938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org typedef typename _Ht::pointer pointer; 2515faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org typedef typename _Ht::const_pointer const_pointer; 2525faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org typedef typename _Ht::reference reference; 2537938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org typedef typename _Ht::const_reference const_reference; 2545faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 2555faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org typedef typename _Ht::iterator iterator; 2565faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org typedef typename _Ht::const_iterator const_iterator; 2575faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 258377c14a1e648f4427bd11474fad8ac264d98aff2senorblanco@chromium.org typedef typename _Ht::allocator_type allocator_type; 2598640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org 2608640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org hasher hash_funct() const { return _M_ht.hash_funct(); } 2618640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org key_equal key_eq() const { return _M_ht.key_eq(); } 2628640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org allocator_type get_allocator() const { return _M_ht.get_allocator(); } 2638640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org 2648640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.orgprivate: 2658640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org _Ht _M_ht; 2668640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) 2678640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org 268848250415eddc54075f7eb8795e8db79e749c6abreedpublic: 2698640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org hash_multiset() 2708640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org : _M_ht(0, hasher(), key_equal(), allocator_type()) {} 2718640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org explicit hash_multiset(size_type __n) 2728640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} 2738640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org hash_multiset(size_type __n, const hasher& __hf) 2748640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org : _M_ht(__n, __hf, key_equal(), allocator_type()) {} 2758640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql) 2768640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org : _M_ht(__n, __hf, __eql, allocator_type()) {} 2778640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql, 2788640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org const allocator_type& __a) 2798640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org : _M_ht(__n, __hf, __eql, __a) {} 2808640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org 2815faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#if !defined (_STLP_NO_MOVE_SEMANTIC) 2825faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_multiset(__move_source<_Self> src) 2834cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {} 2845faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#endif 285ae761f7545d8ebf181d220169afac2056b057b8ccommit-bot@chromium.org 28668400767be5f72e4b9750ccc8bcf0078d42869a7senorblanco@chromium.org#if defined (_STLP_MEMBER_TEMPLATES) 2876776b82d466fa93ccffd251fdf556fe058395444senorblanco@chromium.org template <class _InputIterator> 2884cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org hash_multiset(_InputIterator __f, _InputIterator __l) 28968400767be5f72e4b9750ccc8bcf0078d42869a7senorblanco@chromium.org : _M_ht(0, hasher(), key_equal(), allocator_type()) 29068400767be5f72e4b9750ccc8bcf0078d42869a7senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 29168400767be5f72e4b9750ccc8bcf0078d42869a7senorblanco@chromium.org template <class _InputIterator> 29228fcae2ec77eb16a79e155f8d788b20457f1c951commit-bot@chromium.org hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n) 2935faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org : _M_ht(__n, hasher(), key_equal(), allocator_type()) 2945faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 2955faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org template <class _InputIterator> 2967938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, 297118252962f89a80db661a0544f1bd61cbaab6321senorblanco@chromium.org const hasher& __hf) 2987938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org : _M_ht(__n, __hf, key_equal(), allocator_type()) 2997938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 3007938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org 3018640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org template <class _InputIterator> 3028640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, 3038640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org const hasher& __hf, const key_equal& __eql, 3048640d5024d57da5508bdf7585849e3b1f1cb365bsenorblanco@chromium.org const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) 3055faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org : _M_ht(__n, __hf, __eql, __a) 3065faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 3075faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) 3085faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org template <class _InputIterator> 3095faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, 310848250415eddc54075f7eb8795e8db79e749c6abreed const hasher& __hf, const key_equal& __eql) 311cd3b15ca6364a04b0eeeb4f89c7daa8aefe854c8commit-bot@chromium.org : _M_ht(__n, __hf, __eql, allocator_type()) 312cd3b15ca6364a04b0eeeb4f89c7daa8aefe854c8commit-bot@chromium.org { _M_ht.insert_equal(__f, __l); } 3135faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org# endif 3146776b82d466fa93ccffd251fdf556fe058395444senorblanco@chromium.org#else 3156776b82d466fa93ccffd251fdf556fe058395444senorblanco@chromium.org hash_multiset(const value_type* __f, const value_type* __l) 3166776b82d466fa93ccffd251fdf556fe058395444senorblanco@chromium.org : _M_ht(0, hasher(), key_equal(), allocator_type()) 317cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org { _M_ht.insert_equal(__f, __l); } 318cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org hash_multiset(const value_type* __f, const value_type* __l, size_type __n) 3197938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org : _M_ht(__n, hasher(), key_equal(), allocator_type()) 3207938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 3217938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org hash_multiset(const value_type* __f, const value_type* __l, size_type __n, 3227938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org const hasher& __hf) 3237938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org : _M_ht(__n, __hf, key_equal(), allocator_type()) 3247938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 3257938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org hash_multiset(const value_type* __f, const value_type* __l, size_type __n, 3265faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org const hasher& __hf, const key_equal& __eql, 3277938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org const allocator_type& __a = allocator_type()) 3287938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org : _M_ht(__n, __hf, __eql, __a) 3297938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 3307938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org 3317938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org hash_multiset(const_iterator __f, const_iterator __l) 3327938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org : _M_ht(0, hasher(), key_equal(), allocator_type()) 3335faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 3345faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org hash_multiset(const_iterator __f, const_iterator __l, size_type __n) 3353bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org : _M_ht(__n, hasher(), key_equal(), allocator_type()) 3360a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 3370a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org hash_multiset(const_iterator __f, const_iterator __l, size_type __n, 3380a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org const hasher& __hf) 3390a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org : _M_ht(__n, __hf, key_equal(), allocator_type()) 3400a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 3410a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org hash_multiset(const_iterator __f, const_iterator __l, size_type __n, 3420a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org const hasher& __hf, const key_equal& __eql, 3430a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org const allocator_type& __a = allocator_type()) 3440a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org : _M_ht(__n, __hf, __eql, __a) 3450a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 3460a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org#endif /*_STLP_MEMBER_TEMPLATES */ 3470a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.org 3480a5c233e3b911232c0d6f9a88ded99ecf88b8a97senorblanco@chromium.orgpublic: 3493bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org size_type size() const { return _M_ht.size(); } 3503bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org size_type max_size() const { return _M_ht.max_size(); } 3515ae5fc59b27a48711e514b3ede548b228e393e9bjoshualitt bool empty() const { return _M_ht.empty(); } 352ac9779234ef7a8cf3d791ab7690ef8c388662836joshualitt void swap(_Self& hs) { _M_ht.swap(hs._M_ht); } 3535ae5fc59b27a48711e514b3ede548b228e393e9bjoshualitt#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 3545ae5fc59b27a48711e514b3ede548b228e393e9bjoshualitt void _M_swap_workaround(_Self& __x) { swap(__x); } 3555ae5fc59b27a48711e514b3ede548b228e393e9bjoshualitt#endif 3565ae5fc59b27a48711e514b3ede548b228e393e9bjoshualitt 3575ae5fc59b27a48711e514b3ede548b228e393e9bjoshualitt iterator begin() { return _M_ht.begin(); } 3585ae5fc59b27a48711e514b3ede548b228e393e9bjoshualitt iterator end() { return _M_ht.end(); } 3595ae5fc59b27a48711e514b3ede548b228e393e9bjoshualitt const_iterator begin() const { return _M_ht.begin(); } 3605ae5fc59b27a48711e514b3ede548b228e393e9bjoshualitt const_iterator end() const { return _M_ht.end(); } 3615ae5fc59b27a48711e514b3ede548b228e393e9bjoshualitt 3625ae5fc59b27a48711e514b3ede548b228e393e9bjoshualittpublic: 3635ae5fc59b27a48711e514b3ede548b228e393e9bjoshualitt iterator insert(const value_type& __obj) { return _M_ht.insert_equal(__obj); } 3643bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org#if defined (_STLP_MEMBER_TEMPLATES) 3653bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org template <class _InputIterator> 366b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt void insert(_InputIterator __f, _InputIterator __l) 367b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt { _M_ht.insert_equal(__f,__l); } 368b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt#else 369b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt void insert(const value_type* __f, const value_type* __l) 370b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt { _M_ht.insert_equal(__f,__l); } 371d043ccee3788ea4192806bd8c94484ed003fa828senorblanco@chromium.org void insert(const_iterator __f, const_iterator __l) 3723bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org { _M_ht.insert_equal(__f, __l); } 373d043ccee3788ea4192806bd8c94484ed003fa828senorblanco@chromium.org#endif /*_STLP_MEMBER_TEMPLATES */ 374b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt iterator insert_noresize(const value_type& __obj) 375b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt { return _M_ht.insert_equal_noresize(__obj); } 376b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt 377b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt _STLP_TEMPLATE_FOR_CONT_EXT 378b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt iterator find(const _KT& __key) { return _M_ht.find(__key); } 379b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt 380b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt _STLP_TEMPLATE_FOR_CONT_EXT 381b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt const_iterator find(const _KT& __key) const { return _M_ht.find(__key); } 382b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt 383d043ccee3788ea4192806bd8c94484ed003fa828senorblanco@chromium.org _STLP_TEMPLATE_FOR_CONT_EXT 3843bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org size_type count(const _KT& __key) const { return _M_ht.count(__key); } 3853bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org 386 _STLP_TEMPLATE_FOR_CONT_EXT 387 pair<iterator, iterator> equal_range(const _KT& __key) 388 { return _M_ht.equal_range(__key); } 389 _STLP_TEMPLATE_FOR_CONT_EXT 390 pair<const_iterator, const_iterator> equal_range(const _KT& __key) const 391 { return _M_ht.equal_range(__key); } 392 393 _STLP_TEMPLATE_FOR_CONT_EXT 394 size_type erase(const _KT& __key) {return _M_ht.erase(__key); } 395 void erase(iterator __it) { _M_ht.erase(__it); } 396 void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); } 397 void clear() { _M_ht.clear(); } 398 399public: 400 void resize(size_type __hint) { _M_ht.resize(__hint); } 401 size_type bucket_count() const { return _M_ht.bucket_count(); } 402 size_type max_bucket_count() const { return _M_ht.max_bucket_count(); } 403 size_type elems_in_bucket(size_type __n) const 404 { return _M_ht.elems_in_bucket(__n); } 405}; 406 407#define _STLP_TEMPLATE_HEADER template <class _Value, class _HashFcn, class _EqualKey, class _Alloc> 408#define _STLP_TEMPLATE_CONTAINER hash_set<_Value,_HashFcn,_EqualKey,_Alloc> 409 410#include <stl/_relops_hash_cont.h> 411 412#undef _STLP_TEMPLATE_CONTAINER 413#define _STLP_TEMPLATE_CONTAINER hash_multiset<_Value,_HashFcn,_EqualKey,_Alloc> 414#include <stl/_relops_hash_cont.h> 415 416#undef _STLP_TEMPLATE_CONTAINER 417#undef _STLP_TEMPLATE_HEADER 418 419// Specialization of insert_iterator so that it will work for hash_set 420// and hash_multiset. 421 422#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 423# if !defined (_STLP_NO_MOVE_SEMANTIC) 424template <class _Value, class _HashFcn, class _EqualKey, class _Alloc> 425struct __move_traits<hash_set<_Value, _HashFcn, _EqualKey, _Alloc> > : 426 _STLP_PRIV __move_traits_aux<typename hash_set<_Value, _HashFcn, _EqualKey, _Alloc>::_Ht> 427{}; 428 429template <class _Value, class _HashFcn, class _EqualKey, class _Alloc> 430struct __move_traits<hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> > : 431 _STLP_PRIV __move_traits_aux<typename hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc>::_Ht> 432{}; 433# endif 434 435template <class _Value, class _HashFcn, class _EqualKey, class _Alloc> 436class insert_iterator<hash_set<_Value, _HashFcn, _EqualKey, _Alloc> > { 437protected: 438 typedef hash_set<_Value, _HashFcn, _EqualKey, _Alloc> _Container; 439 _Container* container; 440public: 441 typedef _Container container_type; 442 typedef output_iterator_tag iterator_category; 443 typedef void value_type; 444 typedef void difference_type; 445 typedef void pointer; 446 typedef void reference; 447 448 insert_iterator(_Container& __x) : container(&__x) {} 449 insert_iterator(_Container& __x, typename _Container::iterator) 450 : container(&__x) {} 451 insert_iterator<_Container>& 452 operator=(const typename _Container::value_type& __val) { 453 container->insert(__val); 454 return *this; 455 } 456 insert_iterator<_Container>& operator*() { return *this; } 457 insert_iterator<_Container>& operator++() { return *this; } 458 insert_iterator<_Container>& operator++(int) { return *this; } 459}; 460 461template <class _Value, class _HashFcn, class _EqualKey, class _Alloc> 462class insert_iterator<hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> > { 463protected: 464 typedef hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> _Container; 465 _Container* container; 466 typename _Container::iterator iter; 467public: 468 typedef _Container container_type; 469 typedef output_iterator_tag iterator_category; 470 typedef void value_type; 471 typedef void difference_type; 472 typedef void pointer; 473 typedef void reference; 474 475 insert_iterator(_Container& __x) : container(&__x) {} 476 insert_iterator(_Container& __x, typename _Container::iterator) 477 : container(&__x) {} 478 insert_iterator<_Container>& 479 operator=(const typename _Container::value_type& __val) { 480 container->insert(__val); 481 return *this; 482 } 483 insert_iterator<_Container>& operator*() { return *this; } 484 insert_iterator<_Container>& operator++() { return *this; } 485 insert_iterator<_Container>& operator++(int) { return *this; } 486}; 487#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ 488 489_STLP_END_NAMESPACE 490 491#endif /* _STLP_INTERNAL_HASH_SET_H */ 492 493// Local Variables: 494// mode:C++ 495// End: 496