YOrch 1.0.0
Loading...
Searching...
No Matches
layout.hpp File Reference
#include <array>
#include <cstddef>
#include <tuple>
#include <type_traits>
#include <utility>
#include "../../slots/policies.hpp"
#include "erased_slot.hpp"
#include "policy.hpp"
#include "typed_slot.hpp"
Include dependency graph for layout.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  yorch::detail::compact_slot_index_layout< Plan >
 Intermediate index data for the serial-DFS compact slot layout. More...
 
struct  yorch::detail::plan_slot_layout< Plan, yorch::slot_layout_one_to_one_policy >
 
struct  yorch::detail::plan_slot_layout< Plan, yorch::slot_layout_serial_dfs_compact_policy >
 

Namespaces

namespace  yorch
 
namespace  yorch::detail
 

Concepts

concept  yorch::detail::payload_node
 True when node I owns physical storage for its output.
 

Typedefs

template<typename Layout >
using yorch::detail::plan_erased_slots_tuple_t = decltype(make_erased_slots_tuple< Layout >(std::make_index_sequence< Layout::physical_slot_count > {}))
 Erased backend storage tuple for compact/layout-driven plan slots.
 
template<typename Plan >
using yorch::detail::plan_typed_slots_tuple_t = decltype(make_typed_slots_tuple< Plan >(std::make_index_sequence< payload_node_count_v< Plan > > {}))
 Typed backend storage tuple for one-to-one owned payload slots.
 

Functions

template<typename Plan , std::size_t... I>
consteval auto yorch::detail::make_payload_node_array (std::index_sequence< I... >)
 Builds the compile-time node -> has-payload table for a plan.
 
template<typename Plan , std::size_t... I>
consteval auto yorch::detail::make_slot_logical_policy_array (std::index_sequence< I... >)
 Builds the compile-time node -> logical slot policy table.
 
template<typename Plan >
consteval auto yorch::detail::make_one_to_one_physical_slot_indices ()
 Builds the one-to-one node -> physical slot index table.
 
template<typename Plan >
consteval auto yorch::detail::make_serial_dfs_compact_slot_layout ()
 Builds the serial-DFS compact node -> physical slot layout.
 
constexpr slot_physical_policy yorch::detail::join_slot_physical_policy (slot_physical_policy left, slot_logical_policy right) noexcept
 Joins one node's logical policy into a physical slot policy.
 
template<typename Plan , std::size_t PhysicalSlotCount, std::size_t... I>
consteval auto yorch::detail::make_physical_slot_sizes (const std::array< std::size_t, Plan::node_count > &indices, std::index_sequence< I... >)
 Computes the required raw storage size for each physical slot.
 
template<typename Plan , std::size_t PhysicalSlotCount, std::size_t... I>
consteval auto yorch::detail::make_physical_slot_alignments (const std::array< std::size_t, Plan::node_count > &indices, std::index_sequence< I... >)
 Computes the required alignment for each physical slot.
 
template<typename Plan , std::size_t PhysicalSlotCount, std::size_t... I>
consteval auto yorch::detail::make_physical_slot_policies (const std::array< std::size_t, Plan::node_count > &indices, std::index_sequence< I... >)
 Computes the storage policy for each physical slot.
 
template<typename Layout , std::size_t... K>
auto yorch::detail::make_erased_slots_tuple (std::index_sequence< K... >) -> std::tuple< erased_slot< Layout::physical_slot_sizes[K], Layout::physical_slot_alignments[K], Layout::template physical_slot_policy< K > >... >
 Type factory for a layout's erased-slot storage tuple.
 
template<typename Plan , std::size_t PhysicalSlot>
consteval std::size_t yorch::detail::one_to_one_physical_slot_owner_node ()
 Finds the unique node that owns a one-to-one physical slot.
 
template<typename Plan , std::size_t... K>
auto yorch::detail::make_typed_slots_tuple (std::index_sequence< K... >) -> std::tuple< typed_slot< typename Plan::template output_type< one_to_one_physical_slot_owner_node< Plan, K >()>, Plan::template slot_logical_policy_for< one_to_one_physical_slot_owner_node< Plan, K >()> >... >
 Type factory for a plan's typed one-to-one slot tuple.
 

Variables

template<typename Plan >
constexpr auto yorch::detail::payload_node_array_v
 
template<typename Plan >
constexpr auto yorch::detail::slot_logical_policy_array_v
 
template<typename Plan >
constexpr std::size_t yorch::detail::payload_node_count_v