Dash Core Source Documentation (0.16.0.1)

Find detailed information regarding the Dash Core source code.

immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL > Struct Template Reference

#include <rrbtree.hpp>

+ Collaboration diagram for immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >:

Public Types

using node_t = node< T, MemoryPolicy, B, BL >
 
using edit_t = typename node_t::edit_t
 
using owner_t = typename MemoryPolicy::transience_t::owner
 

Public Member Functions

 rrbtree (size_t sz, shift_t sh, node_t *r, node_t *t)
 
 rrbtree (const rrbtree &other)
 
 rrbtree (rrbtree &&other)
 
rrbtreeoperator= (const rrbtree &other)
 
rrbtreeoperator= (rrbtree &&other)
 
 ~rrbtree ()
 
void inc () const
 
void dec () const
 
auto tail_size () const
 
auto tail_offset () const
 
template<typename Visitor , typename... Args>
void traverse (Visitor v, Args &&... args) const
 
template<typename Visitor , typename... Args>
void traverse (Visitor v, size_t first, size_t last, Args &&... args) const
 
template<typename Visitor , typename... Args>
bool traverse_p (Visitor v, Args &&... args) const
 
template<typename Visitor , typename... Args>
bool traverse_p (Visitor v, size_t first, size_t last, Args &&... args) const
 
template<typename Visitor >
decltype(auto) descend (Visitor v, size_t idx) const
 
template<typename Fn >
void for_each_chunk (Fn &&fn) const
 
template<typename Fn >
void for_each_chunk (size_t first, size_t last, Fn &&fn) const
 
template<typename Fn >
bool for_each_chunk_p (Fn &&fn) const
 
template<typename Fn >
bool for_each_chunk_p (size_t first, size_t last, Fn &&fn) const
 
bool equals (const rrbtree &other) const
 
std::tuple< shift_t, node_t * > push_tail (node_t *root, shift_t shift, size_t size, node_t *tail, count_t tail_size) const
 
void push_tail_mut (edit_t e, size_t tail_off, node_t *tail, count_t tail_size)
 
void ensure_mutable_tail (edit_t e, count_t n)
 
void push_back_mut (edit_t e, T value)
 
rrbtree push_back (T value) const
 
std::tuple< const T *, size_t, size_tregion_for (size_t idx) const
 
T & get_mut (edit_t e, size_t idx)
 
const T & get (size_t index) const
 
const T & get_check (size_t index) const
 
const T & front () const
 
const T & back () const
 
template<typename FnT >
void update_mut (edit_t e, size_t idx, FnT &&fn)
 
template<typename FnT >
rrbtree update (size_t idx, FnT &&fn) const
 
void assoc_mut (edit_t e, size_t idx, T value)
 
rrbtree assoc (size_t idx, T value) const
 
void take_mut (edit_t e, size_t new_size)
 
rrbtree take (size_t new_size) const
 
void drop_mut (edit_t e, size_t elems)
 
rrbtree drop (size_t elems) const
 
rrbtree concat (const rrbtree &r) const
 
void hard_reset ()
 
bool check_tree () const
 
bool check_tail () const
 
bool check_root () const
 

Static Public Member Functions

static const rrbtreeempty ()
 
template<typename U >
static auto from_initializer_list (std::initializer_list< U > values)
 
template<typename Iter , typename Sent , std::enable_if_t< compatible_sentinel_v< Iter, Sent >, bool > = true>
static auto from_range (Iter first, Sent last)
 
static auto from_fill (size_t n, T v)
 

Public Attributes

size_t size
 
shift_t shift
 
node_troot
 
node_ttail
 

Static Public Attributes

static constexpr bool supports_transient_concat
 

Friends

void swap (rrbtree &x, rrbtree &y)
 
void concat_mut_l (rrbtree &l, edit_t el, const rrbtree &r)
 
void concat_mut_r (const rrbtree &l, rrbtree &r, edit_t er)
 
