Dash Core Source Documentation (0.16.0.1)

Find detailed information regarding the Dash Core source code.

immer::detail::rbts Namespace Reference

Classes

struct  array_for_visitor
 
struct  concat_both_mut_visitor
 
struct  concat_both_visitor
 
struct  concat_center_pos
 
struct  concat_left_mut_visitor
 
struct  concat_left_visitor
 
struct  concat_merger
 
struct  concat_merger_mut
 
struct  concat_merger_mut_visitor
 
struct  concat_merger_visitor
 
struct  concat_rebalance_plan
 
struct  concat_rebalance_plan_fill_visitor
 
struct  concat_rebalance_plan_mut
 
struct  concat_right_mut_visitor
 
struct  concat_right_visitor
 
struct  concat_trees_left_mut_visitor
 
struct  concat_trees_left_visitor
 
struct  concat_trees_right_mut_visitor
 
struct  concat_trees_right_visitor
 
struct  dec_left_visitor
 
struct  dec_right_visitor
 
struct  dec_visitor
 
struct  empty_leaf_pos
 
struct  empty_regular_pos
 
struct  equals_visitor
 
struct  for_each_chunk_i_visitor
 
struct  for_each_chunk_left_visitor
 
struct  for_each_chunk_p_i_visitor
 
struct  for_each_chunk_p_left_visitor
 
struct  for_each_chunk_p_right_visitor
 
struct  for_each_chunk_p_visitor
 
struct  for_each_chunk_right_visitor
 
struct  for_each_chunk_visitor
 
struct  full_leaf_pos
 
struct  full_pos
 
struct  get_mut_visitor
 
struct  get_visitor
 
struct  leaf_descent_pos
 
struct  leaf_pos
 
struct  leaf_sub_pos
 
struct  node
 
struct  null_sub_pos
 
struct  push_tail_mut_visitor
 
struct  push_tail_visitor
 
struct  rbtree
 
struct  rbtree_iterator
 
struct  region_for_visitor
 
struct  regular_descent_pos
 
struct  regular_descent_pos< NodeT, BL, B, BL >
 
struct  regular_pos
 
struct  regular_sub_pos
 
struct  relaxed_descent_pos
 
struct  relaxed_descent_pos< NodeT, BL, B, BL >
 
struct  relaxed_pos
 
struct  rrbtree
 
struct  rrbtree_iterator
 
struct  singleton_regular_sub_pos
 
struct  slice_left_mut_visitor
 
struct  slice_left_visitor
 
struct  slice_right_mut_visitor
 
struct  slice_right_visitor
 
struct  update_visitor
 
struct  visitor_base
 

Typedefs

using bits_t = std::uint32_t
 
using shift_t = std::uint32_t
 
using count_t = std::uint32_t
 
using size_t = std::size_t
 
template<typename Node >
using concat_center_mut_pos = concat_center_pos< Node >
 
template<typename Pos >
using node_type = typename std::decay< Pos >::type::node_t
 
template<typename Pos >
using edit_type = typename std::decay< Pos >::type::node_t::edit_t
 
template<typename Pos >
using is_relaxed = std::is_same< relaxed_pos< typename std::decay_t< Pos >::node_t >, std::decay_t< Pos > >
 

Functions

template<typename T , typename MP , bits_t B>
constexpr bits_t derive_bits_leaf_aux ()
 
template<typename NodeT >
void dec_leaf (NodeT *node, count_t n)
 
template<typename NodeT >
void dec_inner (NodeT *node, shift_t shift, size_t size)
 
template<typename NodeT >
void dec_relaxed (NodeT *node, shift_t shift)
 
template<typename NodeT >
void dec_regular (NodeT *node, shift_t shift, size_t size)
 
template<typename NodeT >
void dec_empty_regular (NodeT *node)
 
template<typename Node , typename LPos , typename CPos , typename RPos >
concat_center_pos< Node > concat_rebalance (LPos &&lpos, CPos &&cpos, RPos &&rpos)
 
template<typename Node , typename LPos , typename TPos , typename RPos >
concat_center_pos< Node > concat_leafs (LPos &&lpos, TPos &&tpos, RPos &&rpos)
 
template<typename Node , typename LPos , typename TPos , typename RPos >
concat_center_pos< Node > concat_inners (LPos &&lpos, TPos &&tpos, RPos &&rpos)
 
