Gamp: Data Structures (original) (raw)
Classes
class
jau::cow_darray< Value_type, Size_type, Alloc_type, use_memmove, use_secmem >
Implementation of a Copy-On-Write (CoW) using jau::darray as the underlying storage, exposing lock-free read operations using SC-DRF atomic synchronization. More...
class
jau::cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container >
Implementation of a Copy-On-Write (CoW) read-onlu iterator over immutable value_type storage. More...
class
jau::cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container >
Implementation of a Copy-On-Write (CoW) read-write iterator over mutable value_type storage. More...
class
jau::cow_vector< Value_type, Alloc_type >
Implementation of a Copy-On-Write (CoW) using std::vector as the underlying storage, exposing lock-free read operations using SC-DRF atomic synchronization. More...
class
jau::darray< Value_type, Size_type, Alloc_type, use_memmove, use_secmem >
Implementation of a dynamic linear array storage, aka vector, including relative positional access. More...
class
jau::darray_sorted< Value_type, Size_type, Alloc_type, use_memmove, use_secmem >
Extension to darray resulting in a sorted darray via insert(). More...
struct
jau::is_cow_type< class, class >
template< class T > is_cow_type<T>::value compile-time Type Trait, determining whether the given template class is a CoW type, e.g. More...
struct
jau::is_cow_type< T, std::void_t< typename T::cow_container_t > >
template< class T > is_cow_type<T>::value compile-time Type Trait, determining whether the given template class is a CoW type, e.g. More...
struct
jau::is_darray_type< class, class >
template< class T > [is_darray_type](structjau%5F1%5F1is%5F%5Fdarray%5F%5Ftype.html "template< class T > is_darray_type<T>::value compile-time Type Trait, determining whether the given t...")<T>::value compile-time Type Trait, determining whether the given template class is a - or has a darray type, e.g. More...
struct
jau::is_darray_type< T, std::void_t< typename T::darray_tag > >
template< class T > [is_darray_type](structjau%5F1%5F1is%5F%5Fdarray%5F%5Ftype.html "template< class T > is_darray_type<T>::value compile-time Type Trait, determining whether the given t...")<T>::value compile-time Type Trait, determining whether the given template class is a - or has a darray type, e.g. More...
class
jau::ringbuffer< Value_type, Size_type, use_memmove, use_memcpy, use_secmem >
Ring buffer implementation, a.k.a circular buffer, exposing lock-free [get*(..)](classjau%5F1%5F1ringbuffer.html#a4be8f532485065af5f5e53d447974715) and put*(..) methods. More...
Functions
template<typename First, typename... Next>
constexpr cow_darray< First >
jau::make_cow_darray (First &&arg1)
Complement constructor for cow_darray instance, move semantics initializer for one argument.
template<typename First, typename... Next, std::enable_if_t< std::conjunction_v< std::is_same< First, Next >... >, bool > = true>
constexpr cow_darray< First >
jau::make_cow_darray (First &&arg1, Next &&... argsN)
Construct a cow_darray instance, initialized by move semantics from the variadic (template pack) argument list.
template<typename First, typename... Next>
constexpr darray< First >
jau::make_darray (First &&arg1)
Complement constructor for darray instance, move semantics initializer for one argument.
template<typename First, typename... Next, std::enable_if_t< std::conjunction_v< std::is_same< First, Next >... >, bool > = true>
constexpr darray< First >
jau::make_darray (First &&arg1, Next &&... argsN)
Construct a darray instance, initialized by move semantics from the variadic (template pack) argument list.
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator!= (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator!= (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator!= (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Value_type, typename Alloc_type>
bool
jau::operator!= (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator!= (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr Storage_type::difference_type
jau::operator- (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr Storage_type::difference_type
jau::operator- (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator< (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator< (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator< (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Value_type, typename Alloc_type>
bool
jau::operator< (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator< (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Value_type, typename Size_type, typename Alloc_type>
std::ostream &
jau::operator<< (std::ostream &out, const cow_darray< Value_type, Size_type, Alloc_type > &c)
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
std::ostream &
jau::operator<< (std::ostream &out, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &c)
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
std::ostream &
jau::operator<< (std::ostream &out, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &c)
template<typename Value_type, typename Alloc_type>
std::ostream &
jau::operator<< (std::ostream &out, const cow_vector< Value_type, Alloc_type > &c)
template<typename Value_type, typename Size_type, typename Alloc_type>
std::ostream &
jau::operator<< (std::ostream &out, const darray< Value_type, Size_type, Alloc_type > &c)
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator<= (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator<= (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator<= (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Value_type, typename Alloc_type>
bool
jau::operator<= (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator<= (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator== (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator== (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator== (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Value_type, typename Alloc_type>
bool
jau::operator== (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator== (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator> (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator> (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator> (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Value_type, typename Alloc_type>
bool
jau::operator> (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator> (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator>= (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator>= (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Storage_type, typename Storage_ref_type, typename CoW_container>
constexpr bool
jau::operator>= (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
template<typename Value_type, typename Alloc_type>
bool
jau::operator>= (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
template<typename Value_type, typename Size_type, typename Alloc_type>
bool
jau::operator>= (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
template<typename Value_type, typename Size_type, typename Alloc_type>
void
jau::swap (cow_darray< Value_type, Size_type, Alloc_type > &rhs, cow_darray< Value_type, Size_type, Alloc_type > &lhs) noexcept
template<typename Value_type, typename Alloc_type>
void
jau::swap (cow_vector< Value_type, Alloc_type > &rhs, cow_vector< Value_type, Alloc_type > &lhs) noexcept
template<typename Value_type, typename Size_type, typename Alloc_type>
void
jau::swap (darray< Value_type, Size_type, Alloc_type > &rhs, darray< Value_type, Size_type, Alloc_type > &lhs) noexcept
Data structures, notably.
template<typename First, typename... Next, std::enable_if_t< std::conjunction_v< std::is_same< First, Next >... >, bool > = true>
| cow_darray< First > jau::make_cow_darray ( First && arg1, Next &&... argsN ) | constexpr |
|---|
Construct a cow_darray instance, initialized by move semantics from the variadic (template pack) argument list.
std::initializer_list enforces to copy the created instances into the container, since its iterator references to const value_type.
This alternative template passes the r-value argument references to cow_darray::push_back_list(), hence using std::move without copying semantics.
All argument types must be of same type, i.e. std::is_same. The deduced darray instance also uses same type as its Value_type.
Template Parameters
| First | the first argument type, must be same |
|---|---|
| Next | all other argument types, must be same |
param arg1 the first r-value
Parameters
Returns
the new [cow_darray](classjau%5F1%5F1cow%5F%5Fdarray.html "Implementation of a Copy-On-Write (CoW) using jau::darray as the underlying storage,...")
See also
Definition at line 1187 of file cow_darray.hpp.
template<typename First, typename... Next, std::enable_if_t< std::conjunction_v< std::is_same< First, Next >... >, bool > = true>
| darray< First > jau::make_darray ( First && arg1, Next &&... argsN ) | constexpr |
|---|
Construct a darray instance, initialized by move semantics from the variadic (template pack) argument list.
std::initializer_list enforces to copy the created instances into the container, since its iterator references to const value_type.
This alternative template passes the r-value argument references to darray::push_back_list(), hence using std::move without copying semantics.
All argument types must be of same type, i.e. std::is_same. The deduced darray instance also uses same type as its Value_type.
Template Parameters
| First | the first argument type, must be same |
|---|---|
| Next | all other argument types, must be same |
param arg1 the first r-value
Parameters
Returns
the new darray
See also
Definition at line 1909 of file darray.hpp.