Dash Core Source Documentation (0.16.0.1)

Find detailed information regarding the Dash Core source code.

immer::detail Namespace Reference

Namespaces

 arrays
 
 csl
 
 dvektor
 
 hamts
 
 rbts
 
 swappable
 

Classes

struct  combine_standard_layout
 
struct  compatible_sentinel
 
struct  compatible_sentinel< T, U, std::enable_if_t< is_iterator_v< T > &&is_equality_comparable_v< T, U > &&is_inequality_comparable_v< T, U > > >
 
struct  constantly
 
struct  empty_t
 
struct  exact_t
 
struct  gc_atom_impl
 
struct  is_dereferenceable
 
struct  is_dereferenceable< T, void_t< decltype(*(std::declval< T & >()))> >
 
struct  is_equality_comparable
 
struct  is_equality_comparable< T, U, std::enable_if_t< std::is_same< bool, decltype(std::declval< T & >()==std::declval< U & >())>::value > >
 
struct  is_forward_iterator
 
struct  is_forward_iterator< T, std::enable_if_t< is_iterator_v< T > &&std::is_base_of< std::forward_iterator_tag, typename std::iterator_traits< T >::iterator_category >::value > >
 
struct  is_inequality_comparable
 
struct  is_inequality_comparable< T, U, std::enable_if_t< std::is_same< bool, decltype(std::declval< T & >() !=std::declval< U & >())>::value > >
 
struct  is_iterator
 
struct  is_iterator< T, void_t< std::enable_if_t< is_preincrementable_v< T > &&is_dereferenceable_v< T > &&std::is_copy_constructible< T >::value &&std::is_copy_assignable< T >::value &&std::is_destructible< T >::value &&is_swappable_v< T > >, typename std::iterator_traits< T >::value_type, typename std::iterator_traits< T >::difference_type, typename std::iterator_traits< T >::reference, typename std::iterator_traits< T >::pointer, typename std::iterator_traits< T >::iterator_category > >
 
struct  is_preincrementable
 
struct  is_preincrementable< T, std::enable_if_t< std::is_same< T &, decltype(++(std::declval< T & >()))>::value > >
 
struct  is_subtractable
 
struct  is_subtractable< T, U, void_t< decltype(std::declval< T & >() - std::declval< U & >())> >
 
struct  iterator_core_access
 
class  iterator_facade
 
struct  make_void
 
struct  not_supported_t
 
struct  ref_count_base
 
struct  refcount_atom_impl
 
struct  std_distance_supports
 
struct  std_distance_supports< T, U, void_t< decltype(std::distance(std::declval< T >(), std::declval< U >()))> >
 
struct  std_uninitialized_copy_supports
 
struct  std_uninitialized_copy_supports< T, U, V, void_t< decltype(std::uninitialized_copy(std::declval< T >(), std::declval< U >(), std::declval< V >()))> >
 
struct  thread_local_free_list_storage
 
class  unsafe_free_list_heap_impl
 
struct  unsafe_free_list_storage
 

Typedefs

template<typename... Ts>
using combine_standard_layout_t = typename combine_standard_layout< Ts... >::type
 
template<typename... Ts>
using void_t = typename make_void< Ts... >::type
 
template<typename T , typename U >
using is_swappable_with = swappable::with< T, U >
 
template<typename T >
using is_swappable = is_swappable_with< T, T >
 
template<typename T >
using aligned_storage_for = typename std::aligned_storage< sizeof(T), alignof(T)>::type
 

Functions

template<typename T >
T & auto_const_cast (const T &x)
 
template<typename T >
T && auto_const_cast (const T &&x)
 
template<typename Iter1 , typename Iter2 >
auto uninitialized_move (Iter1 in1, Iter1 in2, Iter2 out)
 
template<class T >
void destroy (T *first, T *last)
 
template<class T , class Size >
void destroy_n (T *p, Size n)
 