template<typename Node >
relaxed_pos< Node > concat_trees (Node *lroot, shift_t lshift, size_t lsize, Node *ltail, count_t ltcount, Node *rroot, shift_t rshift, size_t rsize)
 
template<typename Node >
relaxed_pos< Node > concat_trees (Node *ltail, count_t ltcount, Node *rroot, shift_t rshift, size_t rsize)
 
template<typename Node , typename LPos , typename CPos , typename RPos >
concat_center_pos< Node > concat_rebalance_mut (edit_type< Node > ec, edit_type< Node > el, LPos &&lpos, CPos &&cpos, edit_type< Node > er, RPos &&rpos)
 
template<typename Node , typename LPos , typename TPos , typename RPos >
concat_center_mut_pos< Node > concat_leafs_mut (edit_type< Node > ec, edit_type< Node > el, LPos &&lpos, TPos &&tpos, edit_type< Node > er, RPos &&rpos)
 
template<typename Node , typename LPos , typename TPos , typename RPos >
concat_center_mut_pos< Node > concat_inners_mut (edit_type< Node > ec, edit_type< Node > el, LPos &&lpos, TPos &&tpos, edit_type< Node > er, RPos &&rpos)
 
template<typename Node >
relaxed_pos< Node > concat_trees_mut (edit_type< Node > ec, edit_type< Node > el, Node *lroot, shift_t lshift, size_t lsize, Node *ltail, count_t ltcount, edit_type< Node > er, Node *rroot, shift_t rshift, size_t rsize)
 
template<typename Node >
relaxed_pos< Node > concat_trees_mut (edit_type< Node > ec, edit_type< Node > el, Node *ltail, count_t ltcount, edit_type< Node > er, Node *rroot, shift_t rshift, size_t rsize)
 
template<typename NodeT >
empty_regular_pos< NodeT > make_empty_regular_pos (NodeT *node)
 
template<typename NodeT >
empty_leaf_pos< NodeT > make_empty_leaf_pos (NodeT *node)
 
template<typename NodeT >
leaf_pos< NodeT > make_leaf_pos (NodeT *node, size_t size)
 
template<typename NodeT >
leaf_sub_pos< NodeT > make_leaf_sub_pos (NodeT *node, count_t count)
 
template<typename NodeT >
leaf_descent_pos< NodeT > make_leaf_descent_pos (NodeT *node)
 
template<typename NodeT >
full_leaf_pos< NodeT > make_full_leaf_pos (NodeT *node)
 
template<typename Pos , typename Visitor , typename... Args>
void each_regular (Pos &&p, Visitor v, Args &&... args)
 
template<typename Pos , typename Visitor , typename... Args>
bool each_pred_regular (Pos &&p, Visitor v, Args &&... args)
 
template<typename Pos , typename Visitor , typename... Args>
bool each_pred_zip_regular (Pos &&p, Visitor v, node_type< Pos > *other, Args &&... args)
 
template<typename Pos , typename Visitor , typename... Args>
bool each_pred_i_regular (Pos &&p, Visitor v, count_t f, count_t l, Args &&... args)
 
template<typename Pos , typename Visitor , typename... Args>
bool each_pred_left_regular (Pos &&p, Visitor v, count_t last, Args &&... args)
 
template<typename Pos , typename Visitor , typename... Args>
bool each_pred_right_regular (Pos &&p, Visitor v, count_t start, Args &&... args)
 
template<typename Pos , typename Visitor , typename... Args>
void each_i_regular (Pos &&p, Visitor v, count_t f, count_t l, Args &&... args)
 
template<typename Pos , typename Visitor , typename... Args>
void each_left_regular (Pos &&p, Visitor v, count_t last, Args &&... args)
 
template<typename Pos , typename Visitor , typename... Args>
void each_right_regular (Pos &&p, Visitor v, count_t start, Args &&... args)
 
template<typename Pos , typename Visitor , typename... Args>
decltype(auto) towards_oh_ch_regular (Pos &&p, Visitor v, size_t idx, count_t offset_hint, count_t count_hint, Args &&... args)
 
template<typename Pos , typename Visitor , typename... Args>
decltype(auto) towards_sub_oh_regular (Pos &&p, Visitor v, size_t idx, count_t offset_hint, Args &&... args)
 
template<typename Pos , typename Visitor , typename... Args>
decltype(auto) last_oh_regular (Pos &&p, Visitor v, count_t offset_hint, Args &&... args)
 
template<typename NodeT >
regular_pos< NodeT > make_regular_pos (NodeT *node, shift_t shift, size_t size)
 
