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

Fan-out sink that forwards every frame to several sinks. More...

#include <ca-frame-stream.H>

Public Member Functions

 Composite_Frame_Sink (Sinks... sinks)
 Construct the composite sink.
 
template<std::size_t I>
auto & get () noexcept
 Return child sink I.
 
template<std::size_t I>
const auto & get () const noexcept
 Return child sink I.
 
template<typename Lattice >
void accept (const std::size_t step, const Lattice &frame)
 Forward a frame to every child sink.
 
void flush ()
 Flush every child sink in tuple order.
 

Private Attributes

std::tuple< Sinks... > sinks_
 

Detailed Description

template<typename... Sinks>
class Aleph::CA::Composite_Frame_Sink< Sinks >

Fan-out sink that forwards every frame to several sinks.

Composite_Frame_Sink owns its child sinks and forwards accept() and flush() in tuple order. It is useful when a simulation should emit, for example, PNG frames, an HTML player and a terminal preview from one traversal.

Template Parameters
Sinksconcrete sink types.
Thread-safety
Not thread-safe unless every child sink is externally synchronised.

Definition at line 232 of file ca-frame-stream.H.

Constructor & Destructor Documentation

◆ Composite_Frame_Sink()

template<typename... Sinks>
Aleph::CA::Composite_Frame_Sink< Sinks >::Composite_Frame_Sink ( Sinks...  sinks)
inlineexplicit

Construct the composite sink.

Parameters
[in]sinkschild sinks moved into the composite.

Definition at line 240 of file ca-frame-stream.H.

Member Function Documentation

◆ accept()

template<typename... Sinks>
template<typename Lattice >
void Aleph::CA::Composite_Frame_Sink< Sinks >::accept ( const std::size_t  step,
const Lattice &  frame 
)
inline

Forward a frame to every child sink.

Template Parameters
Latticeframe type.
Parameters
[in]stepsimulation step.
[in]frameframe to forward.

Definition at line 268 of file ca-frame-stream.H.

References Aleph::and, and Aleph::CA::Composite_Frame_Sink< Sinks >::sinks_.

◆ flush()

template<typename... Sinks>
void Aleph::CA::Composite_Frame_Sink< Sinks >::flush ( )
inline

Flush every child sink in tuple order.

Definition at line 279 of file ca-frame-stream.H.

References Aleph::CA::Composite_Frame_Sink< Sinks >::sinks_.

◆ get() [1/2]

template<typename... Sinks>
template<std::size_t I>
const auto & Aleph::CA::Composite_Frame_Sink< Sinks >::get ( ) const
inlinenoexcept

Return child sink I.

Template Parameters
Ituple index.
Returns
immutable sink reference.

Definition at line 257 of file ca-frame-stream.H.

References Aleph::CA::Composite_Frame_Sink< Sinks >::sinks_.

◆ get() [2/2]

template<typename... Sinks>
template<std::size_t I>
auto & Aleph::CA::Composite_Frame_Sink< Sinks >::get ( )
inlinenoexcept

Return child sink I.

Template Parameters
Ituple index.
Returns
mutable sink reference.

Definition at line 247 of file ca-frame-stream.H.

References Aleph::CA::Composite_Frame_Sink< Sinks >::sinks_.

Member Data Documentation

◆ sinks_


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