template<typename Heap , typename T , typename... Args>
T * make (Args &&...args)
 
template<typename T >
constexpr auto clz_ (T) -> not_supported_t
 
constexpr auto clz_ (unsigned int x)
 
constexpr auto clz_ (unsigned long x)
 
constexpr auto clz_ (unsigned long long x)
 
template<typename T >
constexpr T log2_aux (T x, T r=0)
 
template<typename T >
constexpr auto log2 (T x) -> std::enable_if_t<!std::is_same< decltype(clz_(x)), not_supported_t >::value, T >
 
template<bool b, typename F >
auto static_if (F &&f) -> std::enable_if_t< b >
 
template<bool b, typename R = void, typename F1 , typename F2 >
auto static_if (F1 &&f1, F2 &&f2) -> std::enable_if_t< b, R >
 
template<typename Iterator , typename Sentinel , std::enable_if_t< detail::std_distance_supports_v< Iterator, Sentinel >, bool > = true>
std::iterator_traits< Iterator >::difference_type distance (Iterator first, Sentinel last)
 
template<typename Iterator , typename Sentinel , typename SinkIter , std::enable_if_t< detail::std_uninitialized_copy_supports_v< Iterator, Sentinel, SinkIter >, bool > = true>
SinkIter uninitialized_copy (Iterator first, Sentinel last, SinkIter d_first)
 
template<typename SourceIter , typename Sent , typename SinkIter , std::enable_if_t<(!detail::std_uninitialized_copy_supports_v< SourceIter, Sent, SinkIter >) &&detail::compatible_sentinel_v< SourceIter, Sent > &&detail::is_forward_iterator_v< SinkIter >, bool > = true>
SinkIter uninitialized_copy (SourceIter first, Sent last, SinkIter d_first)
 

Variables

template<typename T >
constexpr bool is_dereferenceable_v = is_dereferenceable<T>::value
 
template<typename T , typename U = T>
constexpr bool is_equality_comparable_v = is_equality_comparable<T, U>::value
 
template<typename T , typename U = T>
constexpr bool is_inequality_comparable_v
 
template<typename T >
constexpr bool is_preincrementable_v = is_preincrementable<T>::value
 
template<typename T , typename U = T>
constexpr bool is_subtractable_v = is_subtractable<T, U>::value
 
template<typename T >
constexpr bool is_swappable_v = is_swappable_with<T&, T&>::value
 
template<typename T >
constexpr bool is_iterator_v = is_iterator<T>::value
 
template<typename T , typename U >
constexpr bool compatible_sentinel_v = compatible_sentinel<T,U>::value
 
template<typename T >
constexpr bool is_forward_iterator_v = is_forward_iterator<T>::value
 
template<typename T , typename U >
constexpr bool std_distance_supports_v = std_distance_supports<T, U>::value
 
template<typename T , typename U , typename V >
constexpr bool std_uninitialized_copy_supports_v
 

Typedef Documentation

◆ aligned_storage_for

template<typename T >
using immer::detail::aligned_storage_for = typedef typename std::aligned_storage<sizeof(T), alignof(T)>::type

Definition at line 29 of file util.hpp.

◆ combine_standard_layout_t

template<typename... Ts>
using immer::detail::combine_standard_layout_t = typedef typename combine_standard_layout<Ts...>::type

Definition at line 46 of file combine_standard_layout.hpp.

◆ is_swappable

template<typename T >
using immer::detail::is_swappable = typedef is_swappable_with<T, T>

Definition at line 106 of file type_traits.hpp.

◆ is_swappable_with

template<typename T , typename U >
using immer::detail::is_swappable_with = typedef swappable::with<T, U>

Definition at line 103 of file type_traits.hpp.

◆ void_t

template<typename... Ts>
using immer::detail::void_t = typedef typename make_void<Ts...>::type

Definition at line 24 of file type_traits.hpp.

Function Documentation

