C++ Essence Library 0.1.0
A Utility Library for Modern C++ Programming
Loading...
Searching...
No Matches
essence::atomic_readable_buffer< T > Class Template Reference

A safe buffer that can be atomically replaced and read. More...

#include <atomic_readable_buffer.hpp>

Public Types

using allocator_traits_type = std::allocator_traits<std::pmr::polymorphic_allocator<T>>
 

Public Member Functions

 atomic_readable_buffer (std::pmr::memory_resource *resource=std::pmr::new_delete_resource())
 Constructs the object with a PMR resource.
 
void reset ()
 Resets the buffer.
 
template<std::ranges::forward_range Range>
requires (std::convertible_to<std::ranges::range_value_t<Range>, T> && std::ranges::sized_range<Range>)
void update (Range &&range)
 Updated the entire buffer.
 
std::pair< std::shared_ptr< T >, std::size_t > get () const
 Retrieves the current buffer.
 

Detailed Description

template<std::default_initializable T>
class essence::atomic_readable_buffer< T >

A safe buffer that can be atomically replaced and read.

Template Parameters
TThe element type of the buffer.

Constructor & Destructor Documentation

◆ atomic_readable_buffer()

template<std::default_initializable T>
essence::atomic_readable_buffer< T >::atomic_readable_buffer ( std::pmr::memory_resource * resource = std::pmr::new_delete_resource())
inlineexplicit

Constructs the object with a PMR resource.

Parameters
resourceThe PMR resource.

Member Function Documentation

◆ get()

template<std::default_initializable T>
std::pair< std::shared_ptr< T >, std::size_t > essence::atomic_readable_buffer< T >::get ( ) const
inline

Retrieves the current buffer.

Returns
The current buffer.

◆ update()

template<std::default_initializable T>
template<std::ranges::forward_range Range>
requires (std::convertible_to<std::ranges::range_value_t<Range>, T> && std::ranges::sized_range<Range>)
void essence::atomic_readable_buffer< T >::update ( Range && range)
inline

Updated the entire buffer.

Template Parameters
RangeThe type of the input range.
Parameters
rangeThe input range.

The documentation for this class was generated from the following file: