Dash Core Source Documentation (0.16.0.1)

Find detailed information regarding the Dash Core source code.

immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B > Struct Template Reference

#include <node.hpp>

Classes

struct  collision_t
 
union  data_t
 
struct  impl_data_t
 
struct  inner_t
 
struct  values_data_t
 

Public Types

enum  kind_t { kind_t::collision, kind_t::inner }
 
using node_t = node
 
using memory = MemoryPolicy
 
using heap_policy = typename memory::heap
 
using heap = typename heap_policy::type
 
using transience = typename memory::transience_t
 
using refs_t = typename memory::refcount
 
using ownee_t = typename transience::ownee
 
using edit_t = typename transience::edit
 
using value_t = T
 
using bitmap_t = typename get_bitmap_type< B >::type
 
using values_t = combine_standard_layout_t< values_data_t, refs_t >
 
using impl_t = combine_standard_layout_t< impl_data_t, refs_t >
 

Public Member Functions

kind_t kind () const
 
auto values ()
 
auto values () const
 
auto children ()
 
auto children () const
 
auto datamap () const
 
auto nodemap () const
 
auto collision_count () const
 
T * collisions ()
 
const T * collisions () const
 
node_tinc ()
 
const node_tinc () const
 
bool dec () const
 
void dec_unsafe () const
 

Static Public Member Functions

static constexpr std::size_t sizeof_values_n (count_t count)
 
static constexpr std::size_t sizeof_collision_n (count_t count)
 
static constexpr std::size_t sizeof_inner_n (count_t count)
 
static refs_trefs (const values_t *x)
 
static const ownee_townee (const values_t *x)
 
static ownee_townee (values_t *x)
 
static refs_trefs (const node_t *x)
 
static const ownee_townee (const node_t *x)
 
static ownee_townee (node_t *x)
 
static node_tmake_inner_n (count_t n)
 
static node_tmake_inner_n (count_t n, values_t *values)
 
static node_tmake_inner_n (count_t n, count_t nv)
 
static node_tmake_inner_n (count_t n, count_t idx, node_t *child)
 
static node_tmake_inner_n (count_t n, bitmap_t bitmap, T x)
 
static node_tmake_inner_n (count_t n, count_t idx1, T x1, count_t idx2, T x2)
 
static node_tmake_collision_n (count_t n)
 
static node_tmake_collision (T v1, T v2)
 
static node_tcopy_collision_insert (node_t *src, T v)
 
static node_tcopy_collision_remove (node_t *src, T *v)
 
static node_tcopy_collision_replace (node_t *src, T *pos, T v)
 
static node_tcopy_inner_replace (node_t *src, count_t offset, node_t *child)
 
static node_tcopy_inner_replace_value (node_t *src, count_t offset, T v)
 
static node_tcopy_inner_replace_merged (node_t *src, bitmap_t bit, count_t voffset, node_t *node)
 
static node_tcopy_inner_replace_inline (node_t *src, bitmap_t bit, count_t noffset, T value)
 
static node_tcopy_inner_remove_value (node_t *src, bitmap_t bit, count_t voffset)
 
static node_tcopy_inner_insert_value (node_t *src, bitmap_t bit, T v)
 
static node_tmake_merged (shift_t shift, T v1, hash_t hash1, T v2, hash_t hash2)
 
static void inc_nodes (node_t **p, count_t n)
 
static void delete_values (values_t *p, count_t n)
 
static void delete_inner (node_t *p)
 
static void delete_collision (node_t *p)
 
static void delete_deep (node_t *p, shift_t s)
 
static void delete_deep_shift (node_t *p, shift_t s)
 
static void deallocate_values (values_t *p, count_t n)
 
static void deallocate_collision (node_t *p, count_t n)
 
static void deallocate_inner (node_t *p, count_t n)
 
static void deallocate_inner (node_t *p, count_t n, count_t nv)
 

Public Attributes

impl_t impl
 

Detailed Description

template<typename T, typename Hash, typename Equal, typename MemoryPolicy, bits_t B>
struct immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >

Definition at line 32 of file node.hpp.

Member Typedef Documentation

◆ bitmap_t

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::bitmap_t = typename get_bitmap_type<B>::type

Definition at line 44 of file node.hpp.

◆ edit_t

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::edit_t = typename transience::edit

Definition at line 42 of file node.hpp.

◆ heap

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::heap = typename heap_policy::type

Definition at line 38 of file node.hpp.

◆ heap_policy

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::heap_policy = typename memory::heap

Definition at line 37 of file node.hpp.

◆ impl_t

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::impl_t = combine_standard_layout_t< impl_data_t, refs_t>

Definition at line 89 of file node.hpp.

◆ memory

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::memory = MemoryPolicy

Definition at line 36 of file node.hpp.

◆ node_t

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::node_t = node

Definition at line 34 of file node.hpp.

◆ ownee_t

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::ownee_t = typename transience::ownee

Definition at line 41 of file node.hpp.

◆ refs_t

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::refs_t = typename memory::refcount

Definition at line 40 of file node.hpp.

◆ transience

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::transience = typename memory::transience_t

Definition at line 39 of file node.hpp.

◆ value_t

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::value_t = T

Definition at line 43 of file node.hpp.

◆ values_t

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
using immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::values_t = combine_standard_layout_t< values_data_t, refs_t>

Definition at line 64 of file node.hpp.

Member Enumeration Documentation

◆ kind_t

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
enum immer::detail::hamts::node::kind_t
strong
Enumerator
collision 
inner 