◆ auto_const_cast() [1/2]

template<typename T >
T& immer::detail::auto_const_cast ( const T &  x)

◆ auto_const_cast() [2/2]

template<typename T >
T&& immer::detail::auto_const_cast ( const T &&  x)

Definition at line 34 of file util.hpp.

◆ clz_() [1/4]

template<typename T >
constexpr auto immer::detail::clz_ ( ) -> not_supported_t
inline

Definition at line 82 of file util.hpp.

References IMMER_UNREACHABLE.

Referenced by log2().

◆ clz_() [2/4]

constexpr auto immer::detail::clz_ ( unsigned int  x)
inline

Definition at line 88 of file util.hpp.

◆ clz_() [3/4]

constexpr auto immer::detail::clz_ ( unsigned long  x)
inline

Definition at line 89 of file util.hpp.

◆ clz_() [4/4]

constexpr auto immer::detail::clz_ ( unsigned long long  x)
inline

Definition at line 90 of file util.hpp.

◆ destroy()

template<class T >
void immer::detail::destroy ( T *  first,
T *  last 
)

◆ destroy_n()

◆ distance()

template<typename Iterator , typename Sentinel , std::enable_if_t< detail::std_distance_supports_v< Iterator, Sentinel >, bool > = true>
std::iterator_traits< Iterator >::difference_type immer::detail::distance ( Iterator  first,
Sentinel  last 
)

An alias to std::distance

Equivalent of the std::distance applied to the sentinel-delimited forward range $ [first, last) $

Equivalent of the std::distance applied to the sentinel-delimited random access range $ [first, last) $

Definition at line 141 of file util.hpp.

Referenced by immer::detail::arrays::no_capacity< T, MemoryPolicy >::from_range(), and immer::detail::arrays::with_capacity< T, MemoryPolicy >::from_range().

◆ log2()

template<typename T >
constexpr auto immer::detail::log2 ( x) -> std::enable_if_t<!std::is_same<decltype(clz_(x)), not_supported_t>::value, T>
inline

◆ log2_aux()

template<typename T >
constexpr T immer::detail::log2_aux ( x,
r = 0 
)
inline

Definition at line 94 of file util.hpp.

◆ make()

template<typename Heap , typename T , typename... Args>
T* immer::detail::make ( Args &&...  args)

Definition at line 60 of file util.hpp.

◆ static_if() [1/2]

template<bool b, typename F >
auto immer::detail::static_if ( F &&  f) -> std::enable_if_t<b>

Definition at line 114 of file util.hpp.

◆ static_if() [2/2]

template<bool b, typename R = void, typename F1 , typename F2 >
auto immer::detail::static_if ( F1 &&  f1,
F2 &&  f2 
) -> std::enable_if_t<b, R>

Definition at line 121 of file util.hpp.

◆ uninitialized_copy() [1/2]

template<typename Iterator , typename Sentinel , typename SinkIter , std::enable_if_t< detail::std_uninitialized_copy_supports_v< Iterator, Sentinel, SinkIter >, bool > = true>
SinkIter immer::detail::uninitialized_copy ( Iterator  first,
Sentinel  last,
SinkIter  d_first 
)

An alias to std::uninitialized_copy

Definition at line 192 of file util.hpp.

References uninitialized_copy().

Referenced by 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::rbts::node< T, MemoryPolicy, B, BL >::copy_inner(), 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::rbts::node< T, MemoryPolicy, B, BL >::copy_leaf(), immer::detail::rbts::node< T, MemoryPolicy, B, BL >::copy_leaf_e(), immer::detail::rbts::node< T, MemoryPolicy, B, BL >::copy_leaf_n(), immer::detail::arrays::node< T, MemoryPolicy >::copy_n(), immer::detail::rbts::node< T, MemoryPolicy, B, BL >::do_copy_inner(), immer::detail::rbts::concat_merger< Node >::merge_inner(), immer::detail::rbts::concat_merger< Node >::merge_leaf(), immer::detail::rbts::concat_merger_mut< Node >::merge_leaf(), immer::detail::rbts::slice_left_visitor< NodeT, Collapse >::visit_inner(), immer::detail::rbts::slice_left_mut_visitor< NodeT, Collapse, Mutating >::visit_regular(), and immer::detail::rbts::slice_left_mut_visitor< NodeT, Collapse, Mutating >::visit_relaxed().

