.TH "src/include/serif/utils/dependencies/observers.hpp" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*- .ad l .nh .SH NAME src/include/serif/utils/dependencies/observers.hpp .SH SYNOPSIS .br .PP \fR#include \fP .br \fR#include \fP .br \fR#include \fP .br \fR#include \fP .br \fR#include \fP .br \fR#include \fP .br \fR#include \fP .br \fR#include \fP .br \fR#include \fP .br \fR#include \fP .br \fR#include 'serif/utils/dependencies/detail/schema\&.hpp'\fP .br .SS "Classes" .in +1c .ti -1c .RI "struct \fBserif::utils::dependencies::NodeObserver< KeyT, BeforeT, AfterT >\fP" .br .ti -1c .RI "struct \fBserif::utils::dependencies::AllNodesObserver< BeforeT, AfterT >\fP" .br .RI "One registration can inspect every result without building a graph-sized observer tuple\&. " .ti -1c .RI "struct \fBserif::utils::dependencies::EdgeObserver< InputT, ConsumerT, FunctionT >\fP" .br .ti -1c .RI "class \fBserif::utils::dependencies::detail::NodeObservation< BeforeT, AfterT >\fP" .br .RI "Each started hook owns one invocation state and finishes once, including on exceptional exit\&. " .ti -1c .RI "class \fBserif::utils::dependencies::Observers< Registrations >\fP" .br .RI "Own registrations; execution state lasts for one invocation and is never part of the numerical cache\&. " .ti -1c .RI "struct \fBserif::utils::dependencies::NoGraphObservers\fP" .br .RI "Default high-level binding adds no observation storage, timers, or callback work\&. " .ti -1c .RI "struct \fBserif::utils::dependencies::detail::ValidObservers< ObserversT, GraphT, ContextT, Valid >\fP" .br .ti -1c .RI "struct \fBserif::utils::dependencies::detail::ValidObservers< Observers< Registrations\&.\&.\&. >, GraphT, ContextT, true >\fP" .br .ti -1c .RI "struct \fBstd::formatter< serif::utils::dependencies::NodeOutcome >\fP" .br .in -1c .SS "Namespaces" .in +1c .ti -1c .RI "namespace \fBserif\fP" .br .ti -1c .RI "namespace \fBserif::utils\fP" .br .ti -1c .RI "namespace \fBserif::utils::dependencies\fP" .br .ti -1c .RI "namespace \fBserif::utils::dependencies::detail\fP" .br .in -1c .SS "Concepts" .in +1c .ti -1c .RI "concept \fBserif::utils::dependencies::NodeObserverCallbacks\fP" .br .RI "Completion must be safe during stack unwinding and receives the state created by the before hook\&. " .ti -1c .RI "concept \fBserif::utils::dependencies::KeyedNodeObserverCallbacks\fP" .br .RI "An all-node callback receives the compiled result identity before creating its invocation state\&. " .ti -1c .RI "concept \fBserif::utils::dependencies::ObserversFor\fP" .br .RI "Reject unknown nodes, nonexistent edges, and callbacks that cannot observe the graph's immutable values\&. " .in -1c .SS "Enumerations" .in +1c .ti -1c .RI "enum class \fBserif::utils::dependencies::NodeOutcome\fP { \fBserif::utils::dependencies::completed\fP, \fBserif::utils::dependencies::rejected\fP, \fBserif::utils::dependencies::exception\fP }" .br .RI "Describe a node invocation, independently of whether the whole graph request is later accepted\&. " .in -1c .SS "Functions" .in +1c .ti -1c .RI "template decltype(auto) \fBserif::utils::dependencies::detail::begin_node\fP (\fBNodeObserver\fP< KeyT, BeforeT, AfterT > &observer)" .br .RI "Preserve the existing nullary callback contract for individually selected nodes\&. " .ti -1c .RI "template decltype(auto) \fBserif::utils::dependencies::detail::begin_node\fP (\fBAllNodesObserver\fP< BeforeT, AfterT > &observer)" .br .RI "Bind the identity once so generic registrations use the same exception-safe invocation scope\&. " .ti -1c .RI "template void \fBserif::utils::dependencies::detail::observe_input\fP (ObserverT &, const ValueT &)" .br .RI "Unrelated registrations do not observe this edge\&. " .ti -1c .RI "template void \fBserif::utils::dependencies::detail::observe_input\fP (\fBEdgeObserver\fP< InputT, ConsumerT, FunctionT > &observer, const ValueT &value)" .br .RI "Edge observers read the numerical value even when its consumer receives an owning handle\&. " .ti -1c .RI "template .br requires NodeObserverCallbacks, std::decay_t> && std::constructible_from, BeforeT> && std::constructible_from, AfterT>auto \fBserif::utils::dependencies::observe_node\fP (BeforeT &&before, AfterT &&after)" .br .RI "Bind before/after callbacks to a result key; callback captures determine any external storage lifetime\&. " .ti -1c .RI "template .br requires std::constructible_from, BeforeT> && std::constructible_from, AfterT>auto \fBserif::utils::dependencies::observe_nodes\fP (BeforeT &&before, AfterT &&after)" .br .RI "Observe all executed nodes; cache construction checks the callback contract for every result key\&. " .ti -1c .RI "template .br requires std::constructible_from, FunctionT>auto \fBserif::utils::dependencies::observe_edge\fP (FunctionT &&function)" .br .RI "Bind a read-only callback to one input of one consumer; graph construction validates the edge and value type\&. " .ti -1c .RI "template .br requires (\fBdetail::is_observer_v\fP> && \&.\&.\&.) && (std::constructible_from, Registrations> && \&.\&.\&.)auto \fBserif::utils::dependencies::make_observers\fP (Registrations &&\&.\&.\&. observers)" .br .RI "Collect any number of registrations, including several observers of the same node or edge\&. " .ti -1c .RI "template consteval bool \fBserif::utils::dependencies::detail::valid_observer\fP (\fBNodeObserver\fP< KeyT, BeforeT, AfterT > *)" .br .RI "Nodes are identified by result keys, including constant computations without inputs\&. " .ti -1c .RI "template consteval bool \fBserif::utils::dependencies::detail::valid_all_nodes\fP (\fBKeyList\fP< Keys\&.\&.\&. >)" .br .RI "Use a bounded array scan rather than a graph-sized fold expression at the compiler's nesting limit\&. " .ti -1c .RI "template consteval bool \fBserif::utils::dependencies::detail::valid_observer\fP (\fBAllNodesObserver\fP< BeforeT, AfterT > *)" .br .RI "A generic callback must accept every node, including constant computations without inputs\&. " .ti -1c .RI "template consteval bool \fBserif::utils::dependencies::detail::valid_observer\fP (\fBEdgeObserver\fP< InputT, ConsumerT, FunctionT > *)" .br .RI "Use declared inputs to include source edges as well as computed prerequisites\&. " .in -1c .SS "Variables" .in +1c .ti -1c .RI "template constexpr bool \fBserif::utils::dependencies::detail::is_observer_v\fP = false" .br .ti -1c .RI "template constexpr bool \fBserif::utils::dependencies::detail::is_observer_v< NodeObserver< KeyT, BeforeT, AfterT > >\fP = true" .br .ti -1c .RI "template constexpr bool \fBserif::utils::dependencies::detail::is_observer_v< AllNodesObserver< BeforeT, AfterT > >\fP = true" .br .ti -1c .RI "template constexpr bool \fBserif::utils::dependencies::detail::is_observer_v< EdgeObserver< InputT, ConsumerT, FunctionT > >\fP = true" .br .ti -1c .RI "template constexpr bool \fBserif::utils::dependencies::detail::observes_node_v\fP = false" .br .ti -1c .RI "template constexpr bool \fBserif::utils::dependencies::detail::observes_node_v< NodeObserver< KeyT, BeforeT, AfterT >, KeyT >\fP = true" .br .ti -1c .RI "template constexpr bool \fBserif::utils::dependencies::detail::observes_node_v< AllNodesObserver< BeforeT, AfterT >, KeyT >\fP = true" .br .in -1c .SH "Author" .PP Generated automatically by Doxygen for SERiF from the source code\&.