8#include "../detail/executor/plan_validation.hpp"
9#include "../task_tree.hpp"
24template <
typename... Nodes>
28 static constexpr std::size_t
node_count =
sizeof...(Nodes);
49 template <std::
size_t I>
50 using node_type = std::tuple_element_t<I, tuple_type>;
52 template <std::
size_t I>
55 template <std::
size_t I>
58 template <std::
size_t I>
61 template <std::
size_t I>
64 template <std::
size_t I>
68 template <std::
size_t I>
72 template <std::
size_t I>
75 template <std::
size_t I>
78 template <std::
size_t I>
81 template <std::
size_t I>
84 template <std::
size_t I>
87 template <std::
size_t I, std::
size_t ChildOrdinal>
91 template <std::
size_t I>
92 [[nodiscard]]
constexpr auto&
entry() &
noexcept {
93 return std::get<I>(
nodes);
96 template <std::
size_t I>
97 [[nodiscard]]
constexpr const auto&
entry() const& noexcept {
98 return std::get<I>(
nodes);
101 template <std::
size_t I>
102 [[nodiscard]]
constexpr auto&&
entry() &&
noexcept {
103 return std::get<I>(std::move(
nodes));
107template <
typename Tree>
119template <
typename... Nodes>
132template <
typename Tree>
145template <
typename... Nodes>
146 requires (
sizeof...(Nodes) > 0) &&
152 std::move(tree.nodes)
156template <
typename... Nodes>
157 requires (
sizeof...(Nodes) > 0) &&
158 detail::plannable_plan_nodes<Nodes...>
typename task_output_for< Task >::type task_output_for_t
constexpr auto compiled_parent_indices_v
output_storage_mode
Describes how a node's logical output is backed at runtime.
consteval void emit_plan_diagnostic()
constexpr std::size_t max_level_v
constexpr auto compiled_slot_indices_v
constexpr auto compiled_levels_v
typename task_raw_result< Task >::type task_raw_result_t
Convenience alias for a task's raw return type.
slot_logical_policy
Node-local slot semantics inferred from a task's result protocol.
constexpr auto compiled_child_layout_v
constexpr bool is_adapter_descriptor_v
constexpr auto compile_plan(task_tree_builder< Nodes... > &&tree)
Compiles a populated task_tree_builder into a static plan.
typename compiled_plan_from< std::remove_cvref_t< Tree > >::type compiled_plan_t
Convenience alias for the compiled plan type produced from a tree type.
Static plan compiled from a task_tree_builder.
static constexpr std::size_t child_index
std::tuple< Nodes... > tuple_type
static constexpr std::size_t slot_index
static constexpr std::size_t child_count
static constexpr detail::output_storage_mode output_storage_mode_for
constexpr auto & entry() &noexcept
tuple_type nodes
Stored plan nodes in insertion order.
static constexpr std::size_t node_count
static constexpr auto levels
Node levels in insertion order.
typename node_type< I >::task_type task_type
static constexpr std::size_t parent_index
static constexpr auto child_indices
Flattened direct-child adjacency storage.
constexpr auto && entry() &&noexcept
static constexpr auto slot_indices
Logical output slot assigned to each node by now.
static constexpr auto parent_indices
Direct parent index for each node; the root stores no_parent.
static constexpr detail::slot_logical_policy slot_logical_policy_for
detail::task_raw_result_t< task_type< I > > raw_result_type
static constexpr auto child_offsets
Start offset of each node's child list inside child_indices.
static constexpr std::size_t no_parent
static constexpr std::size_t level
detail::task_output_for_t< task_type< I > > output_type
std::tuple_element_t< I, tuple_type > node_type
static constexpr auto child_counts
Number of direct children for each node.
static constexpr std::size_t child_offset
static constexpr std::size_t slot_count
constexpr const auto & entry() const &noexcept
typename node_type< I >::fanout_policy_type fanout_policy_type
static constexpr std::size_t max_level