◆ uninitialized_copy() [2/2]

template<typename SourceIter , typename Sent , typename SinkIter , std::enable_if_t<(!detail::std_uninitialized_copy_supports_v< SourceIter, Sent, SinkIter >) &&detail::compatible_sentinel_v< SourceIter, Sent > &&detail::is_forward_iterator_v< SinkIter >, bool > = true>
SinkIter immer::detail::uninitialized_copy ( SourceIter  first,
Sent  last,
SinkIter  d_first 
)

Equivalent of the std::uninitialized_copy applied to the sentinel-delimited forward range $ [first, last) $

Definition at line 206 of file util.hpp.

Referenced by uninitialized_copy(), and uninitialized_move().

◆ uninitialized_move()

template<typename Iter1 , typename Iter2 >
auto immer::detail::uninitialized_move ( Iter1  in1,
Iter1  in2,
Iter2  out 
)

Definition at line 37 of file util.hpp.

References uninitialized_copy().

Referenced by immer::detail::rbts::concat_merger_mut< Node >::merge_leaf().

Variable Documentation

◆ compatible_sentinel_v

template<typename T , typename U >
constexpr bool immer::detail::compatible_sentinel_v = compatible_sentinel<T,U>::value

Definition at line 148 of file type_traits.hpp.

◆ is_dereferenceable_v

template<typename T >
constexpr bool immer::detail::is_dereferenceable_v = is_dereferenceable<T>::value

Definition at line 34 of file type_traits.hpp.

◆ is_equality_comparable_v

template<typename T , typename U = T>
constexpr bool immer::detail::is_equality_comparable_v = is_equality_comparable<T, U>::value

Definition at line 47 of file type_traits.hpp.

◆ is_forward_iterator_v

template<typename T >
constexpr bool immer::detail::is_forward_iterator_v = is_forward_iterator<T>::value

Definition at line 163 of file type_traits.hpp.

◆ is_inequality_comparable_v

template<typename T , typename U = T>
constexpr bool immer::detail::is_inequality_comparable_v
Initial value:
=
is_inequality_comparable<T, U>::value

Definition at line 60 of file type_traits.hpp.

◆ is_iterator_v

template<typename T >
constexpr bool immer::detail::is_iterator_v = is_iterator<T>::value

Definition at line 134 of file type_traits.hpp.

◆ is_preincrementable_v

template<typename T >
constexpr bool immer::detail::is_preincrementable_v = is_preincrementable<T>::value

Definition at line 73 of file type_traits.hpp.

◆ is_subtractable_v

template<typename T , typename U = T>
constexpr bool immer::detail::is_subtractable_v = is_subtractable<T, U>::value

Definition at line 84 of file type_traits.hpp.

◆ is_swappable_v

template<typename T >
constexpr bool immer::detail::is_swappable_v = is_swappable_with<T&, T&>::value

Definition at line 109 of file type_traits.hpp.

◆ std_distance_supports_v

template<typename T , typename U >
constexpr bool immer::detail::std_distance_supports_v = std_distance_supports<T, U>::value

Definition at line 174 of file type_traits.hpp.

◆ std_uninitialized_copy_supports_v

template<typename T , typename U , typename V >
constexpr bool immer::detail::std_uninitialized_copy_supports_v
Initial value:
=
std_uninitialized_copy_supports<T, U, V>::value

Definition at line 187 of file type_traits.hpp.

Released under the MIT license