Skip to content

Commit 0bcdb71

Browse files
Change every static_cast to std::__static_fancy_pointer_cast in __tree
1 parent ecb88ef commit 0bcdb71

File tree

1 file changed

+61
-55
lines changed

1 file changed

+61
-55
lines changed

libcxx/include/__tree

Lines changed: 61 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 _EndNodePtr __tree_ne
209209
return std::__static_fancy_pointer_cast<_EndNodePtr>(std::__tree_min(__x->__right_));
210210
while (!std::__tree_is_left_child(__x))
211211
__x = __x->__parent_unsafe();
212-
return static_cast<_EndNodePtr>(__x->__parent_);
212+
return std::__static_fancy_pointer_cast<_EndNodePtr>(__x->__parent_);
213213
}
214214

215215
// Returns: pointer to the previous in-order node before __x.
@@ -1118,25 +1118,27 @@ public:
11181118
return;
11191119

11201120
if (__root() == nullptr) { // Make sure we always have a root node
1121-
__insert_node_at(
1122-
__end_node(), __end_node()->__left_, static_cast<__node_base_pointer>(__construct_node(*__first).release()));
1121+
__insert_node_at(__end_node(),
1122+
__end_node()->__left_,
1123+
std::__static_fancy_pointer_cast<__node_base_pointer>(__construct_node(*__first).release()));
11231124
++__first;
11241125
}
11251126

1126-
auto __max_node = static_cast<__node_pointer>(std::__tree_max(static_cast<__node_base_pointer>(__root())));
1127+
auto __max_node = std::__static_fancy_pointer_cast<__node_pointer>(
1128+
std::__tree_max(std::__static_fancy_pointer_cast<__node_base_pointer>(__root())));
11271129

11281130
for (; __first != __last; ++__first) {
11291131
__node_holder __nd = __construct_node(*__first);
11301132
// Always check the max node first. This optimizes for sorted ranges inserted at the end.
11311133
if (!value_comp()(__nd->__get_value(), __max_node->__get_value())) { // __node >= __max_val
1132-
__insert_node_at(static_cast<__end_node_pointer>(__max_node),
1134+
__insert_node_at(std::__static_fancy_pointer_cast<__end_node_pointer>(__max_node),
11331135
__max_node->__right_,
1134-
static_cast<__node_base_pointer>(__nd.get()));
1136+
std::__static_fancy_pointer_cast<__node_base_pointer>(__nd.get()));
11351137
__max_node = __nd.release();
11361138
} else {
11371139
__end_node_pointer __parent;
11381140
__node_base_pointer& __child = __find_leaf_high(__parent, __nd->__get_value());
1139-
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd.release()));
1141+
__insert_node_at(__parent, __child, std::__static_fancy_pointer_cast<__node_base_pointer>(__nd.release()));
11401142
}
11411143
}
11421144
}
@@ -1501,7 +1503,7 @@ private:
15011503
__t_->destroy(__cache_elem_);
15021504
if (__cache_root_) {
15031505
while (__cache_root_->__parent_ != nullptr)
1504-
__cache_root_ = static_cast<__node_pointer>(__cache_root_->__parent_);
1506+
__cache_root_ = std::__static_fancy_pointer_cast<__node_pointer>(__cache_root_->__parent_);
15051507
__t_->destroy(__cache_root_);
15061508
}
15071509
}
@@ -1647,14 +1649,14 @@ __tree<_Tp, _Compare, _Allocator>::_DetachedTreeCache::__detach_next(__node_poin
16471649
__cache = std::__static_fancy_pointer_cast<__node_pointer>(__cache->__parent_);
16481650
if (__cache->__right_ == nullptr)
16491651
return __cache;
1650-
return static_cast<__node_pointer>(std::__tree_leaf(__cache->__right_));
1652+
return std::__static_fancy_pointer_cast<__node_pointer>(std::__tree_leaf(__cache->__right_));
16511653
}
16521654
// __cache is right child
16531655
__cache->__parent_unsafe()->__right_ = nullptr;
16541656
__cache = std::__static_fancy_pointer_cast<__node_pointer>(__cache->__parent_);
16551657
if (__cache->__left_ == nullptr)
16561658
return __cache;
1657-
return static_cast<__node_pointer>(std::__tree_leaf(__cache->__left_));
1659+
return std::__static_fancy_pointer_cast<__node_pointer>(std::__tree_leaf(__cache->__left_));
16581660
}
16591661

