SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
dependency_context.hpp File Reference
#include <concepts>
#include <tuple>
#include <type_traits>
#include <utility>
#include "serif/utils/dependencies/resource.hpp"
#include "serif/utils/dependencies/detail/type_lists.hpp"
#include "serif/utils/misc/concepts/concat.hpp"
Include dependency graph for dependency_context.hpp:
This graph shows which files directly or indirectly include this file:

Classes

class  serif::utils::dependencies::DependencyContext< ResourceTs >
 
class  serif::utils::dependencies::DependencyContextView< ParentT, KeyList< KeyTs... > >
 

Namespaces

namespace  serif
 
namespace  serif::utils
 
namespace  serif::utils::dependencies
 
namespace  serif::utils::dependencies::detail
 

Concepts

concept  serif::utils::dependencies::IsDependencyContext
 

Functions

template<typename... Resources>
requires (IsResource<Resources> && ...) && misc::traits::all_unique_types_v<typename std::remove_cvref_t<Resources>::Key...>
auto serif::utils::dependencies::make_dependency_context (Resources &&... resources)
 Build a context whose schema follows directly from its resource keys and types.
 
template<typename... Resources>
consteval bool serif::utils::dependencies::detail::combinable_resources (types::TypeList< Resources... >)
 Combining contexts must preserve every resource, with exactly one owner of each key.
 
template<IsDependencyContext... Contexts>
requires (detail::combinable_resources(misc::concepts::ConcatT<typename Contexts::Resources...>{}))
auto serif::utils::dependencies::combine_dependency_contexts (const Contexts &... contexts)
 Copy disjoint resources and their tracking policies into one context; borrowed objects retain their original lifetime.
 

Variables

template<typename T>
constexpr bool serif::utils::dependencies::is_dependency_context_v = false
 
template<typename... Resources>
constexpr bool serif::utils::dependencies::is_dependency_context_v< DependencyContext< Resources... > > = true
 
template<typename ParentT, typename KeysT>
constexpr bool serif::utils::dependencies::is_dependency_context_v< DependencyContextView< ParentT, KeysT > > = true