Skip to content

Commit 2ad7a1d

Browse files
authored
[libc++] Remove some of the type aliases in __hash_table (llvm#157114)
1 parent 89d86b6 commit 2ad7a1d

File tree

3 files changed

+25
-54
lines changed

3 files changed

+25
-54
lines changed

libcxx/include/__hash_table

Lines changed: 21 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -201,22 +201,11 @@ struct __hash_node_types;
201201

202202
template <class _NodePtr, class _Tp, class _VoidPtr>
203203
struct __hash_node_types<_NodePtr, __hash_node<_Tp, _VoidPtr> > {
204-
typedef ptrdiff_t difference_type;
205-
typedef size_t size_type;
206-
207-
typedef __rebind_pointer_t<_NodePtr, void> __void_pointer;
208-
209204
typedef typename pointer_traits<_NodePtr>::element_type __node_type;
210-
typedef _NodePtr __node_pointer;
211205

212-
typedef __hash_node_base<__node_pointer> __node_base_type;
213-
typedef __rebind_pointer_t<_NodePtr, __node_base_type> __node_base_pointer;
214-
215-
typedef typename __node_base_type::__next_pointer __next_pointer;
206+
typedef typename __hash_node_base<_NodePtr>::__next_pointer __next_pointer;
216207

217208
using __node_value_type _LIBCPP_NODEBUG = __get_hash_node_value_type_t<_Tp>;
218-
typedef __rebind_pointer_t<_VoidPtr, __node_value_type> __node_value_type_pointer;
219-
typedef __rebind_pointer_t<_VoidPtr, const __node_value_type> __const_node_value_type_pointer;
220209

221210
private:
222211
static_assert(!is_const<__node_type>::value, "_NodePtr should never be a pointer to const");
@@ -237,13 +226,6 @@ struct __hash_node_types_from_iterator<__hash_local_iterator<_NodePtr> > : __has
237226
template <class _NodePtr>
238227
struct __hash_node_types_from_iterator<__hash_const_local_iterator<_NodePtr> > : __hash_node_types<_NodePtr> {};
239228

240-
template <class _NodeValueTp, class _VoidPtr>
241-
struct __make_hash_node_types {
242-
typedef __hash_node<_NodeValueTp, _VoidPtr> _NodeTp;
243-
typedef __rebind_pointer_t<_VoidPtr, _NodeTp> _NodePtr;
244-
typedef __hash_node_types<_NodePtr> type;
245-
};
246-
247229
template <class _NodePtr>
248230
class __hash_iterator {
249231
typedef __hash_node_types<_NodePtr> _NodeTypes;
@@ -255,9 +237,9 @@ class __hash_iterator {
255237
public:
256238
typedef forward_iterator_tag iterator_category;
257239
typedef typename _NodeTypes::__node_value_type value_type;
258-
typedef typename _NodeTypes::difference_type difference_type;
240+
using difference_type = ptrdiff_t;
259241
typedef value_type& reference;
260-
typedef typename _NodeTypes::__node_value_type_pointer pointer;
242+
using pointer = __rebind_pointer_t<_NodePtr, value_type>;
261243

262244
_LIBCPP_HIDE_FROM_ABI __hash_iterator() _NOEXCEPT : __node_(nullptr) {}
263245

@@ -322,9 +304,9 @@ public:
322304

323305
typedef forward_iterator_tag iterator_category;
324306
typedef typename _NodeTypes::__node_value_type value_type;
325-
typedef typename _NodeTypes::difference_type difference_type;
307+
using difference_type = ptrdiff_t;
326308
typedef const value_type& reference;
327-
typedef typename _NodeTypes::__const_node_value_type_pointer pointer;
309+
using pointer = __rebind_pointer_t<_NodePtr, const value_type>;
328310

329311
_LIBCPP_HIDE_FROM_ABI __hash_const_iterator() _NOEXCEPT : __node_(nullptr) {}
330312

@@ -387,9 +369,9 @@ class __hash_local_iterator {
387369
public:
388370
typedef forward_iterator_tag iterator_category;
389371
typedef typename _NodeTypes::__node_value_type value_type;
390-
typedef typename _NodeTypes::difference_type difference_type;
372+
using difference_type = ptrdiff_t;
391373
typedef value_type& reference;
392-
typedef typename _NodeTypes::__node_value_type_pointer pointer;
374+
using pointer = __rebind_pointer_t<_NodePtr, value_type>;
393375

394376
_LIBCPP_HIDE_FROM_ABI __hash_local_iterator() _NOEXCEPT : __node_(nullptr) {}
395377

@@ -465,9 +447,9 @@ public:
465447

466448
typedef forward_iterator_tag iterator_category;
467449
typedef typename _NodeTypes::__node_value_type value_type;
468-
typedef typename _NodeTypes::difference_type difference_type;
450+
using difference_type = ptrdiff_t;
469451
typedef const value_type& reference;
470-
typedef typename _NodeTypes::__const_node_value_type_pointer pointer;
452+
using pointer = __rebind_pointer_t<_ConstNodePtr, const value_type>;
471453

472454
_LIBCPP_HIDE_FROM_ABI __hash_const_local_iterator() _NOEXCEPT : __node_(nullptr) {}
473455

@@ -646,33 +628,32 @@ public:
646628

647629
private:
648630
typedef allocator_traits<allocator_type> __alloc_traits;
649-
typedef typename __make_hash_node_types<_Tp, typename __alloc_traits::void_pointer>::type _NodeTypes;
650631

651632
public:
652-
typedef typename _NodeTypes::__node_value_type __node_value_type;
653633
typedef value_type& reference;
654634
typedef const value_type& const_reference;
655635
typedef typename __alloc_traits::pointer pointer;
656636
typedef typename __alloc_traits::const_pointer const_pointer;
657637
#ifndef _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE
658638
typedef typename __alloc_traits::size_type size_type;
659639
#else
660-
typedef typename _NodeTypes::size_type size_type;
640+
using size_type = size_t;
661641
#endif
662-
typedef typename _NodeTypes::difference_type difference_type;
642+
using difference_type = ptrdiff_t;
663643

664644
public:
665645
// Create __node
666646

667-
typedef typename _NodeTypes::__node_type __node;
668-
typedef __rebind_alloc<__alloc_traits, __node> __node_allocator;
669-
typedef allocator_traits<__node_allocator> __node_traits;
670-
typedef typename _NodeTypes::__void_pointer __void_pointer;
671-
typedef typename _NodeTypes::__node_pointer __node_pointer;
672-
typedef typename _NodeTypes::__node_pointer __node_const_pointer;
673-
typedef typename _NodeTypes::__node_base_type __first_node;
674-
typedef typename _NodeTypes::__node_base_pointer __node_base_pointer;
675-
typedef typename _NodeTypes::__next_pointer __next_pointer;
647+
using __void_pointer _LIBCPP_NODEBUG = typename __alloc_traits::void_pointer;
648+
649+
using __node _LIBCPP_NODEBUG = __hash_node<_Tp, __void_pointer>;
650+
using __node_allocator _LIBCPP_NODEBUG = __rebind_alloc<__alloc_traits, __node>;
651+
using __node_traits _LIBCPP_NODEBUG = allocator_traits<__node_allocator>;
652+
using __node_pointer _LIBCPP_NODEBUG = __rebind_pointer_t<__void_pointer, __node>;
653+
654+
using __first_node _LIBCPP_NODEBUG = __hash_node_base<__node_pointer>;
655+
using __node_base_pointer _LIBCPP_NODEBUG = __rebind_pointer_t<__void_pointer, __first_node>;
656+
using __next_pointer _LIBCPP_NODEBUG = __node_base_pointer;
676657

677658
private:
678659
// check for sane allocator pointer rebinding semantics. Rebinding the

libcxx/include/ext/hash_map

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -467,8 +467,6 @@ private:
467467

468468
__table __table_;
469469

470-
typedef typename __table::__node_pointer __node_pointer;
471-
typedef typename __table::__node_const_pointer __node_const_pointer;
472470
typedef typename __table::__node_traits __node_traits;
473471
typedef typename __table::__node_allocator __node_allocator;
474472
typedef typename __table::__node __node;
@@ -693,7 +691,6 @@ private:
693691

694692
__table __table_;
695693

696-
typedef typename __table::__node_traits __node_traits;
697694
typedef typename __table::__node_allocator __node_allocator;
698695
typedef typename __table::__node __node;
699696
typedef __hash_map_node_destructor<__node_allocator> _Dp;

libcxx/include/unordered_map

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -844,8 +844,8 @@ class __hash_map_iterator {
844844

845845
public:
846846
typedef forward_iterator_tag iterator_category;
847-
using value_type = typename _HashIterator::value_type;
848-
typedef typename _NodeTypes::difference_type difference_type;
847+
using value_type = typename _HashIterator::value_type;
848+
using difference_type = ptrdiff_t;
849849
typedef value_type& reference;
850850
using pointer = typename _HashIterator::pointer;
851851

@@ -895,8 +895,8 @@ class __hash_map_const_iterator {
895895

896896
public:
897897
typedef forward_iterator_tag iterator_category;
898-
using value_type = typename _HashIterator::value_type;
899-
typedef typename _NodeTypes::difference_type difference_type;
898+
using value_type = typename _HashIterator::value_type;
899+
using difference_type = ptrdiff_t;
900900
typedef const value_type& reference;
901901
using pointer = typename _HashIterator::pointer;
902902

@@ -972,9 +972,6 @@ private:
972972

973973
__table __table_;
974974

975-
typedef typename __table::_NodeTypes _NodeTypes;
976-
typedef typename __table::__node_pointer __node_pointer;
977-
typedef typename __table::__node_const_pointer __node_const_pointer;
978975
typedef typename __table::__node_traits __node_traits;
979976
typedef typename __table::__node_allocator __node_allocator;
980977
typedef typename __table::__node __node;
@@ -1743,12 +1740,8 @@ private:
17431740

17441741
__table __table_;
17451742

1746-
typedef typename __table::_NodeTypes _NodeTypes;
17471743
typedef typename __table::__node_traits __node_traits;
1748-
typedef typename __table::__node_allocator __node_allocator;
17491744
typedef typename __table::__node __node;
1750-
typedef __hash_map_node_destructor<__node_allocator> _Dp;
1751-
typedef unique_ptr<__node, _Dp> __node_holder;
17521745
typedef allocator_traits<allocator_type> __alloc_traits;
17531746
static_assert(is_same<typename __node_traits::size_type, typename __alloc_traits::size_type>::value,
17541747
"Allocator uses different size_type for different types");

0 commit comments

Comments
 (0)