template<typename NodeT >
auto make_singleton_regular_sub_pos (NodeT *leaf, count_t count)
 
template<typename NodeT >
regular_sub_pos< NodeT > make_regular_sub_pos (NodeT *node, shift_t shift, size_t size)
 
template<typename NodeT , typename Visitor >
decltype(auto) visit_regular_descent (NodeT *node, shift_t shift, Visitor v, size_t idx)
 
template<typename NodeT >
full_pos< NodeT > make_full_pos (NodeT *node, shift_t shift)
 
template<typename NodeT >
relaxed_pos< NodeT > make_relaxed_pos (NodeT *node, shift_t shift, typename NodeT::relaxed_t *relaxed)
 
template<typename NodeT , typename Visitor , typename... Args>
decltype(auto) visit_maybe_relaxed_sub (NodeT *node, shift_t shift, size_t size, Visitor v, Args &&...args)
 
template<typename NodeT , typename Visitor , typename... Args>
decltype(auto) visit_maybe_relaxed_descent (NodeT *node, shift_t shift, Visitor v, size_t idx)
 

Variables

template<bits_t B, typename T = count_t>
constexpr T branches = T{1} << B
 
template<bits_t B, typename T = size_t>
constexpr T mask = branches<B, T> - 1
 
template<bits_t B, bits_t BL>
constexpr shift_t endshift = shift_t{BL} - shift_t{B}
 
template<typename T , typename MP , bits_t B>
constexpr bits_t derive_bits_leaf = derive_bits_leaf_aux<T, MP, B>()
 
template<typename Pos >
constexpr auto bits = std::decay_t<Pos>::node_t::bits
 
template<typename Pos >
constexpr auto bits_leaf = std::decay_t<Pos>::node_t::bits_leaf
 
template<typename Pos >
constexpr auto is_relaxed_v = is_relaxed<Pos>::value
 

Typedef Documentation

◆ bits_t

using immer::detail::rbts::bits_t = typedef std::uint32_t

Definition at line 17 of file bits.hpp.

◆ concat_center_mut_pos

template<typename Node >
using immer::detail::rbts::concat_center_mut_pos = typedef concat_center_pos<Node>

Definition at line 1866 of file operations.hpp.

◆ count_t

using immer::detail::rbts::count_t = typedef std::uint32_t

Definition at line 19 of file bits.hpp.

◆ edit_type

template<typename Pos >
using immer::detail::rbts::edit_type = typedef typename std::decay<Pos>::type::node_t::edit_t

Definition at line 32 of file position.hpp.

◆ is_relaxed

template<typename Pos >
using immer::detail::rbts::is_relaxed = typedef std::is_same<relaxed_pos<typename std::decay_t<Pos>::node_t>, std::decay_t<Pos> >

Definition at line 1681 of file position.hpp.

◆ node_type

template<typename Pos >
using immer::detail::rbts::node_type = typedef typename std::decay<Pos>::type::node_t

Definition at line 29 of file position.hpp.

◆ shift_t

using immer::detail::rbts::shift_t = typedef std::uint32_t

Definition at line 18 of file bits.hpp.

◆ size_t

using immer::detail::rbts::size_t = typedef std::size_t

Definition at line 20 of file bits.hpp.

Function Documentation

◆ concat_inners()

template<typename Node , typename LPos , typename TPos , typename RPos >
concat_center_pos<Node> immer::detail::rbts::concat_inners ( LPos &&  lpos,
TPos &&  tpos,
RPos &&  rpos 
)

Definition at line 1745 of file operations.hpp.

References bits_leaf.

◆ concat_inners_mut()

template<typename Node , typename LPos , typename TPos , typename RPos >
concat_center_mut_pos<Node> immer::detail::rbts::concat_inners_mut ( edit_type< Node >  ec,
edit_type< Node >  el,
LPos &&  lpos,
TPos &&  tpos,
edit_type< Node >  er,
RPos &&  rpos 
)

Definition at line 2151 of file operations.hpp.

References bits_leaf.

◆ concat_leafs()

template<typename Node , typename LPos , typename TPos , typename RPos >
concat_center_pos<Node> immer::detail::rbts::concat_leafs ( LPos &&  lpos,
TPos &&  tpos,
RPos &&  rpos 
)

Definition at line 1715 of file operations.hpp.

References bits, and bits_leaf.

◆ concat_leafs_mut()

