Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
Aleph::RingBuffer< T > Class Template Reference

Fixed-capacity circular FIFO buffer over contiguous storage. More...

#include <tpl_ring_buffer.H>

Collaboration diagram for Aleph::RingBuffer< T >:
[legend]

Classes

class  basic_iterator
 Random-access iterator over the logical window. More...
 

Public Types

using Item_Type = T
 Aleph convention: element type.
 
using value_type = T
 STL convention: value type.
 
using size_type = size_t
 STL convention: size type.
 
using iterator = basic_iterator< false >
 Mutable iterator.
 
using const_iterator = basic_iterator< true >
 Const iterator.
 

Public Member Functions

 RingBuffer (const size_t cap)
 Construct a buffer with an exact capacity.
 
 RingBuffer (const RingBuffer &rb)
 Copy constructor (requires copyable T).
 
 RingBuffer (RingBuffer &&rb) noexcept
 Move constructor: steals the storage in O(1).
 
RingBuffer & operator= (const RingBuffer &rb)
 Copy assignment (requires copyable T).
 
RingBuffer & operator= (RingBuffer &&rb) noexcept
 Move assignment: steals the storage in O(1).
 
 ~RingBuffer ()
 
void swap (RingBuffer &rb) noexcept
 Swap contents with rb in O(1).
 
size_t size () const noexcept
 Return the number of stored elements. O(1).
 
size_t capacity () const noexcept
 Return the fixed capacity chosen at construction. O(1).
 
size_t available () const noexcept
 Return the number of free slots. O(1).
 
bool is_empty () const noexcept
 Return true if no elements are stored. O(1).
 
bool is_full () const noexcept
 Return true if the buffer holds capacity() elements. O(1).
 
void empty () noexcept
 Destroy all elements (Aleph convention).
 
void clear () noexcept
 Destroy all elements. Alias of empty(). Capacity is kept.
 
T & operator[] (const size_t i)
 Checked access to the i-th logical element (0 = oldest).
 
const T & operator[] (const size_t i) const
 Checked const access to the i-th logical element (0 = oldest).
 
T & operator() (const size_t i) noexcept
 Unchecked access to the i-th logical element (must be < size()).
 
const T & operator() (const size_t i) const noexcept
 Unchecked const access to the i-th logical element (must be < size()).
 
T & get_first ()
 Oldest element — the next to leave (checked).
 
const T & get_first () const
 
T & get_last ()
 Newest element — the last one inserted (checked).
 
const T & get_last () const
 
T & front ()
 Oldest element (checked). Alias of get_first().
 
const T & front () const
 
T & back ()
 Newest element (checked). Alias of get_last().
 
const T & back () const
 
template<class... Args>
T & emplace (Args &&...args)
 Construct an element in place at the tail.
 
T & put (const T &item)
 Append a copy of item at the tail.
 
T & put (T &&item)
 Append item at the tail by moving.
 
T & push (const T &item)
 Queue-style alias of put(const T &).
 
T & push (T &&item)
 Queue-style alias of put(T &&).
 
bool put_overwrite (const T &item)
 Append at the tail, evicting the oldest element when full.
 
bool put_overwrite (T &&item)
 
T get ()
 Extract the oldest element from the head.
 
T pop ()
 Queue-style alias of get().
 
iterator begin () noexcept
 Iterator on the oldest element. O(1).
 
iterator end () noexcept
 Iterator past the newest element. O(1).
 
const_iterator begin () const noexcept
 Const iterator on the oldest element. O(1).
 
const_iterator end () const noexcept
 Const iterator past the newest element. O(1).
 
const_iterator cbegin () const noexcept
 Const iterator on the oldest element. O(1).
 
const_iterator cend () const noexcept
 Const iterator past the newest element. O(1).
 
template<class Operation >
bool traverse (Operation operation)
 Traverse from oldest to newest while operation returns true.
 
template<class Operation >
bool traverse (Operation operation) const
 Const traversal from oldest to newest.
 
