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

cow_darray::push_back_list()

make_cow_darray()

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

darray::push_back_list()

make_darray()

Definition at line 1909 of file darray.hpp.