16601662
template <class _Tp, class _Compare, class _Allocator>
@@ -1749,7 +1751,7 @@ _LIBCPP_CONSTEXPR_SINCE_CXX26 __tree<_Tp, _Compare, _Allocator>::__tree(__tree&&
17491751
if (__size_ == 0)
17501752
__begin_node_ = __end_node();
17511753
else {
1752-
__end_node()->__left_->__parent_ = static_cast<__end_node_pointer>(__end_node());
1754+
__end_node()->__left_->__parent_ = std::__static_fancy_pointer_cast<__end_node_pointer>(__end_node());
17531755
__t.__begin_node_ = __t.__end_node();
17541756
__t.__end_node()->__left_ = nullptr;
17551757
__t.__size_ = 0;
@@ -1765,7 +1767,7 @@ _LIBCPP_CONSTEXPR_SINCE_CXX26 __tree<_Tp, _Compare, _Allocator>::__tree(__tree&&
17651767
else {
17661768
__begin_node_ = __t.__begin_node_;
17671769
__end_node()->__left_ = __t.__end_node()->__left_;
1768-
__end_node()->__left_->__parent_ = static_cast<__end_node_pointer>(__end_node());
1770+
__end_node()->__left_->__parent_ = std::__static_fancy_pointer_cast<__end_node_pointer>(__end_node());
17691771
__size_ = __t.__size_;
17701772
__t.__begin_node_ = __t.__end_node();
17711773
__t.__end_node()->__left_ = nullptr;
@@ -1779,7 +1781,7 @@ _LIBCPP_CONSTEXPR_SINCE_CXX26 __tree<_Tp, _Compare, _Allocator>::__tree(__tree&&
17791781
template <class _Tp, class _Compare, class _Allocator>
17801782
_LIBCPP_CONSTEXPR_SINCE_CXX26 void __tree<_Tp, _Compare, _Allocator>::__move_assign(__tree& __t, true_type)
17811783
_NOEXCEPT_(is_nothrow_move_assignable<value_compare>::value&& is_nothrow_move_assignable<__node_allocator>::value) {
1782-
destroy(static_cast<__node_pointer>(__end_node()->__left_));
1784+
destroy(std::__static_fancy_pointer_cast<__node_pointer>(__end_node()->__left_));
17831785
__begin_node_ = __t.__begin_node_;
17841786
__end_node_ = __t.__end_node_;
17851787
__move_assign_alloc(__t);
@@ -1788,7 +1790,7 @@ _LIBCPP_CONSTEXPR_SINCE_CXX26 void __tree<_Tp, _Compare, _Allocator>::__move_ass
17881790
if (__size_ == 0)
17891791
__begin_node_ = __end_node();
17901792
else {
1791-
__end_node()->__left_->__parent_ = static_cast<__end_node_pointer>(__end_node());
1793+
__end_node()->__left_->__parent_ = std::__static_fancy_pointer_cast<__end_node_pointer>(__end_node());
17921794
__t.__begin_node_ = __t.__end_node();
17931795
__t.__end_node()->__left_ = nullptr;
17941796
__t.__size_ = 0;
@@ -1860,16 +1862,16 @@ __tree<_Tp, _Compare, _Allocator>::__find_leaf_low(__end_node_pointer& __parent,
18601862
while (true) {
18611863
if (value_comp()(__nd->__get_value(), __v)) {
18621864
if (__nd->__right_ != nullptr)
1863-
__nd = static_cast<__node_pointer>(__nd->__right_);
1865+
__nd = std::__static_fancy_pointer_cast<__node_pointer>(__nd->__right_);
18641866
else {
1865-
__parent = static_cast<__end_node_pointer>(__nd);
1867+
__parent = std::__static_fancy_pointer_cast<__end_node_pointer>(__nd);
18661868
return __nd->__right_;
18671869
}
18681870
} else {
18691871
if (__nd->__left_ != nullptr)
1870-
__nd = static_cast<__node_pointer>(__nd->__left_);
1872+
__nd = std::__static_fancy_pointer_cast<__node_pointer>(__nd->__left_);
18711873
else {
1872-
__parent = static_cast<__end_node_pointer>(__nd);
1874+
__parent = std::__static_fancy_pointer_cast<__end_node_pointer>(__nd);
18731875
return __parent->__left_;
18741876
}
18751877
}
@@ -1890,14 +1892,14 @@ __tree<_Tp, _Compare, _Allocator>::__find_leaf_high(__end_node_pointer& __parent
18901892
while (true) {
18911893
if (value_comp()(__v, __nd->__get_value())) {
18921894
if (__nd->__left_ != nullptr)
1893-
__nd = static_cast<__node_pointer>(__nd->__left_);
1895+
__nd = std::__static_fancy_pointer_cast<__node_pointer>(__nd->__left_);
18941896
else {
1895-
__parent = static_cast<__end_node_pointer>(__nd);
1897+
__parent = std::__static_fancy_pointer_cast<__end_node_pointer>(__nd);
18961898
return __parent->__left_;
18971899
}
18981900
} else {
18991901
if (__nd->__right_ != nullptr)
1900-
__nd = static_cast<__node_pointer>(__nd->__right_);
1902+
__nd = std::__static_fancy_pointer_cast<__node_pointer>(__nd->__right_);
19011903
else {
19021904
__parent = std::__static_fancy_pointer_cast<__end_node_pointer>(__nd);
19031905
return __nd->__right_;
@@ -1926,10 +1928,10 @@ __tree<_Tp, _Compare, _Allocator>::__find_leaf(
19261928
if (__prior == begin() || !value_comp()(__v, *--__prior)) {
19271929
// *prev(__hint) <= __v <= *__hint
19281930
if (__hint.__ptr_->__left_ == nullptr) {
1929-
__parent = static_cast<__end_node_pointer>(__hint.__ptr_);
1931+
__parent = std::__static_fancy_pointer_cast<__end_node_pointer>(__hint.__ptr_);
19301932
return __parent->__left_;
19311933
} else {
1932-
__parent = static_cast<__end_node_pointer>(__prior.__ptr_);
1934+
__parent = std::__static_fancy_pointer_cast<__end_node_pointer>(__prior.__ptr_);
19331935
return std::__static_fancy_pointer_cast<__node_base_pointer>(__prior.__ptr_)->__right_;
19341936
}
19351937
}
@@ -2016,15 +2018,15 @@ __tree<_Tp, _Compare, _Allocator>::__find_equal(const_iterator __hint, __node_ba
20162018
if (__next == end() || value_comp()(__v, *__next)) {
20172019
// *__hint < __v < *std::next(__hint)
20182020
if (__hint.__get_np()->__right_ == nullptr)
2019-
return _Pair(__hint.__ptr_, static_cast<__node_pointer>(__hint.__ptr_)->__right_);
2021+
return _Pair(__hint.__ptr_, std::__static_fancy_pointer_cast<__node_pointer>(__hint.__ptr_)->__right_);
20202022
return _Pair(__next.__ptr_, __next.__ptr_->__left_);
20212023
}
20222024
// *next(__hint) <= __v
20232025
return __find_equal(__v);
20242026
}
20252027

20262028
// else __v == *__hint
2027-
__dummy = static_cast<__node_base_pointer>(__hint.__ptr_);
2029+
__dummy = std::__static_fancy_pointer_cast<__node_base_pointer>(__hint.__ptr_);
20282030
return _Pair(__hint.__ptr_, __dummy);
20292031
}
20302032

@@ -2060,8 +2062,8 @@ __tree<_Tp, _Compare, _Allocator>::__emplace_multi(_Args&&... __args) {
20602062
__node_holder __h = __construct_node(std::forward<_Args>(__args)...);
20612063
__end_node_pointer __parent;
20622064
__node_base_pointer& __child = __find_leaf_high(__parent, __h->__get_value());
2063-
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get()));
2064-
return iterator(static_cast<__node_pointer>(__h.release()));
2065+
__insert_node_at(__parent, __child, std::__static_fancy_pointer_cast<__node_base_pointer>(__h.get()));
2066+
return iterator(std::__static_fancy_pointer_cast<__node_pointer>(__h.release()));
20652067
}
20662068

20672069
template <class _Tp, class _Compare, class _Allocator>
@@ -2072,14 +2074,14 @@ __tree<_Tp, _Compare, _Allocator>::__emplace_hint_multi(const_iterator __p, _Arg
20722074
__end_node_pointer __parent;
20732075
__node_base_pointer& __child = __find_leaf(__p, __parent, __h->__get_value());
20742076
__insert_node_at(__parent, __child, std::__static_fancy_pointer_cast<__node_base_pointer>(__h.get()));
2075-
return iterator(static_cast<__node_pointer>(__h.release()));
2077+
return iterator(std::__static_fancy_pointer_cast<__node_pointer>(__h.release()));
20762078
}
20772079

20782080
template <class _Tp, class _Compare, class _Allocator>
20792081
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, bool> _LIBCPP_CONSTEXPR_SINCE_CXX26
20802082
__tree<_Tp, _Compare, _Allocator>::__node_assign_unique(const value_type& __v, __node_pointer __nd) {
20812083
auto [__parent, __child] = __find_equal(__v);
2082-
__node_pointer __r = static_cast<__node_pointer>(__child);
2084+
__node_pointer __r = std::__static_fancy_pointer_cast<__node_pointer>(__child);
20832085
bool __inserted = false;
20842086
if (__child == nullptr) {
20852087
__assign_value(__nd->__get_value(), __v);
@@ -2104,7 +2106,7 @@ _LIBCPP_CONSTEXPR_SINCE_CXX26 typename __tree<_Tp, _Compare, _Allocator>::iterat
21042106
__tree<_Tp, _Compare, _Allocator>::__node_insert_multi(const_iterator __p, __node_pointer __nd) {
21052107
__end_node_pointer __parent;
21062108
__node_base_pointer& __child = __find_leaf(__p, __parent, __nd->__get_value());
2107-
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd));
2109+
__insert_node_at(__parent, __child, std::__static_fancy_pointer_cast<__node_base_pointer>(__nd));
21082110
return iterator(__nd);
21092111
}
21102112

@@ -2149,7 +2151,7 @@ __tree<_Tp, _Compare, _Allocator>::__node_handle_insert_unique(const_iterator __
21492151
__node_pointer __ptr = __nh.__ptr_;
21502152
__node_base_pointer __dummy;
21512153
auto [__parent, __child] = __find_equal(__hint, __dummy, __ptr->__get_value());
2152-
__node_pointer __r = static_cast<__node_pointer>(__child);
2154+
__node_pointer __r = std::__static_fancy_pointer_cast<__node_pointer>(__child);
21532155
if (__child == nullptr) {
21542156
__insert_node_at(__parent, __child, std::__static_fancy_pointer_cast<__node_base_pointer>(__ptr));
21552157
__r = __ptr;
@@ -2188,7 +2190,7 @@ __tree<_Tp, _Compare, _Allocator>::__node_handle_merge_unique(__tree<_Tp, _Comp2
21882190
if (__child != nullptr)
21892191
continue;
21902192
__source.__remove_node_pointer(__src_ptr);
2191-
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__src_ptr));
2193+
__insert_node_at(__parent, __child, std::__static_fancy_pointer_cast<__node_base_pointer>(__src_ptr));
21922194
}
21932195
}
21942196

@@ -2201,7 +2203,7 @@ __tree<_Tp, _Compare, _Allocator>::__node_handle_insert_multi(_NodeHandle&& __nh
22012203
__node_pointer __ptr = __nh.__ptr_;
22022204
__end_node_pointer __parent;
22032205
__node_base_pointer& __child = __find_leaf_high(__parent, __ptr->__get_value());
2204-
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__ptr));
2206+
__insert_node_at(__parent, __child, std::__static_fancy_pointer_cast<__node_base_pointer>(__ptr));
22052207
__nh.__release_ptr();
22062208
return iterator(__ptr);
22072209
}
@@ -2216,7 +2218,7 @@ __tree<_Tp, _Compare, _Allocator>::__node_handle_insert_multi(const_iterator __h
22162218
__node_pointer __ptr = __nh.__ptr_;
22172219
__end_node_pointer __parent;
22182220
__node_base_pointer& __child = __find_leaf(__hint, __parent, __ptr->__get_value());
2219-
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__ptr));
2221+
__insert_node_at(__parent, __child, std::__static_fancy_pointer_cast<__node_base_pointer>(__ptr));
22202222
__nh.__release_ptr();
22212223
return iterator(__ptr);
22222224
}
@@ -2231,7 +2233,7 @@ __tree<_Tp, _Compare, _Allocator>::__node_handle_merge_multi(__tree<_Tp, _Comp2,
22312233
__node_base_pointer& __child = __find_leaf_high(__parent, __src_ptr->__get_value());
22322234
++__i;
22332235
__source.__remove_node_pointer(__src_ptr);
2234-
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__src_ptr));
2236+
__insert_node_at(__parent, __child, std::__static_fancy_pointer_cast<__node_base_pointer>(__src_ptr));
22352237
}
22362238
}
22372239

@@ -2306,14 +2308,16 @@ __tree<_Tp, _Compare, _Allocator>::__count_multi(const _Key& __k) const {
23062308
while (__rt != nullptr) {
23072309
auto __comp_res = __comp(__k, __rt->__get_value());
23082310
if (__comp_res.__less()) {
2309-
__result = static_cast<__end_node_pointer>(__rt);
2310-
__rt = static_cast<__node_pointer>(__rt->__left_);
2311+
__result = std::__static_fancy_pointer_cast<__end_node_pointer>(__rt);
2312+
__rt = std::__static_fancy_pointer_cast<__node_pointer>(__rt->__left_);
23112313
} else if (__comp_res.__greater())
2312-
__rt = static_cast<__node_pointer>(__rt->__right_);
2314+
__rt = std::__static_fancy_pointer_cast<__node_pointer>(__rt->__right_);
23132315
else
23142316
return std::distance(
2315-
__lower_bound_multi(__k, static_cast<__node_pointer>(__rt->__left_), static_cast<__end_node_pointer>(__rt)),
2316-
__upper_bound_multi(__k, static_cast<__node_pointer>(__rt->__right_), __result));
2317+
__lower_bound_multi(__k,
2318+
std::__static_fancy_pointer_cast<__node_pointer>(__rt->__left_),
2319+
std::__static_fancy_pointer_cast<__end_node_pointer>(__rt)),
2320+
__upper_bound_multi(__k, std::__static_fancy_pointer_cast<__node_pointer>(__rt->__right_), __result));
23172321
}
23182322
return 0;
23192323
}
@@ -2441,14 +2445,15 @@ _LIBCPP_CONSTEXPR_SINCE_CXX26
24412445
while (__rt != nullptr) {
24422446
auto __comp_res = __comp(__k, __rt->__get_value());
24432447
if (__comp_res.__less()) {
2444-
__result = static_cast<__end_node_pointer>(__rt);
2445-
__rt = static_cast<__node_pointer>(__rt->__left_);
2448+
__result = std::__static_fancy_pointer_cast<__end_node_pointer>(__rt);
2449+
__rt = std::__static_fancy_pointer_cast<__node_pointer>(__rt->__left_);
24462450
} else if (__comp_res.__greater())
2447-
__rt = static_cast<__node_pointer>(__rt->__right_);
2451+
__rt = std::__static_fancy_pointer_cast<__node_pointer>(__rt->__right_);
24482452
else
2449-
return _Pp(
2450-
__lower_bound_multi(__k, static_cast<__node_pointer>(__rt->__left_), static_cast<__end_node_pointer>(__rt)),
2451-
__upper_bound_multi(__k, static_cast<__node_pointer>(__rt->__right_), __result));
2453+
return _Pp(__lower_bound_multi(__k,
2454+
std::__static_fancy_pointer_cast<__node_pointer>(__rt->__left_),
2455+
std::__static_fancy_pointer_cast<__end_node_pointer>(__rt)),
2456+
__upper_bound_multi(__k, std::__static_fancy_pointer_cast<__node_pointer>(__rt->__right_), __result));
24522457
}
24532458
return _Pp(iterator(__result), iterator(__result));
24542459
}
@@ -2465,14 +2470,15 @@ __tree<_Tp, _Compare, _Allocator>::__equal_range_multi(const _Key& __k) const {
24652470
while (__rt != nullptr) {
24662471
auto __comp_res = __comp(__k, __rt->__get_value());
24672472
if (__comp_res.__less()) {
2468-
__result = static_cast<__end_node_pointer>(__rt);
2469-
__rt = static_cast<__node_pointer>(__rt->__left_);
2473+
__result = std::__static_fancy_pointer_cast<__end_node_pointer>(__rt);
2474+
__rt = std::__static_fancy_pointer_cast<__node_pointer>(__rt->__left_);
24702475
} else if (__comp_res.__greater())
2471-
__rt = static_cast<__node_pointer>(__rt->__right_);
2476+
__rt = std::__static_fancy_pointer_cast<__node_pointer>(__rt->__right_);
24722477
else
2473-
return _Pp(
2474-
__lower_bound_multi(__k, static_cast<__node_pointer>(__rt->__left_), static_cast<__end_node_pointer>(__rt)),
2475-
__upper_bound_multi(__k, static_cast<__node_pointer>(__rt->__right_), __result));
2478+
return _Pp(__lower_bound_multi(__k,
2479+
std::__static_fancy_pointer_cast<__node_pointer>(__rt->__left_),
2480+
std::__static_fancy_pointer_cast<__end_node_pointer>(__rt)),
2481+
__upper_bound_multi(__k, std::__static_fancy_pointer_cast<__node_pointer>(__rt->__right_), __result));
24762482
}
24772483
return _Pp(const_iterator(__result), const_iterator(__result));
24782484
}
@@ -2483,12 +2489,12 @@ __tree<_Tp, _Compare, _Allocator>::remove(const_iterator __p) _NOEXCEPT {
24832489
__node_pointer __np = __p.__get_np();
24842490
if (__begin_node_ == __p.__ptr_) {
24852491
if (__np->__right_ != nullptr)
2486-
__begin_node_ = static_cast<__end_node_pointer>(__np->__right_);
2492+
__begin_node_ = std::__static_fancy_pointer_cast<__end_node_pointer>(__np->__right_);
24872493
else
2488-
__begin_node_ = static_cast<__end_node_pointer>(__np->__parent_);
2494+
__begin_node_ = std::__static_fancy_pointer_cast<__end_node_pointer>(__np->__parent_);
24892495
}
24902496
--__size_;
2491-
std::__tree_remove(__end_node()->__left_, static_cast<__node_base_pointer>(__np));
2497+
std::__tree_remove(__end_node()->__left_, std::__static_fancy_pointer_cast<__node_base_pointer>(__np));
24922498
return __node_holder(__np, _Dp(__node_alloc(), true));
24932499
}
24942500

0 commit comments

Comments
 (0)