8template <
typename...
Nodes>
10 return std::array<std::size_t,
sizeof...(Nodes)> {Nodes::level...};
13template <std::
size_t N>
15 std::array<std::size_t, N> indices {};
17 for (std::size_t
i = 0;
i < N; ++
i) {
39template <std::
size_t N>
41 std::array<std::size_t, N>
parents {};
44 if constexpr (N > 0) {
47 for (std::size_t node = 1; node < N; ++node) {
78template <std::
size_t N>
80 std::array<std::size_t, N>
counts {};
82 std::array<std::size_t, (N > 0 ? N - 1 : 0)>
indices {};
103template <std::
size_t N>
107 if constexpr (N > 0) {
108 for (std::size_t node = 1; node < N; ++node) {
113 for (std::size_t node = 0; node < N; ++node) {
120 for (std::size_t node = 1; node < N; ++node) {
129template <
typename...
Nodes>
132template <
typename...
Nodes>
136template <
typename...
Nodes>
140template <
typename...
Nodes>
constexpr auto compiled_parent_indices_v
consteval auto make_child_layout(const std::array< std::size_t, N > &parents)
Builds a flat direct-child adjacency layout from per-node parent indices.
constexpr auto compiled_slot_indices_v
consteval auto make_level_array()
constexpr auto compiled_levels_v
consteval auto make_slot_index_array()
consteval auto make_parent_index_array(const std::array< std::size_t, N > &levels)
Reconstructs each node's direct parent index from the recorded level sequence.
constexpr auto compiled_child_layout_v
constexpr bool is_adapter_descriptor_v
Flat direct-child adjacency storage for a tree-shaped plan.
std::array< std::size_t, N > counts
std::array< std::size_t,(N > 0 ? N - 1 :0)> indices
std::array< std::size_t, N > offsets