Helios Engine
A modular ECS based data-oriented C++23 game engine framework
Loading...
Searching...
No Matches
helios::ecs::AccessPolicyBuilder Class Reference

Fluent builder for constructing an AccessPolicy. More...

#include <access_policy.hpp>

Public Member Functions

constexpr AccessPolicyBuilder () noexcept=default
constexpr AccessPolicyBuilder (const AccessPolicyBuilder &)=default
constexpr AccessPolicyBuilder (AccessPolicyBuilder &&) noexcept=default
constexpr ~AccessPolicyBuilder ()=default
constexpr AccessPolicyBuilderoperator= (const AccessPolicyBuilder &)=default
constexpr AccessPolicyBuilderoperator= (AccessPolicyBuilder &&) noexcept=default
constexpr AccessPolicy Build () noexcept
 Builds and returns the accumulated AccessPolicy.
template<typename... Components>
requires details::UniqueComponentAccess<Components...> && (ComponentTrait<details::ComponentTypeExtractor_t<Components>> && ...)
constexpr auto Query (this auto &&self) -> decltype(std::forward< decltype(self)>(self))
 Declares a query over component types.
template<ResourceTrait... Resources>
requires utils::UniqueTypes<Resources...>
constexpr auto ReadResources (this auto &&self) -> decltype(std::forward< decltype(self)>(self))
 Declares read-only access to resource types.
template<ResourceTrait... Resources>
requires utils::UniqueTypes<Resources...>
constexpr auto WriteResources (this auto &&self) -> decltype(std::forward< decltype(self)>(self))
 Declares write access to resource types.

Detailed Description

Fluent builder for constructing an AccessPolicy.

Accumulates component and resource access declarations across any number of Query, ReadResources, and WriteResources calls. Duplicate entries are silently ignored; all sets are kept sorted.

.Query<const Transform&, const Velocity&>()
.ReadResources<Camera, RenderSettings>()
.Build();
Fluent builder for constructing an AccessPolicy.
constexpr auto Query(this auto &&self) -> decltype(std::forward< decltype(self)>(self))
Declares a query over component types.
constexpr auto WriteResources(this auto &&self) -> decltype(std::forward< decltype(self)>(self))
Declares write access to resource types.

Definition at line 529 of file access_policy.hpp.

Constructor & Destructor Documentation

◆ AccessPolicyBuilder() [1/3]

helios::ecs::AccessPolicyBuilder::AccessPolicyBuilder ( )
constexprdefaultnoexcept

◆ AccessPolicyBuilder() [2/3]

helios::ecs::AccessPolicyBuilder::AccessPolicyBuilder ( const AccessPolicyBuilder & )
constexprdefault

◆ AccessPolicyBuilder() [3/3]

helios::ecs::AccessPolicyBuilder::AccessPolicyBuilder ( AccessPolicyBuilder && )
constexprdefaultnoexcept

◆ ~AccessPolicyBuilder()

helios::ecs::AccessPolicyBuilder::~AccessPolicyBuilder ( )
constexprdefault

Member Function Documentation

◆ Build()

AccessPolicy helios::ecs::AccessPolicyBuilder::Build ( )
inlineconstexprnoexcept

Builds and returns the accumulated AccessPolicy.

Returns
The accumulated AccessPolicy

Definition at line 545 of file access_policy.hpp.

◆ operator=() [1/2]

AccessPolicyBuilder & helios::ecs::AccessPolicyBuilder::operator= ( AccessPolicyBuilder && )
constexprdefaultnoexcept

◆ operator=() [2/2]

AccessPolicyBuilder & helios::ecs::AccessPolicyBuilder::operator= ( const AccessPolicyBuilder & )
constexprdefault

◆ Query()

template<typename... Components>
requires details::UniqueComponentAccess<Components...> && (ComponentTrait<details::ComponentTypeExtractor_t<Components>> && ...)
auto helios::ecs::AccessPolicyBuilder::Query ( this auto && self) -> decltype(std::forward< decltype(self)>(self))
constexpr

Declares a query over component types.

Component accesses are merged into the policy-wide flat read / write sets. Duplicates are silently ignored (a component already declared for writing is not re-added if the same type appears again as a write in a later Query call).

Access classification:

  • const T&, const T*, const T, T (value copy) → read
  • T&, T&&, T* → write

Tag components (empty types) are excluded from conflict tracking.

Template Parameters
ComponentsComponent access types
Returns
*this for method chaining

Definition at line 609 of file access_policy.hpp.

◆ ReadResources()

template<ResourceTrait... Resources>
requires utils::UniqueTypes<Resources...>
auto helios::ecs::AccessPolicyBuilder::ReadResources ( this auto && self) -> decltype(std::forward< decltype(self)>(self))
constexpr

Declares read-only access to resource types.

Thread-safe resources are silently ignored.

Template Parameters
ResourcesResource types to read
Returns
*this for method chaining

Definition at line 633 of file access_policy.hpp.

◆ WriteResources()

template<ResourceTrait... Resources>
requires utils::UniqueTypes<Resources...>
auto helios::ecs::AccessPolicyBuilder::WriteResources ( this auto && self) -> decltype(std::forward< decltype(self)>(self))
constexpr

Declares write access to resource types.

Thread-safe resources are silently ignored.

Template Parameters
ResourcesResource types to write
Returns
*this for method chaining

Definition at line 649 of file access_policy.hpp.