void concat_mut_lr_l (rrbtree &l, edit_t el, rrbtree &r, edit_t er)
 
void concat_mut_lr_r (rrbtree &l, edit_t el, rrbtree &r, edit_t er)
 

Detailed Description

template<typename T, typename MemoryPolicy, bits_t B, bits_t BL>
struct immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >

Definition at line 36 of file rrbtree.hpp.

Member Typedef Documentation

◆ edit_t

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
using immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::edit_t = typename node_t::edit_t

Definition at line 39 of file rrbtree.hpp.

◆ node_t

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
using immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::node_t = node<T, MemoryPolicy, B, BL>

Definition at line 38 of file rrbtree.hpp.

◆ owner_t

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
using immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::owner_t = typename MemoryPolicy::transience_t::owner

Definition at line 40 of file rrbtree.hpp.

Constructor & Destructor Documentation

◆ rrbtree() [1/3]

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::rrbtree ( size_t  sz,
shift_t  sh,
node_t r,
node_t t 
)
inline

Definition at line 89 of file rrbtree.hpp.

◆ rrbtree() [2/3]

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::rrbtree ( const rrbtree< T, MemoryPolicy, B, BL > &  other)
inline

◆ rrbtree() [3/3]

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::rrbtree ( rrbtree< T, MemoryPolicy, B, BL > &&  other)
inline

◆ ~rrbtree()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::~rrbtree ( )
inline

Member Function Documentation

◆ assoc()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
rrbtree immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::assoc ( size_t  idx,
value 
) const
inline

◆ assoc_mut()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
void immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::assoc_mut ( edit_t  e,
size_t  idx,
value 
)
inline

◆ back()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
const T& immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::back ( ) const
inline

◆ check_root()

◆ check_tail()

◆ check_tree()

◆ concat()

◆ dec()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
void immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::dec ( ) const
inline

◆ descend()

◆ drop()

◆ drop_mut()

◆ empty()

◆ ensure_mutable_tail()

◆ equals()

◆ for_each_chunk() [1/2]

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
template<typename Fn >
void immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::for_each_chunk ( Fn &&  fn) const
inline

◆ for_each_chunk() [2/2]

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
template<typename Fn >
void immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::for_each_chunk ( size_t  first,
size_t  last,
Fn &&  fn 
) const
inline

◆ for_each_chunk_p() [1/2]

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
template<typename Fn >
bool immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::for_each_chunk_p ( Fn &&  fn) const
inline

◆ for_each_chunk_p() [2/2]

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
template<typename Fn >
bool immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::for_each_chunk_p ( size_t  first,
size_t  last,
Fn &&  fn 
) const
inline

◆ from_fill()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
static auto immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::from_fill ( size_t  n,
v 
)
inlinestatic

◆ from_initializer_list()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
template<typename U >
static auto immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::from_initializer_list ( std::initializer_list< U >  values)
inlinestatic

◆ from_range()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
template<typename Iter , typename Sent , std::enable_if_t< compatible_sentinel_v< Iter, Sent >, bool > = true>
static auto immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::from_range ( Iter  first,
Sent  last 
)
inlinestatic

◆ front()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
const T& immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::front ( ) const
inline

Definition at line 483 of file rrbtree.hpp.

Referenced by immer::flex_vector< T, MemoryPolicy, B, BL >::front().

◆ get()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
const T& immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::get ( size_t  index) const
inline

◆ get_check()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
const T& immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::get_check ( size_t  index) const
inline

◆ get_mut()

◆ hard_reset()

◆ inc()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
void immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::inc ( ) const
inline

◆ operator=() [1/2]

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
rrbtree& immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::operator= ( const rrbtree< T, MemoryPolicy, B, BL > &  other)
inline

◆ operator=() [2/2]

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
rrbtree& immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::operator= ( rrbtree< T, MemoryPolicy, B, BL > &&  other)
inline

◆ push_back()

◆ push_back_mut()

◆ push_tail()

◆ push_tail_mut()