template<typename Node , typename LPos , typename TPos , typename RPos >
concat_center_mut_pos<Node> immer::detail::rbts::concat_leafs_mut ( edit_type< Node >  ec,
edit_type< Node >  el,
LPos &&  lpos,
TPos &&  tpos,
edit_type< Node >  er,
RPos &&  rpos 
)

Definition at line 2119 of file operations.hpp.

References bits, and bits_leaf.

◆ concat_rebalance()

template<typename Node , typename LPos , typename CPos , typename RPos >
concat_center_pos<Node> immer::detail::rbts::concat_rebalance ( LPos &&  lpos,
CPos &&  cpos,
RPos &&  rpos 
)

◆ concat_rebalance_mut()

template<typename Node , typename LPos , typename CPos , typename RPos >
concat_center_pos<Node> immer::detail::rbts::concat_rebalance_mut ( edit_type< Node >  ec,
edit_type< Node >  el,
LPos &&  lpos,
CPos &&  cpos,
edit_type< Node >  er,
RPos &&  rpos 
)

◆ concat_trees() [1/2]

template<typename Node >
relaxed_pos<Node> immer::detail::rbts::concat_trees ( Node *  lroot,
shift_t  lshift,
size_t  lsize,
Node *  ltail,
count_t  ltcount,
Node *  rroot,
shift_t  rshift,
size_t  rsize 
)

◆ concat_trees() [2/2]

template<typename Node >
relaxed_pos<Node> immer::detail::rbts::concat_trees ( Node *  ltail,
count_t  ltcount,
Node *  rroot,
shift_t  rshift,
size_t  rsize 
)

Definition at line 1855 of file operations.hpp.

References make_singleton_regular_sub_pos().

◆ concat_trees_mut() [1/2]

template<typename Node >
relaxed_pos<Node> immer::detail::rbts::concat_trees_mut ( edit_type< Node >  ec,
edit_type< Node >  el,
Node *  lroot,
shift_t  lshift,
size_t  lsize,
Node *  ltail,
count_t  ltcount,
edit_type< Node >  er,
Node *  rroot,
shift_t  rshift,
size_t  rsize 
)

Definition at line 2288 of file operations.hpp.

References make_leaf_pos(), and visit_maybe_relaxed_sub().

◆ concat_trees_mut() [2/2]

template<typename Node >
relaxed_pos<Node> immer::detail::rbts::concat_trees_mut ( edit_type< Node >  ec,
edit_type< Node >  el,
Node *  ltail,
count_t  ltcount,
edit_type< Node >  er,
Node *  rroot,
shift_t  rshift,
size_t  rsize 
)

Definition at line 2306 of file operations.hpp.

References make_singleton_regular_sub_pos().

◆ dec_empty_regular()

template<typename NodeT >
void immer::detail::rbts::dec_empty_regular ( NodeT *  node)

◆ dec_inner()

◆ dec_leaf()

◆ dec_regular()

◆ dec_relaxed()

template<typename NodeT >
void immer::detail::rbts::dec_relaxed ( NodeT *  node,
shift_t  shift 
)

◆ derive_bits_leaf_aux()

template<typename T , typename MP , bits_t B>
constexpr bits_t immer::detail::rbts::derive_bits_leaf_aux ( )

Definition at line 927 of file node.hpp.

References immer::detail::log2().

◆ each_i_regular()

template<typename Pos , typename Visitor , typename... Args>
void immer::detail::rbts::each_i_regular ( Pos &&  p,
Visitor  v,
count_t  f,
count_t  l,
Args &&...  args 
)

◆ each_left_regular()

template<typename Pos , typename Visitor , typename... Args>
void immer::detail::rbts::each_left_regular ( Pos &&  p,
Visitor  v,
count_t  last,
Args &&...  args 
)

◆ each_pred_i_regular()

template<typename Pos , typename Visitor , typename... Args>
bool immer::detail::rbts::each_pred_i_regular ( Pos &&  p,
Visitor  v,
count_t  f,
count_t  l,
Args &&...  args 
)

◆ each_pred_left_regular()

template<typename Pos , typename Visitor , typename... Args>
bool immer::detail::rbts::each_pred_left_regular ( Pos &&  p,
Visitor  v,
count_t  last,
Args &&...  args 
)

◆ each_pred_regular()

template<typename Pos , typename Visitor , typename... Args>
bool immer::detail::rbts::each_pred_regular ( Pos &&  p,
Visitor  v,
Args &&...  args 
)

