libdonut 2.3.6
Application framework for cross-platform game development in C++20
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | List of all members
donut::LinearBuffer< Ts > Class Template Reference

#include <donut/LinearBuffer.hpp>

Public Types

using index_type = std::conditional_t< sizeof...(Ts)< 255ull, std::uint8_t, std::conditional_t< sizeof...(Ts)< 65535ull, std::uint16_t, std::conditional_t< sizeof...(Ts)< 4294967295ull, std::uint32_t, std::uint64_t > > >
 

Public Member Functions

 LinearBuffer (LinearMemoryResource *memoryResource, std::size_t nextChunkSize=64) noexcept
 
template<typename T >
requires (!std::is_unbounded_array_v<T> && linear_buffer_has_alternative_v<T, LinearBuffer>)
void push_back (const T &value)
 
template<typename T , typename... Args>
requires (!std::is_unbounded_array_v<T> && linear_buffer_has_alternative_v<T, LinearBuffer> && std::is_constructible_v<T, Args...>)
void emplace_back (Args &&... args)
 
template<typename T >
requires (linear_buffer_has_alternative_v<T[], LinearBuffer>)
std::span< const T > append (std::span< const T > values)
 
template<typename Visitor >
auto visit (Visitor &&visitor) const
 

Static Public Attributes

static constexpr index_type npos = sizeof...(Ts)
 

Member Typedef Documentation

◆ index_type

template<typename... Ts>
using donut::LinearBuffer< Ts >::index_type = std::conditional_t<sizeof...(Ts) < 255ull, std::uint8_t, std::conditional_t<sizeof...(Ts) < 65535ull, std::uint16_t, std::conditional_t<sizeof...(Ts) < 4294967295ull, std::uint32_t, std::uint64_t> >>

Constructor & Destructor Documentation

◆ LinearBuffer()

template<typename... Ts>
donut::LinearBuffer< Ts >::LinearBuffer ( LinearMemoryResource memoryResource,
std::size_t  nextChunkSize = 64 
)
inlineexplicitnoexcept

Member Function Documentation

◆ push_back()

template<typename... Ts>
template<typename T >
requires (!std::is_unbounded_array_v<T> && linear_buffer_has_alternative_v<T, LinearBuffer>)
void donut::LinearBuffer< Ts >::push_back ( const T &  value)
inline

◆ emplace_back()

template<typename... Ts>
template<typename T , typename... Args>
requires (!std::is_unbounded_array_v<T> && linear_buffer_has_alternative_v<T, LinearBuffer> && std::is_constructible_v<T, Args...>)
void donut::LinearBuffer< Ts >::emplace_back ( Args &&...  args)
inline

◆ append()

template<typename... Ts>
template<typename T >
requires (linear_buffer_has_alternative_v<T[], LinearBuffer>)
std::span< const T > donut::LinearBuffer< Ts >::append ( std::span< const T >  values)
inline

◆ visit()

template<typename... Ts>
template<typename Visitor >
auto donut::LinearBuffer< Ts >::visit ( Visitor &&  visitor) const
inline

Member Data Documentation

◆ npos

template<typename... Ts>
constexpr index_type donut::LinearBuffer< Ts >::npos = sizeof...(Ts)
staticconstexpr

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