◆ region_for()

◆ tail_offset()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
auto immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::tail_offset ( ) const
inline

◆ tail_size()

◆ take()

◆ take_mut()

◆ traverse() [1/2]

◆ traverse() [2/2]

◆ traverse_p() [1/2]

◆ traverse_p() [2/2]

◆ update()

◆ update_mut()

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
template<typename FnT >
void immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::update_mut ( edit_t  e,
size_t  idx,
FnT &&  fn 
)
inline

Friends And Related Function Documentation

◆ concat_mut_l

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
void concat_mut_l ( rrbtree< T, MemoryPolicy, B, BL > &  l,
edit_t  el,
const rrbtree< T, MemoryPolicy, B, BL > &  r 
)
friend

Definition at line 729 of file rrbtree.hpp.

◆ concat_mut_lr_l

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
void concat_mut_lr_l ( rrbtree< T, MemoryPolicy, B, BL > &  l,
edit_t  el,
rrbtree< T, MemoryPolicy, B, BL > &  r,
edit_t  er 
)
friend

Definition at line 942 of file rrbtree.hpp.

◆ concat_mut_lr_r

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
void concat_mut_lr_r ( rrbtree< T, MemoryPolicy, B, BL > &  l,
edit_t  el,
rrbtree< T, MemoryPolicy, B, BL > &  r,
edit_t  er 
)
friend

Definition at line 1050 of file rrbtree.hpp.

◆ concat_mut_r

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
void concat_mut_r ( const rrbtree< T, MemoryPolicy, B, BL > &  l,
rrbtree< T, MemoryPolicy, B, BL > &  r,
edit_t  er 
)
friend

Definition at line 827 of file rrbtree.hpp.

◆ swap

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
void swap ( rrbtree< T, MemoryPolicy, B, BL > &  x,
rrbtree< T, MemoryPolicy, B, BL > &  y 
)
friend

Member Data Documentation

◆ root

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
node_t* immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::root

◆ shift

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
shift_t immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::shift

◆ size

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
size_t immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::size

Definition at line 42 of file rrbtree.hpp.

Referenced by immer::detail::rbts::rrbtree_iterator< T, MP, B, BL >::advance(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::back(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::check_tree(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::concat(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::drop(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::drop_mut(), immer::flex_vector_transient< T, MemoryPolicy, B, BL >::empty(), immer::flex_vector< T, MemoryPolicy, B, BL >::empty(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::equals(), immer::flex_vector< T, MemoryPolicy, B, BL >::flex_vector(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::get_check(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::get_mut(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::hard_reset(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::push_back(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::push_back_mut(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::push_tail(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::region_for(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::rrbtree(), immer::flex_vector_transient< T, MemoryPolicy, B, BL >::size(), immer::flex_vector< T, MemoryPolicy, B, BL >::size(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::tail_offset(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::tail_size(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::take(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::take_mut(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::traverse(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::traverse_p(), and immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::update().

◆ supports_transient_concat

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
constexpr bool immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::supports_transient_concat
static
Initial value:
=
!std::is_empty<edit_t>::value

Definition at line 726 of file rrbtree.hpp.

Referenced by immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::hard_reset().

◆ tail

template<typename T , typename MemoryPolicy , bits_t B, bits_t BL>
node_t* immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::tail

Definition at line 45 of file rrbtree.hpp.

Referenced by immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::check_tail(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::concat(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::descend(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::drop(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::drop_mut(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::ensure_mutable_tail(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::equals(), immer::flex_vector< T, MemoryPolicy, B, BL >::flex_vector(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::get_mut(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::hard_reset(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::inc(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::push_back(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::push_back_mut(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::push_tail(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::push_tail_mut(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::region_for(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::rrbtree(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::take(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::take_mut(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::traverse(), immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::traverse_p(), and immer::detail::rbts::rrbtree< T, MemoryPolicy, B, BL >::update().


The documentation for this struct was generated from the following file:
Released under the MIT license