SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::utils::dependencies::OwnedComputation< KeyT, ComputationT > Class Template Reference

#include <computation_store.hpp>

Collaboration diagram for serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >:
[legend]

Public Types

using Key = KeyT
 
using Target = ComputationT
 

Public Member Functions

template<typename ValueT>
requires std::constructible_from<Target, ValueT>
 OwnedComputation (ValueT &&value)
 Give a cache or computation owner a stable address, independent of its store's location.
 
 OwnedComputation (const OwnedComputation &)=delete
 A computation has one owner; use references to share access to it.
 
OwnedComputation & operator= (const OwnedComputation &)=delete
 
 OwnedComputation (OwnedComputation &&) noexcept=default
 Transfer ownership without moving the computation itself.
 
OwnedComputation & operator= (OwnedComputation &&)=delete
 Replacing an entry could invalidate references held by prepared operators.
 
Target & get () &
 Access the persistent computation, for example to prepare its next state.
 
const Target & get () const &
 Read a computation through its owner without allowing it to change.
 
Target & get () &&=delete
 References cannot safely borrow computations from temporary owners.
 
const Target & get () const &&=delete
 

Private Member Functions

Target & checked_value () const
 A moved-from entry no longer owns an object that a consumer can borrow.
 

Private Attributes

std::unique_ptr< Target > m_value
 

Member Typedef Documentation

◆ Key

template<typename KeyT, typename ComputationT>
using serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::Key = KeyT

◆ Target

template<typename KeyT, typename ComputationT>
using serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::Target = ComputationT

Constructor & Destructor Documentation

◆ OwnedComputation() [1/3]

template<typename KeyT, typename ComputationT>
template<typename ValueT>
requires std::constructible_from<Target, ValueT>
serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::OwnedComputation ( ValueT && value)
inlineexplicit

Give a cache or computation owner a stable address, independent of its store's location.

◆ OwnedComputation() [2/3]

template<typename KeyT, typename ComputationT>
serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::OwnedComputation ( const OwnedComputation< KeyT, ComputationT > & )
delete

A computation has one owner; use references to share access to it.

◆ OwnedComputation() [3/3]

template<typename KeyT, typename ComputationT>
serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::OwnedComputation ( OwnedComputation< KeyT, ComputationT > && )
defaultnoexcept

Transfer ownership without moving the computation itself.

Member Function Documentation

◆ checked_value()

template<typename KeyT, typename ComputationT>
Target & serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::checked_value ( ) const
inlinenodiscardprivate

A moved-from entry no longer owns an object that a consumer can borrow.

◆ get() [1/4]

template<typename KeyT, typename ComputationT>
Target & serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::get ( ) &
inlinenodiscard

Access the persistent computation, for example to prepare its next state.

◆ get() [2/4]

template<typename KeyT, typename ComputationT>
Target & serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::get ( ) &&
delete

References cannot safely borrow computations from temporary owners.

◆ get() [3/4]

template<typename KeyT, typename ComputationT>
const Target & serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::get ( ) const &
inlinenodiscard

Read a computation through its owner without allowing it to change.

◆ get() [4/4]

template<typename KeyT, typename ComputationT>
const Target & serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::get ( ) const &&
delete

◆ operator=() [1/2]

template<typename KeyT, typename ComputationT>
OwnedComputation & serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::operator= ( const OwnedComputation< KeyT, ComputationT > & )
delete

◆ operator=() [2/2]

template<typename KeyT, typename ComputationT>
OwnedComputation & serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::operator= ( OwnedComputation< KeyT, ComputationT > && )
delete

Replacing an entry could invalidate references held by prepared operators.

Member Data Documentation

◆ m_value

template<typename KeyT, typename ComputationT>
std::unique_ptr<Target> serif::utils::dependencies::OwnedComputation< KeyT, ComputationT >::m_value
private

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