bool operator== (const RingBuffer &rb) const
 Equality: same logical contents (capacity is not compared).
 
bool operator!= (const RingBuffer &rb) const
 Inequality: negation of operator==.
 

Private Member Functions

size_t phys (const size_t i) const noexcept
 
void destroy_all () noexcept
 

Static Private Member Functions

static T * allocate (size_t m)
 
static void deallocate (T *p, size_t m) noexcept
 

Private Attributes

T * buf_ = nullptr
 
size_t cap_ = 0
 
size_t head_ = 0
 
size_t n_ = 0
 

Detailed Description

template<typename T>
class Aleph::RingBuffer< T >

Fixed-capacity circular FIFO buffer over contiguous storage.

Elements enter at the tail (put) and leave from the head (get) in FIFO order. The capacity is chosen at construction (any positive value, not rounded) and never changes; no operation reallocates. When the buffer is full, put reports overflow while put_overwrite evicts the oldest element — a sliding window.

Template Parameters
TElement type. Must be move-constructible and move-assignable. No default constructor is required; move-only types work.
Indexing and iteration
operator[](i) and iterators address the logical window: index 0 is the oldest element (next to leave), size() - 1 the newest. Iterators are random access and remain valid until any element is added, removed or the buffer is destroyed.
Aleph conventions
Following the library convention (see Array), empty() clears the buffer and is_empty() is the emptiness predicate.
Exception Safety
put/emplace offer the strong guarantee (the element is constructed before any state changes). put_overwrite on a full buffer assigns over the oldest element (basic guarantee if T's assignment throws).
Thread Safety
Distinct instances may be used from distinct threads. Concurrent access to the same instance requires external synchronization (this is a sequential ring buffer, not a lock-free SPSC queue).
Example
RingBuffer<double> window(4); // last 4 samples
for (double s : samples)
window.put_overwrite(s); // evicts oldest when full
for (double s : window) // oldest → newest
Fixed-capacity circular FIFO buffer over contiguous storage.
bool put_overwrite(const T &item)
Append at the tail, evicting the oldest element when full.
T accumulate(Itor beg, Itor end, T initValue)
Accumulate values in a range.
Definition ahAlgo.H:1493

Definition at line 114 of file tpl_ring_buffer.H.

Member Typedef Documentation

◆ const_iterator

template<typename T >
using Aleph::RingBuffer< T >::const_iterator = basic_iterator<true>

Const iterator.

Definition at line 338 of file tpl_ring_buffer.H.

◆ Item_Type

template<typename T >
using Aleph::RingBuffer< T >::Item_Type = T

Aleph convention: element type.

Definition at line 151 of file tpl_ring_buffer.H.

◆ iterator

template<typename T >
using Aleph::RingBuffer< T >::iterator = basic_iterator<false>

Mutable iterator.

Definition at line 337 of file tpl_ring_buffer.H.

◆ size_type

template<typename T >
using Aleph::RingBuffer< T >::size_type = size_t

STL convention: size type.

Definition at line 153 of file tpl_ring_buffer.H.

◆ value_type

template<typename T >
using Aleph::RingBuffer< T >::value_type = T

STL convention: value type.

Definition at line 152 of file tpl_ring_buffer.H.

Constructor & Destructor Documentation

◆ RingBuffer() [1/3]

template<typename T >
Aleph::RingBuffer< T >::RingBuffer ( const size_t  cap)
inlineexplicit

Construct a buffer with an exact capacity.

Parameters
capMaximum number of elements (not rounded; must be positive).
Exceptions
std::invalid_argumentif cap == 0.
std::bad_allocif the storage cannot be allocated.

Definition at line 345 of file tpl_ring_buffer.H.

References ah_invalid_argument_if, Aleph::RingBuffer< T >::allocate(), Aleph::RingBuffer< T >::buf_, and Aleph::RingBuffer< T >::cap_.

◆ RingBuffer() [2/3]

template<typename T >
Aleph::RingBuffer< T >::RingBuffer ( const RingBuffer< T > &  rb)
inline

Copy constructor (requires copyable T).

The copy is normalized (its oldest element sits at physical index 0).

Definition at line 353 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::allocate(), Aleph::blossom_maximum_cardinality_matching(), Aleph::RingBuffer< T >::buf_, Aleph::RingBuffer< T >::cap_, Aleph::RingBuffer< T >::deallocate(), Aleph::RingBuffer< T >::destroy_all(), and Aleph::RingBuffer< T >::n_.

◆ RingBuffer() [3/3]

template<typename T >
Aleph::RingBuffer< T >::RingBuffer ( RingBuffer< T > &&  rb)
inlinenoexcept

Move constructor: steals the storage in O(1).

The source is left valid but empty with null storage; it may only be destroyed or assigned to.

Definition at line 374 of file tpl_ring_buffer.H.

References Aleph::blossom_maximum_cardinality_matching(), and Aleph::RingBuffer< T >::swap().

◆ ~RingBuffer()

Member Function Documentation

◆ allocate()

template<typename T >
static T * Aleph::RingBuffer< T >::allocate ( size_t  m)
inlinestaticprivate

Definition at line 125 of file tpl_ring_buffer.H.

References m.

Referenced by Aleph::RingBuffer< T >::RingBuffer(), and Aleph::RingBuffer< T >::RingBuffer().

◆ available()

template<typename T >
size_t Aleph::RingBuffer< T >::available ( ) const
inlinenoexcept

Return the number of free slots. O(1).

Definition at line 432 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::cap_, and Aleph::RingBuffer< T >::n_.

Referenced by TEST(), and TEST().

◆ back() [1/2]

template<typename T >
Aleph::RingBuffer< T >::back ( )
inline

Newest element (checked). Alias of get_last().

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 543 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::get_last().

Referenced by TEST().

◆ back() [2/2]

template<typename T >
const T & Aleph::RingBuffer< T >::back ( ) const
inline

Definition at line 549 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::get_last().

◆ begin() [1/2]

template<typename T >
const_iterator Aleph::RingBuffer< T >::begin ( ) const
inlinenoexcept

Const iterator on the oldest element. O(1).

Definition at line 683 of file tpl_ring_buffer.H.

◆ begin() [2/2]

template<typename T >
iterator Aleph::RingBuffer< T >::begin ( )
inlinenoexcept

Iterator on the oldest element. O(1).

Definition at line 671 of file tpl_ring_buffer.H.

Referenced by Aleph::RingBuffer< T >::cbegin(), and TEST().

◆ capacity()

template<typename T >
size_t Aleph::RingBuffer< T >::capacity ( ) const
inlinenoexcept

Return the fixed capacity chosen at construction. O(1).

Definition at line 426 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::cap_.

Referenced by TEST(), and TEST().

◆ cbegin()

template<typename T >
const_iterator Aleph::RingBuffer< T >::cbegin ( ) const
inlinenoexcept

Const iterator on the oldest element. O(1).

Definition at line 695 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::begin().

◆ cend()

template<typename T >
const_iterator Aleph::RingBuffer< T >::cend ( ) const
inlinenoexcept

Const iterator past the newest element. O(1).

Definition at line 701 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::end().

◆ clear()

template<typename T >
void Aleph::RingBuffer< T >::clear ( )
inlinenoexcept

Destroy all elements. Alias of empty(). Capacity is kept.

Definition at line 459 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::destroy_all().

Referenced by TEST().

◆ deallocate()

template<typename T >
static void Aleph::RingBuffer< T >::deallocate ( T *  p,
size_t  m 
)
inlinestaticprivatenoexcept

Definition at line 130 of file tpl_ring_buffer.H.

References m.

Referenced by Aleph::RingBuffer< T >::RingBuffer(), and Aleph::RingBuffer< T >::~RingBuffer().

◆ destroy_all()

◆ emplace()

template<typename T >
template<class... Args>
T & Aleph::RingBuffer< T >::emplace ( Args &&...  args)
inline

Construct an element in place at the tail.

Template Parameters
ArgsArgument types forwarded to T's constructor.
Parameters
argsArguments forwarded to T's constructor.
Returns
Mutable reference to the new element.
Exceptions
std::overflow_errorif the buffer is full.
Note
O(1). Strong guarantee.

Definition at line 564 of file tpl_ring_buffer.H.

References ah_overflow_error_if, Aleph::blossom_maximum_cardinality_matching(), Aleph::RingBuffer< T >::buf_, Aleph::RingBuffer< T >::is_full(), Aleph::RingBuffer< T >::n_, and Aleph::RingBuffer< T >::phys().

Referenced by Aleph::RingBuffer< T >::put(), Aleph::RingBuffer< T >::put(), TEST(), TEST(), and TEST().

◆ empty()

template<typename T >
void Aleph::RingBuffer< T >::empty ( )
inlinenoexcept

Destroy all elements (Aleph convention).

Capacity is kept.

Note
Following the Aleph container convention (see Array::empty()), this mutates the buffer; use is_empty() to test emptiness.

Definition at line 453 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::destroy_all().

Referenced by TEST().

◆ end() [1/2]

template<typename T >
const_iterator Aleph::RingBuffer< T >::end ( ) const
inlinenoexcept

Const iterator past the newest element. O(1).

Definition at line 689 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::n_.

◆ end() [2/2]

template<typename T >
iterator Aleph::RingBuffer< T >::end ( )
inlinenoexcept

Iterator past the newest element. O(1).

Definition at line 677 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::n_.

Referenced by Aleph::RingBuffer< T >::cend(), and TEST().

◆ front() [1/2]

template<typename T >
Aleph::RingBuffer< T >::front ( )
inline

Oldest element (checked). Alias of get_first().

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 531 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::get_first().

Referenced by TEST().

◆ front() [2/2]

template<typename T >
const T & Aleph::RingBuffer< T >::front ( ) const
inline

Definition at line 537 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::get_first().

◆ get()

template<typename T >
T Aleph::RingBuffer< T >::get ( )
inline

Extract the oldest element from the head.

Returns
The removed element, moved out.
Exceptions
std::underflow_errorif the buffer is empty.
Note
O(1).

Definition at line 651 of file tpl_ring_buffer.H.

References ah_underflow_error_if, Aleph::blossom_maximum_cardinality_matching(), Aleph::RingBuffer< T >::buf_, Aleph::RingBuffer< T >::cap_, Aleph::RingBuffer< T >::head_, and Aleph::RingBuffer< T >::n_.

Referenced by Aleph::RingBuffer< T >::pop(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().

◆ get_first() [1/2]

template<typename T >
Aleph::RingBuffer< T >::get_first ( )
inline

Oldest element — the next to leave (checked).

Returns
Mutable reference to the front element.
Exceptions
std::underflow_errorif the buffer is empty.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 500 of file tpl_ring_buffer.H.

References ah_underflow_error_if, Aleph::RingBuffer< T >::buf_, Aleph::RingBuffer< T >::head_, and Aleph::RingBuffer< T >::n_.

Referenced by Aleph::RingBuffer< T >::front(), Aleph::RingBuffer< T >::front(), TEST(), TEST(), TEST(), and TEST().

◆ get_first() [2/2]

◆ get_last() [1/2]

template<typename T >
Aleph::RingBuffer< T >::get_last ( )
inline

Newest element — the last one inserted (checked).

Returns
Mutable reference to the back element.
Exceptions
std::underflow_errorif the buffer is empty.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 517 of file tpl_ring_buffer.H.

References ah_underflow_error_if, Aleph::RingBuffer< T >::buf_, Aleph::RingBuffer< T >::n_, and Aleph::RingBuffer< T >::phys().

Referenced by Aleph::RingBuffer< T >::back(), Aleph::RingBuffer< T >::back(), TEST(), and TEST().

◆ get_last() [2/2]

◆ is_empty()

template<typename T >
bool Aleph::RingBuffer< T >::is_empty ( ) const
inlinenoexcept

Return true if no elements are stored. O(1).

Definition at line 438 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::n_.

Referenced by TEST(), TEST(), and TEST().

◆ is_full()

template<typename T >
bool Aleph::RingBuffer< T >::is_full ( ) const
inlinenoexcept

◆ operator!=()

template<typename T >
bool Aleph::RingBuffer< T >::operator!= ( const RingBuffer< T > &  rb) const
inline

Inequality: negation of operator==.

Definition at line 756 of file tpl_ring_buffer.H.

References Aleph::blossom_maximum_cardinality_matching().

◆ operator()() [1/2]

template<typename T >
const T & Aleph::RingBuffer< T >::operator() ( const size_t  i) const
inlinenoexcept

Unchecked const access to the i-th logical element (must be < size()).

Definition at line 491 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::buf_, and Aleph::RingBuffer< T >::phys().

◆ operator()() [2/2]

template<typename T >
T & Aleph::RingBuffer< T >::operator() ( const size_t  i)
inlinenoexcept

Unchecked access to the i-th logical element (must be < size()).

Definition at line 485 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::buf_, and Aleph::RingBuffer< T >::phys().

◆ operator=() [1/2]

template<typename T >
RingBuffer & Aleph::RingBuffer< T >::operator= ( const RingBuffer< T > &  rb)
inline

Copy assignment (requires copyable T).

Definition at line 380 of file tpl_ring_buffer.H.

References Aleph::blossom_maximum_cardinality_matching(), and Aleph::RingBuffer< T >::swap().

◆ operator=() [2/2]

template<typename T >
RingBuffer & Aleph::RingBuffer< T >::operator= ( RingBuffer< T > &&  rb)
inlinenoexcept

Move assignment: steals the storage in O(1).

Definition at line 391 of file tpl_ring_buffer.H.

References Aleph::blossom_maximum_cardinality_matching(), and Aleph::RingBuffer< T >::swap().

◆ operator==()

template<typename T >
bool Aleph::RingBuffer< T >::operator== ( const RingBuffer< T > &  rb) const
inline

Equality: same logical contents (capacity is not compared).

Parameters
rbBuffer to compare against.
Returns
true if both buffers hold equal elements in FIFO order.
Note
Complexity: O(n). Requires T equality comparable.

Definition at line 745 of file tpl_ring_buffer.H.

References Aleph::blossom_maximum_cardinality_matching(), and Aleph::RingBuffer< T >::n_.

◆ operator[]() [1/2]

template<typename T >
T & Aleph::RingBuffer< T >::operator[] ( const size_t  i)
inline

Checked access to the i-th logical element (0 = oldest).

Parameters
iLogical index from the head.
Returns
Mutable reference to the element.
Exceptions
std::out_of_rangeif i >= size().

Definition at line 471 of file tpl_ring_buffer.H.

References ah_out_of_range_error_if, Aleph::RingBuffer< T >::buf_, Aleph::RingBuffer< T >::n_, and Aleph::RingBuffer< T >::phys().

◆ operator[]() [2/2]

template<typename T >
const T & Aleph::RingBuffer< T >::operator[] ( const size_t  i) const
inline

Checked const access to the i-th logical element (0 = oldest).

Definition at line 478 of file tpl_ring_buffer.H.

References ah_out_of_range_error_if, Aleph::RingBuffer< T >::buf_, Aleph::RingBuffer< T >::n_, and Aleph::RingBuffer< T >::phys().

◆ phys()

◆ pop()

template<typename T >
T Aleph::RingBuffer< T >::pop ( )
inline

Queue-style alias of get().

Definition at line 663 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::get().

◆ push() [1/2]

template<typename T >
T & Aleph::RingBuffer< T >::push ( const T &  item)
inline

Queue-style alias of put(const T &).

Definition at line 597 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::put().

◆ push() [2/2]

template<typename T >
T & Aleph::RingBuffer< T >::push ( T &&  item)
inline

Queue-style alias of put(T &&).

Definition at line 604 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::put().

◆ put() [1/2]

template<typename T >
T & Aleph::RingBuffer< T >::put ( const T &  item)
inline

Append a copy of item at the tail.

Parameters
itemElement to copy.
Returns
Mutable reference to the new element.
Exceptions
std::overflow_errorif the buffer is full.
Note
O(1). Strong guarantee.

Definition at line 579 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::emplace().

Referenced by Aleph::RingBuffer< T >::push(), Aleph::RingBuffer< T >::push(), Aleph::RingBuffer< T >::put_overwrite(), Aleph::RingBuffer< T >::put_overwrite(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().

◆ put() [2/2]

template<typename T >
T & Aleph::RingBuffer< T >::put ( T &&  item)
inline

Append item at the tail by moving.

Parameters
itemElement to move in.
Returns
Mutable reference to the new element.
Exceptions
std::overflow_errorif the buffer is full.
Note
O(1). Strong guarantee.

Definition at line 591 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::emplace().

◆ put_overwrite() [1/2]

template<typename T >
Aleph::RingBuffer< T >::put_overwrite ( const T &  item)
inline

Append at the tail, evicting the oldest element when full.

This is the sliding-window insertion: on a full buffer the oldest element is overwritten (by assignment) and the head advances.

Parameters
itemElement to copy in.
Returns
true if an old element was evicted, false if the buffer still had room.
Note
O(1). Basic guarantee if T's copy assignment throws.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 619 of file tpl_ring_buffer.H.

References Aleph::blossom_maximum_cardinality_matching(), Aleph::RingBuffer< T >::buf_, Aleph::RingBuffer< T >::cap_, Aleph::RingBuffer< T >::head_, Aleph::RingBuffer< T >::is_full(), and Aleph::RingBuffer< T >::put().

Referenced by TEST(), TEST(), TEST(), and TEST().

◆ put_overwrite() [2/2]

◆ size()

template<typename T >
size_t Aleph::RingBuffer< T >::size ( ) const
inlinenoexcept

Return the number of stored elements. O(1).

Definition at line 420 of file tpl_ring_buffer.H.

References Aleph::RingBuffer< T >::n_.

Referenced by TEST(), TEST(), TEST(), TEST(), and TEST().

◆ swap()

◆ traverse() [1/2]

template<typename T >
template<class Operation >
bool Aleph::RingBuffer< T >::traverse ( Operation  operation)
inline

Traverse from oldest to newest while operation returns true.

Aleph-style bounded traversal: operation receives each element in FIFO order; returning false stops the walk.

Template Parameters
OperationCallable bool(T &).
Parameters
operationOperation to apply.
Returns
true if all elements were visited, false if stopped early.

Definition at line 716 of file tpl_ring_buffer.H.

References Aleph::blossom_maximum_cardinality_matching(), Aleph::RingBuffer< T >::buf_, Aleph::RingBuffer< T >::n_, and Aleph::RingBuffer< T >::phys().

Referenced by TEST().

◆ traverse() [2/2]

template<typename T >
template<class Operation >
bool Aleph::RingBuffer< T >::traverse ( Operation  operation) const
inline

Const traversal from oldest to newest.

Template Parameters
OperationCallable bool(const T &).
Parameters
operationOperation to apply.
Returns
true if all elements were visited, false if stopped early.

Definition at line 730 of file tpl_ring_buffer.H.

References Aleph::blossom_maximum_cardinality_matching(), Aleph::RingBuffer< T >::buf_, Aleph::RingBuffer< T >::n_, and Aleph::RingBuffer< T >::phys().

Member Data Documentation

◆ buf_

◆ cap_

◆ head_

◆ n_


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