11#ifndef MARVIN_SWAPBUFFER_H
12#define MARVIN_SWAPBUFFER_H
25 requires std::is_default_constructible_v<T> &&
26 std::is_copy_constructible_v<T> &&
27 std::is_move_constructible_v<T>
56 std::fill(m_a.begin(), m_a.end(), fillV);
57 std::fill(m_b.begin(), m_b.end(), fillV);
70 [[nodiscard]]
size_t size() const noexcept {
71 assert(m_a.size() == m_b.size());
82 m_a.reserve(toReserve);
83 m_b.reserve(toReserve);
101 auto& buffToUse = m_aIsFrontBuffer ? m_a : m_b;
110 auto& buffToUse = m_aIsFrontBuffer ? m_b : m_a;
120 m_aIsFrontBuffer = !m_aIsFrontBuffer;
127 bool m_aIsFrontBuffer{
true };
SwapBuffer(SwapBuffer< T > &&other) noexcept=default
void reserve(size_t toReserve)
Definition marvin_SwapBuffer.h:81
void swap() noexcept
Definition marvin_SwapBuffer.h:119
size_t size() const noexcept
Definition marvin_SwapBuffer.h:70
SwapBuffer(size_t len)
Definition marvin_SwapBuffer.h:42
std::span< T > getFrontBuffer()
Definition marvin_SwapBuffer.h:100
SwapBuffer(size_t len, T fillV)
Definition marvin_SwapBuffer.h:53
SwapBuffer(const SwapBuffer< T > &other)=default
std::span< T > getBackBuffer()
Definition marvin_SwapBuffer.h:109
void resize(size_t newSize)
Definition marvin_SwapBuffer.h:91
~SwapBuffer() noexcept=default
Views, wrappers and custom containers.
Definition marvin_BufferView.h:15