Definition at line 46 of file node.hpp.

Member Function Documentation

◆ children() [1/2]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
auto immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::children ( )
inline

Definition at line 132 of file node.hpp.

References immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::impl, immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::inner, and immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::kind().

Referenced by immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_insert_value(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_remove_value(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace_inline(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace_merged(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace_value(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::delete_deep(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::delete_deep_shift(), immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::do_add(), immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::do_sub(), immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::do_update(), immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::equals_tree(), immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::for_each_chunk_traversal(), and immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::get().

◆ children() [2/2]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
auto immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::children ( ) const
inline

◆ collision_count()

◆ collisions() [1/2]

◆ collisions() [2/2]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
const T* immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::collisions ( ) const
inline

◆ copy_collision_insert()

◆ copy_collision_remove()

◆ copy_collision_replace()

◆ copy_inner_insert_value()

◆ copy_inner_remove_value()

◆ copy_inner_replace()

◆ copy_inner_replace_inline()

◆ copy_inner_replace_merged()

◆ copy_inner_replace_value()

◆ datamap()

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
auto immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::datamap ( ) const
inline

◆ deallocate_collision()

◆ deallocate_inner() [1/2]

◆ deallocate_inner() [2/2]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static void immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::deallocate_inner ( node_t p,
count_t  n,
count_t  nv 
)
inlinestatic

◆ deallocate_values()

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static void immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::deallocate_values ( values_t p,
count_t  n 
)
inlinestatic

◆ dec()

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
bool immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::dec ( ) const
inline

◆ dec_unsafe()

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
void immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::dec_unsafe ( ) const
inline

◆ delete_collision()

◆ delete_deep()

◆ delete_deep_shift()

◆ delete_inner()

◆ delete_values()

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static void immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::delete_values ( values_t p,
count_t  n 
)
inlinestatic

◆ inc() [1/2]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
node_t* immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::inc ( )
inline

◆ inc() [2/2]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
const node_t* immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::inc ( ) const
inline

◆ inc_nodes()

◆ kind()

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
kind_t immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::kind ( ) const
inline

Definition at line 112 of file node.hpp.

References immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::impl.

Referenced by immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::children(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::collision_count(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::collisions(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_collision_insert(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_collision_remove(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_collision_replace(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_insert_value(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_remove_value(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace_inline(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace_merged(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace_value(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::datamap(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::delete_collision(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::delete_inner(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::nodemap(), and immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::values().

◆ make_collision()

◆ make_collision_n()

◆ make_inner_n() [1/6]

◆ make_inner_n() [2/6]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static node_t* immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::make_inner_n ( count_t  n,
values_t values 
)
inlinestatic

◆ make_inner_n() [3/6]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static node_t* immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::make_inner_n ( count_t  n,
count_t  nv 
)
inlinestatic

◆ make_inner_n() [4/6]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static node_t* immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::make_inner_n ( count_t  n,
count_t  idx,
node_t child 
)
inlinestatic

◆ make_inner_n() [5/6]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static node_t* immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::make_inner_n ( count_t  n,
bitmap_t  bitmap,
x 
)
inlinestatic

◆ make_inner_n() [6/6]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static node_t* immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::make_inner_n ( count_t  n,
count_t  idx1,
x1,
count_t  idx2,
x2 
)
inlinestatic

◆ make_merged()

◆ nodemap()

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
auto immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::nodemap ( ) const
inline

Definition at line 150 of file node.hpp.

References immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::impl, immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::inner, and immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::kind().

Referenced by immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_insert_value(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_remove_value(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace_inline(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace_merged(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::copy_inner_replace_value(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::delete_deep(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::delete_deep_shift(), immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::delete_inner(), immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::do_add(), immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::do_sub(), immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::do_update(), immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::equals_tree(), immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::for_each_chunk_traversal(), and immer::detail::hamts::champ< value_t, hash_key, equal_key, MemoryPolicy, B >::get().

◆ ownee() [1/4]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static const ownee_t& immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::ownee ( const values_t x)
inlinestatic

Definition at line 175 of file node.hpp.

◆ ownee() [2/4]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static ownee_t& immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::ownee ( values_t x)
inlinestatic

Definition at line 176 of file node.hpp.

◆ ownee() [3/4]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static const ownee_t& immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::ownee ( const node_t x)
inlinestatic

◆ ownee() [4/4]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static ownee_t& immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::ownee ( node_t x)
inlinestatic

◆ refs() [1/2]

◆ refs() [2/2]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static refs_t& immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::refs ( const node_t x)
inlinestatic

◆ sizeof_collision_n()

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static constexpr std::size_t immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::sizeof_collision_n ( count_t  count)
inlinestatic

◆ sizeof_inner_n()

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static constexpr std::size_t immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::sizeof_inner_n ( count_t  count)
inlinestatic

◆ sizeof_values_n()

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
static constexpr std::size_t immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::sizeof_values_n ( count_t  count)
inlinestatic

◆ values() [1/2]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
auto immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::values ( )
inline

◆ values() [2/2]

template<typename T , typename Hash , typename Equal , typename MemoryPolicy , bits_t B>
auto immer::detail::hamts::node< T, Hash, Equal, MemoryPolicy, B >::values ( ) const
inline

Member Data Documentation

◆ impl


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