DSPark 1.8.0
Header-only C++20 DSP for real-time and offline audio
Loading...
Searching...
No Matches
dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax > Class Template Reference

#include <Reverb.h>

Public Types

enum class  Phase : std::uint32_t {
  free = 0u , building = 1u , published = 2u , active = 3u ,
  retired = 4u , exhausted = 5u
}
 
enum class  PublishResult { published , noCapacity , invariantViolation }
 

Public Member Functions

 ReverbBankPublisher () noexcept=default
 
 ~ReverbBankPublisher () noexcept
 
 ReverbBankPublisher (const ReverbBankPublisher &)=delete
 
ReverbBankPublisher & operator= (const ReverbBankPublisher &)=delete
 
 ReverbBankPublisher (ReverbBankPublisher &&)=delete
 
ReverbBankPublisher & operator= (ReverbBankPublisher &&)=delete
 
template<typename Commit >
PublishResult publish (std::unique_ptr< Bank > candidate, std::uint32_t latency, Commit &&commit) noexcept
 
Bank * adoptAtBoundary () noexcept
 
Bank * pinLatest () noexcept
 
bool isLoaded () const noexcept
 
int latency () const noexcept
 
void shutdown () noexcept
 
std::uint32_t stateWordForTest (std::size_t index) const noexcept
 
std::uint32_t pendingTokenForTest () const noexcept
 
std::uint32_t activeTokenForTest () const noexcept
 
std::uint32_t latestTokenForTest () const noexcept
 
std::uint32_t pinnedTokenForTest () const noexcept
 
std::size_t residentBanksForTest () const noexcept
 
const void * atomicWordAddressForTest (std::size_t index) const noexcept
 

Static Public Member Functions

static constexpr std::size_t atomicWordCountForTest () noexcept
 
static constexpr Phase phaseForTest (std::uint32_t state) noexcept
 
static constexpr std::uint32_t generationForTest (std::uint32_t state) noexcept
 

Detailed Description

template<typename Bank, typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
class dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >

Fixed-capacity ownership handoff used by Reverb.

The audio owner performs one pending-token exchange and never constructs, destroys, scans or reference-counts a bank. The serialized control owner alone constructs and reclaims the four slot-owned banks.

Definition at line 125 of file Reverb.h.

Member Enumeration Documentation

◆ Phase

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
enum class dspark::detail::ReverbBankPublisher::Phase : std::uint32_t
strong
Enumerator
free 
building 
published 
active 
retired 
exhausted 

Definition at line 133 of file Reverb.h.

◆ PublishResult

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
enum class dspark::detail::ReverbBankPublisher::PublishResult
strong
Enumerator
published 
noCapacity 
invariantViolation 

Definition at line 143 of file Reverb.h.

Constructor & Destructor Documentation

◆ ReverbBankPublisher() [1/3]

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::ReverbBankPublisher ( )
defaultnoexcept

◆ ~ReverbBankPublisher()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::~ReverbBankPublisher ( )
inlinenoexcept

Definition at line 151 of file Reverb.h.

◆ ReverbBankPublisher() [2/3]

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::ReverbBankPublisher ( const ReverbBankPublisher< Bank, Hooks, GenerationMax > &  )
delete

◆ ReverbBankPublisher() [3/3]

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::ReverbBankPublisher ( ReverbBankPublisher< Bank, Hooks, GenerationMax > &&  )
delete

Member Function Documentation

◆ activeTokenForTest()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
std::uint32_t dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::activeTokenForTest ( ) const
inlinenoexcept

Definition at line 381 of file Reverb.h.

◆ adoptAtBoundary()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
Bank * dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::adoptAtBoundary ( )
inlinenoexcept

One fixed-operation audio-boundary adoption; returns the active bank.

Definition at line 269 of file Reverb.h.

◆ atomicWordAddressForTest()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
const void * dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::atomicWordAddressForTest ( std::size_t  index) const
inlinenoexcept

Definition at line 390 of file Reverb.h.

◆ atomicWordCountForTest()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
static constexpr std::size_t dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::atomicWordCountForTest ( )
inlinestaticconstexprnoexcept

Definition at line 399 of file Reverb.h.

◆ generationForTest()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
static constexpr std::uint32_t dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::generationForTest ( std::uint32_t  state)
inlinestaticconstexprnoexcept

Definition at line 407 of file Reverb.h.

◆ isLoaded()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
bool dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::isLoaded ( ) const
inlinenoexcept

Definition at line 342 of file Reverb.h.

◆ latency()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
int dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::latency ( ) const
inlinenoexcept

Definition at line 348 of file Reverb.h.

◆ latestTokenForTest()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
std::uint32_t dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::latestTokenForTest ( ) const
inlinenoexcept

Definition at line 382 of file Reverb.h.

◆ operator=() [1/2]

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
ReverbBankPublisher & dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::operator= ( const ReverbBankPublisher< Bank, Hooks, GenerationMax > &  )
delete

◆ operator=() [2/2]

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
ReverbBankPublisher & dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::operator= ( ReverbBankPublisher< Bank, Hooks, GenerationMax > &&  )
delete

◆ pendingTokenForTest()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
std::uint32_t dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::pendingTokenForTest ( ) const
inlinenoexcept

Definition at line 377 of file Reverb.h.

◆ phaseForTest()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
static constexpr Phase dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::phaseForTest ( std::uint32_t  state)
inlinestaticconstexprnoexcept

Definition at line 403 of file Reverb.h.

◆ pinLatest()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
Bank * dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::pinLatest ( )
inlinenoexcept

Ends the previous accessor lifetime and pins the exact latest bank.

Definition at line 319 of file Reverb.h.

◆ pinnedTokenForTest()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
std::uint32_t dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::pinnedTokenForTest ( ) const
inlinenoexcept

Definition at line 383 of file Reverb.h.

◆ publish()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
template<typename Commit >
PublishResult dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::publish ( std::unique_ptr< Bank >  candidate,
std::uint32_t  latency,
Commit &&  commit 
)
inlinenoexcept

Publishes one fully-built bank; called only by the control owner.

Definition at line 160 of file Reverb.h.

◆ residentBanksForTest()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
std::size_t dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::residentBanksForTest ( ) const
inlinenoexcept

Definition at line 384 of file Reverb.h.

◆ shutdown()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
void dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::shutdown ( )
inlinenoexcept

Joined-owner destruction; safe to call repeatedly.

Definition at line 355 of file Reverb.h.

◆ stateWordForTest()

template<typename Bank , typename Hooks = ReverbPublisherNoopHooks, std::uint32_t GenerationMax = 134217727u>
std::uint32_t dspark::detail::ReverbBankPublisher< Bank, Hooks, GenerationMax >::stateWordForTest ( std::size_t  index) const
inlinenoexcept

Definition at line 373 of file Reverb.h.


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