YOrch 1.0.0
Loading...
Searching...
No Matches
serial_dfs_explicit_heap_stack.hpp File Reference
#include <array>
#include <cstddef>
#include <utility>
#include <vector>
#include "../../result.hpp"
#include "node_entry.hpp"
Include dependency graph for serial_dfs_explicit_heap_stack.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  yorch::detail::dfs_stack_frame
 Runtime frame used by the explicit-heap-stack DFS executor. More...
 
struct  yorch::detail::explicit_heap_stack_dispatch< Plan, Slots >
 
struct  yorch::detail::explicit_heap_stack_dispatch_with_ctx< Plan, Slots, Ctx >
 

Namespaces

namespace  yorch
 
namespace  yorch::detail
 

Functions

template<std::size_t I, typename Plan , typename Slots >
constexpr node_enter_result yorch::detail::enter_node_runtime (Plan &plan, Slots &slots, plan_fanout_state< Plan > &fanout)
 Per-node runtime thunk for entering node I.
 
template<std::size_t I, typename Plan , typename Slots , typename Ctx >
constexpr node_enter_result yorch::detail::enter_node_runtime (Plan &plan, Slots &slots, plan_fanout_state< Plan > &fanout, Ctx &ctx)
 Context-threading variant of the per-node enter thunk.
 
template<std::size_t I, typename Slots >
constexpr void yorch::detail::destroy_node_payload_runtime (Slots &slots) noexcept
 Per-node runtime thunk for destroying node I's payload slot.
 
template<std::size_t I, typename Plan , typename Slots >
constexpr void yorch::detail::prepare_fanout_runtime (Slots &slots, plan_fanout_state< Plan > &fanout)
 
template<std::size_t I, typename Plan >
constexpr void yorch::detail::destroy_fanout_runtime (plan_fanout_state< Plan > &fanout) noexcept
 
template<typename Plan , typename Slots , std::size_t... I>
consteval auto yorch::detail::make_enter_node_dispatch_table (std::index_sequence< I... >)
 Builds the runtime dispatch table for node entry without external context.
 
template<typename Plan , typename Slots , typename Ctx , std::size_t... I>
consteval auto yorch::detail::make_enter_node_dispatch_table (std::index_sequence< I... >)
 Builds the runtime dispatch table for node entry with external context.
 
template<typename Plan , typename Slots , std::size_t... I>
consteval auto yorch::detail::make_destroy_node_dispatch_table (std::index_sequence< I... >)
 Builds the runtime dispatch table for payload destruction.
 
template<typename Plan , typename Slots , std::size_t... I>
consteval auto yorch::detail::make_prepare_fanout_dispatch_table (std::index_sequence< I... >)
 
template<typename Plan , typename Slots , std::size_t... I>
consteval auto yorch::detail::make_destroy_fanout_dispatch_table (std::index_sequence< I... >)
 
template<typename Plan , std::size_t... I>
consteval auto yorch::detail::make_requires_fanout_staging_table (std::index_sequence< I... >)
 
template<typename Plan , typename EnterInvoker , typename DestroyInvoker , typename PrepareFanoutInvoker , typename DestroyFanoutInvoker >
constexpr step_result yorch::detail::run_explicit_heap_stack_loop (const auto &requires_fanout_staging_by_index, EnterInvoker enter_node_by_index, DestroyInvoker destroy_node_payload_by_index, PrepareFanoutInvoker prepare_fanout_by_index, DestroyFanoutInvoker destroy_fanout_by_index)
 Executes serial DFS using a heap-backed explicit stack.
 
template<typename Plan , typename Slots >
constexpr step_result yorch::detail::run_explicit_heap_stack (Plan &plan, Slots &slots, plan_fanout_state< Plan > &fanout)
 
template<typename Plan , typename Slots , typename Ctx >
constexpr step_result yorch::detail::run_explicit_heap_stack (Plan &plan, Slots &slots, plan_fanout_state< Plan > &fanout, Ctx &ctx)