◆ each_pred_right_regular()

template<typename Pos , typename Visitor , typename... Args>
bool immer::detail::rbts::each_pred_right_regular ( Pos &&  p,
Visitor  v,
count_t  start,
Args &&...  args 
)

◆ each_pred_zip_regular()

template<typename Pos , typename Visitor , typename... Args>
bool immer::detail::rbts::each_pred_zip_regular ( Pos &&  p,
Visitor  v,
node_type< Pos > *  other,
Args &&...  args 
)

◆ each_regular()

template<typename Pos , typename Visitor , typename... Args>
void immer::detail::rbts::each_regular ( Pos &&  p,
Visitor  v,
Args &&...  args 
)

◆ each_right_regular()

template<typename Pos , typename Visitor , typename... Args>
void immer::detail::rbts::each_right_regular ( Pos &&  p,
Visitor  v,
count_t  start,
Args &&...  args 
)

◆ last_oh_regular()

template<typename Pos , typename Visitor , typename... Args>
decltype(auto) immer::detail::rbts::last_oh_regular ( Pos &&  p,
Visitor  v,
count_t  offset_hint,
Args &&...  args 
)

◆ make_empty_leaf_pos()

template<typename NodeT >
empty_leaf_pos<NodeT> immer::detail::rbts::make_empty_leaf_pos ( NodeT *  node)

◆ make_empty_regular_pos()

◆ make_full_leaf_pos()

◆ make_full_pos()

◆ make_leaf_descent_pos()

◆ make_leaf_pos()

template<typename NodeT >
leaf_pos<NodeT> immer::detail::rbts::make_leaf_pos ( NodeT *  node,
size_t  size 
)

◆ make_leaf_sub_pos()

template<typename NodeT >
leaf_sub_pos<NodeT> immer::detail::rbts::make_leaf_sub_pos ( NodeT *  node,
count_t  count 
)

Definition at line 145 of file position.hpp.

References count.

