SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT > Class Template Reference

Each started hook owns one invocation state and finishes once, including on exceptional exit. More...

#include <observers.hpp>

Public Member Functions

 NodeObservation (BeforeT &before, AfterT &after)
 If before fails, construction fails and no matching completion is due.
 
 NodeObservation (const NodeObservation &)=delete
 
NodeObservation & operator= (const NodeObservation &)=delete
 
 ~NodeObservation () noexcept
 A throwing result transfer also interrupts the invocation; no catch/rethrow is needed.
 
template<typename ResultT>
void returned (const ResultT &result) noexcept
 Distinguish an ordinary value from a computation's value-based rejection.
 

Private Attributes

AfterT & m_after
 
std::invoke_result_t< BeforeT & > m_state
 
int m_exceptions
 
NodeOutcome m_outcome {NodeOutcome::exception}
 

Detailed Description

template<typename BeforeT, typename AfterT>
class serif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT >

Each started hook owns one invocation state and finishes once, including on exceptional exit.

Constructor & Destructor Documentation

◆ NodeObservation() [1/2]

template<typename BeforeT, typename AfterT>
serif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT >::NodeObservation ( BeforeT & before,
AfterT & after )
inline

If before fails, construction fails and no matching completion is due.

◆ NodeObservation() [2/2]

template<typename BeforeT, typename AfterT>
serif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT >::NodeObservation ( const NodeObservation< BeforeT, AfterT > & )
delete

◆ ~NodeObservation()

template<typename BeforeT, typename AfterT>
serif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT >::~NodeObservation ( )
inlinenoexcept

A throwing result transfer also interrupts the invocation; no catch/rethrow is needed.

Member Function Documentation

◆ operator=()

template<typename BeforeT, typename AfterT>
NodeObservation & serif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT >::operator= ( const NodeObservation< BeforeT, AfterT > & )
delete

◆ returned()

template<typename BeforeT, typename AfterT>
template<typename ResultT>
void serif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT >::returned ( const ResultT & result)
inlinenoexcept

Distinguish an ordinary value from a computation's value-based rejection.

Member Data Documentation

◆ m_after

template<typename BeforeT, typename AfterT>
AfterT& serif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT >::m_after
private

◆ m_exceptions

template<typename BeforeT, typename AfterT>
int serif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT >::m_exceptions
private

◆ m_outcome

template<typename BeforeT, typename AfterT>
NodeOutcome serif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT >::m_outcome {NodeOutcome::exception}
private

◆ m_state

template<typename BeforeT, typename AfterT>
std::invoke_result_t<BeforeT&> serif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT >::m_state
private

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