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

#include <context.hpp>

Public Types

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

Public Member Functions

 Context (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<IsDeclaration DeclarationT>
requires SatisfiesDeclaration<Bindings, DeclarationT>
auto select (DeclarationT) const &
 Select declared roles without copying their objects or tracking policies.
 
template<IsDeclaration DeclarationT>
auto select (DeclarationT) 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::Context< ResourceTs >::Bindings = dependencies::Bindings<Binding<typename ResourceTs::Key, typename ResourceTs::Target>...>

◆ ResourceBindings

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

◆ Resources

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

Constructor & Destructor Documentation

◆ Context()

template<IsResource... ResourceTs>
serif::utils::dependencies::Context< ResourceTs >::Context ( ResourceTs... resources)
inlineexplicit

Each resource explicitly chooses owned or borrowed storage.

Member Function Documentation

◆ get()

template<IsResource... ResourceTs>
template<typename KeyT>
requires BindingsWithBinding<Bindings, KeyT>
const auto & serif::utils::dependencies::Context< 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::Context< ResourceTs >::resource ( ) const
inlinenodiscard

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

◆ select() [1/2]

template<IsResource... ResourceTs>
template<IsDeclaration DeclarationT>
requires SatisfiesDeclaration<Bindings, DeclarationT>
auto serif::utils::dependencies::Context< ResourceTs >::select ( DeclarationT ) const &
inlinenodiscard

Select declared roles without copying their objects or tracking policies.

◆ select() [2/2]

template<IsResource... ResourceTs>
template<IsDeclaration DeclarationT>
auto serif::utils::dependencies::Context< ResourceTs >::select ( DeclarationT ) const &&
delete

A view cannot safely borrow a temporary context.

Member Data Documentation

◆ m_resources

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

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