Referenced by dec_leaf(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::drop_mut(), immer::detail::rbts::relaxed_pos< NodeT >::each_i(), immer::detail::rbts::relaxed_pos< NodeT >::each_left(), immer::detail::rbts::relaxed_pos< NodeT >::each_pred(), immer::detail::rbts::relaxed_pos< NodeT >::each_pred_i(), immer::detail::rbts::relaxed_pos< NodeT >::each_pred_left(), immer::detail::rbts::relaxed_pos< NodeT >::each_pred_right(), immer::detail::rbts::relaxed_pos< NodeT >::each_right(), immer::detail::rbts::regular_sub_pos< NodeT >::each_right_sub_(), immer::detail::rbts::concat_center_pos< Node >::each_sub(), immer::detail::rbts::rbtree< T, MemoryPolicy, B, BL >::equals(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::equals(), immer::detail::rbts::regular_sub_pos< NodeT >::first_sub(), immer::detail::rbts::relaxed_pos< NodeT >::first_sub(), immer::detail::rbts::regular_sub_pos< NodeT >::first_sub_leaf(), immer::detail::rbts::relaxed_pos< NodeT >::first_sub_leaf(), immer::detail::rbts::relaxed_pos< NodeT >::last_oh_csh(), immer::detail::rbts::singleton_regular_sub_pos< NodeT >::last_sub(), immer::detail::rbts::regular_sub_pos< NodeT >::last_sub(), immer::detail::rbts::relaxed_pos< NodeT >::last_sub(), immer::detail::rbts::regular_sub_pos< NodeT >::nth_sub(), immer::detail::rbts::relaxed_pos< NodeT >::nth_sub(), immer::detail::rbts::regular_sub_pos< NodeT >::nth_sub_leaf(), immer::detail::rbts::relaxed_pos< NodeT >::nth_sub_leaf(), towards_sub_oh_regular(), immer::detail::rbts::relaxed_pos< NodeT >::towards_sub_oh_sbh(), immer::detail::rbts::rbtree< T, MemoryPolicy, B, BL >::traverse(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::traverse(), immer::detail::rbts::rbtree< T, MemoryPolicy, B, BL >::traverse_p(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::traverse_p(), immer::detail::rbts::rbtree< T, MemoryPolicy, B, BL >::update(), and immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::update().

◆ make_regular_pos()

template<typename NodeT >
regular_pos<NodeT> immer::detail::rbts::make_regular_pos ( NodeT *  node,
shift_t  shift,
size_t  size 
)

◆ make_regular_sub_pos()

◆ make_relaxed_pos()

template<typename NodeT >
relaxed_pos<NodeT> immer::detail::rbts::make_relaxed_pos ( NodeT *  node,
shift_t  shift,
typename NodeT::relaxed_t *  relaxed 
)

◆ make_singleton_regular_sub_pos()

template<typename NodeT >
auto immer::detail::rbts::make_singleton_regular_sub_pos ( NodeT *  leaf,
count_t  count 
)

Definition at line 711 of file position.hpp.

References count.

Referenced by concat_trees(), and concat_trees_mut().

◆ towards_oh_ch_regular()

◆ towards_sub_oh_regular()

template<typename Pos , typename Visitor , typename... Args>
decltype(auto) immer::detail::rbts::towards_sub_oh_regular ( Pos &&  p,
Visitor  v,
size_t  idx,
count_t  offset_hint,
Args &&...  args 
)

◆ visit_maybe_relaxed_descent()

template<typename NodeT , typename Visitor , typename... Args>
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_descent ( NodeT *  node,
shift_t  shift,
Visitor  v,
size_t  idx 
)

◆ visit_maybe_relaxed_sub()

template<typename NodeT , typename Visitor , typename... Args>
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub ( NodeT *  node,
shift_t  shift,
size_t  size,
Visitor  v,
Args &&...  args 
)

Definition at line 1698 of file position.hpp.

References make_regular_sub_pos(), make_relaxed_pos(), and immer::detail::rbts::node< T, MemoryPolicy, B, BL >::relaxed().

Referenced by concat_trees(), concat_trees_mut(), dec_inner(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::drop(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::drop_mut(), immer::detail::rbts::relaxed_pos< NodeT >::each_i(), immer::detail::rbts::relaxed_pos< NodeT >::each_left(), immer::detail::rbts::relaxed_pos< NodeT >::each_pred(), immer::detail::rbts::relaxed_pos< NodeT >::each_pred_i(), immer::detail::rbts::relaxed_pos< NodeT >::each_pred_left(), immer::detail::rbts::relaxed_pos< NodeT >::each_pred_right(), immer::detail::rbts::relaxed_pos< NodeT >::each_right(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::equals(), immer::detail::rbts::relaxed_pos< NodeT >::first_sub(), immer::detail::rbts::relaxed_pos< NodeT >::first_sub_inner(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::get_mut(), immer::detail::rbts::relaxed_pos< NodeT >::last_oh_csh(), immer::detail::rbts::relaxed_pos< NodeT >::last_sub(), immer::detail::rbts::relaxed_pos< NodeT >::nth_sub(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::region_for(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::take(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::take_mut(), immer::detail::rbts::relaxed_pos< NodeT >::towards_sub_oh_sbh(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::traverse(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::traverse_p(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::update(), immer::detail::rbts::equals_visitor::rrb::visit_node(), immer::detail::rbts::concat_trees_left_visitor< Node >::visit_node(), and immer::detail::rbts::concat_trees_left_mut_visitor< Node >::visit_node().

◆ visit_regular_descent()

template<typename NodeT , typename Visitor >
decltype(auto) immer::detail::rbts::visit_regular_descent ( NodeT *  node,
shift_t  shift,
Visitor  v,
size_t  idx 
)

Variable Documentation

◆ bits

◆ bits_leaf

template<typename Pos >
constexpr auto immer::detail::rbts::bits_leaf = std::decay_t<Pos>::node_t::bits_leaf

◆ branches

template<bits_t B, typename T = count_t>
constexpr T immer::detail::rbts::branches = T{1} << B

◆ derive_bits_leaf

template<typename T , typename MP , bits_t B>
constexpr bits_t immer::detail::rbts::derive_bits_leaf = derive_bits_leaf_aux<T, MP, B>()

Definition at line 938 of file node.hpp.

◆ endshift

template<bits_t B, bits_t BL>
constexpr shift_t immer::detail::rbts::endshift = shift_t{BL} - shift_t{B}

Definition at line 29 of file bits.hpp.

◆ is_relaxed_v

template<typename Pos >
constexpr auto immer::detail::rbts::is_relaxed_v = is_relaxed<Pos>::value

Definition at line 1684 of file position.hpp.

◆ mask

template<bits_t B, typename T = size_t>
constexpr T immer::detail::rbts::mask = branches<B, T> - 1

Definition at line 26 of file bits.hpp.

Released under the MIT license