jaulib v1.3.0
Jau Support Library (C++, Java, ..)
Classes | Namespaces | Functions
cow_darray.hpp File Reference
#include <cstring>
#include <string>
#include <cstdint>
#include <limits>
#include <atomic>
#include <memory>
#include <mutex>
#include <condition_variable>
#include <algorithm>
#include <jau/cpp_lang_util.hpp>
#include <jau/debug.hpp>
#include <jau/darray.hpp>
#include <jau/basic_types.hpp>
#include <jau/ordered_atomic.hpp>
#include <jau/cow_iterator.hpp>
#include <jau/callocator.hpp>
Include dependency graph for cow_darray.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

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...
 

Namespaces

namespace  jau
 __pack(...): Produces MSVC, clang and gcc compatible lead-in and -out macros.
 

Functions

template<typename First , typename... Next>
constexpr cow_darray< First > jau::make_cow_darray (First &&arg1)
 Complement constructor for cow_darray<T> instance, move semantics initializer for one argument. More...
 
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<T> instance, initialized by move semantics from the variadic (template pack) argument list. More...
 
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 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 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 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 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 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 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 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