jaulib v1.3.6
Jau Support Library (C++, Java, ..)
Loading...
Searching...
No Matches
cow_iterator.hpp File Reference
#include <mutex>
#include <type_traits>
#include <jau/cpp_lang_util.hpp>
#include <jau/debug.hpp>
#include <jau/basic_types.hpp>
Include dependency graph for cow_iterator.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

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

Namespaces

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

Functions

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