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

#include <dependency_context.hpp>

Public Types

using Resources = types::TypeList<ResourceTs...>
 
using Keys = KeyList<typename ResourceTs::Key...>
 
using Bindings = dependencies::Bindings<Binding<typename ResourceTs::Key, typename ResourceTs::Target>...>
 
using ResourceBindings = dependencies::Bindings<Binding<typename ResourceTs::Key, ResourceTs>...>
 

Public Member Functions

 explicit (sizeof...(ResourceTs) !=0) DependencyContext(ResourceTs... resources)
 Each resource explicitly chooses owned or borrowed storage.
 
template<typename KeyT>
requires BindingsWithBinding<Bindings, KeyT>
const auto & get () const
 Retrieve a resource by role even when several roles have the same target type.
 
template<typename KeyT>
requires BindingsWithBinding<Bindings, KeyT>
const auto & resource () const
 Access the value together with the policy used to track it.
 
template<IsKeyList KeysT>
requires SatisfiesKeyList<Bindings, KeysT>
auto select (KeysT) const &
 Select declared roles without copying their objects or tracking policies.
 
template<IsKeyList KeysT>
auto select (KeysT) const &&=delete
 A view cannot safely borrow a temporary context.
 

Private Attributes

std::tuple< ResourceTs... > m_resources
 

Member Typedef Documentation

◆ Bindings

template<IsResource... ResourceTs>
using serif::utils::dependencies::DependencyContext< ResourceTs >::Bindings = dependencies::Bindings<Binding<typename ResourceTs::Key, typename ResourceTs::Target>...>

◆ Keys

template<IsResource... ResourceTs>
using serif::utils::dependencies::DependencyContext< ResourceTs >::Keys = KeyList<typename ResourceTs::Key...>

◆ ResourceBindings

template<IsResource... ResourceTs>
using serif::utils::dependencies::DependencyContext< ResourceTs >::ResourceBindings = dependencies::Bindings<Binding<typename ResourceTs::Key, ResourceTs>...>

◆ Resources

template<IsResource... ResourceTs>
using serif::utils::dependencies::DependencyContext< ResourceTs >::Resources = types::TypeList<ResourceTs...>

Member Function Documentation

◆ explicit()

template<IsResource... ResourceTs>
serif::utils::dependencies::DependencyContext< ResourceTs >::explicit ( sizeof...(ResourceTs) ! = 0)
inline

Each resource explicitly chooses owned or borrowed storage.

◆ get()

template<IsResource... ResourceTs>
template<typename KeyT>
requires BindingsWithBinding<Bindings, KeyT>
const auto & serif::utils::dependencies::DependencyContext< ResourceTs >::get ( ) const
inlinenodiscard

Retrieve a resource by role even when several roles have the same target type.

◆ resource()

template<IsResource... ResourceTs>
template<typename KeyT>
requires BindingsWithBinding<Bindings, KeyT>
const auto & serif::utils::dependencies::DependencyContext< ResourceTs >::resource ( ) const
inlinenodiscard

Access the value together with the policy used to track it.

◆ select() [1/2]

template<IsResource... ResourceTs>
template<IsKeyList KeysT>
requires SatisfiesKeyList<Bindings, KeysT>
auto serif::utils::dependencies::DependencyContext< ResourceTs >::select ( KeysT ) const &
inlinenodiscard

Select declared roles without copying their objects or tracking policies.

◆ select() [2/2]

template<IsResource... ResourceTs>
template<IsKeyList KeysT>
auto serif::utils::dependencies::DependencyContext< ResourceTs >::select ( KeysT ) const &&
delete

A view cannot safely borrow a temporary context.

Member Data Documentation

◆ m_resources

template<IsResource... ResourceTs>
std::tuple<ResourceTs...> serif::utils::dependencies::DependencyContext< ResourceTs >::m_resources
private

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