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

Handle returned by Schedule::Set for configuring a named system set. More...

#include <system_set_handle.hpp>

Public Member Functions

constexpr SystemSetHandle (SystemSetId id, Schedule &schedule) noexcept
 Constructs a SystemSetHandle with the given system set id and schedule.
 SystemSetHandle (const SystemSetHandle &)=delete
constexpr SystemSetHandle (SystemSetHandle &&) noexcept=default
constexpr ~SystemSetHandle () noexcept=default
SystemSetHandleoperator= (const SystemSetHandle &)=delete
constexpr SystemSetHandleoperator= (SystemSetHandle &&) noexcept=default
constexpr auto Before (this auto &&self, SystemId target) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run before the given system.
template<SystemTrait T>
constexpr auto Before (this auto &&self) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run before the given system type.
constexpr auto Before (this auto &&self, const SystemHandle &target) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run before the given system handle.
constexpr auto Before (this auto &&self, SystemSetId target) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run before all members of the given set.
template<SystemSetTrait T>
constexpr auto BeforeSet (this auto &&self) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run before all members of the given set type.
constexpr auto Before (this auto &&self, const SystemSetHandle &target) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run before the given system set handle.
constexpr auto Before (this auto &&self, const SystemGroupHandle &target) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run before all members of the given system group.
constexpr auto After (this auto &&self, SystemId target) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run after the given system.
template<SystemTrait T>
constexpr auto After (this auto &&self) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run after the given system type.
constexpr auto After (this auto &&self, const SystemHandle &target) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run after the given system handle.
constexpr auto After (this auto &&self, SystemSetId target) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run after all members of the given set.
template<SystemSetTrait T>
constexpr auto AfterSet (this auto &&self) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run after all members of the given set type.
constexpr auto After (this auto &&self, const SystemSetHandle &target) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run after the given system set handle.
constexpr auto After (this auto &&self, const SystemGroupHandle &target) -> decltype(std::forward< decltype(self)>(self))
 Adds an ordering constraint: all members of this set must run after all members of the given system group.
constexpr auto RunIf (this auto &&self, RunCondition condition, AccessPolicy policy={}, SystemLocalDataOptions options={}) -> decltype(std::forward< decltype(self)>(self))
 Adds a run condition predicate that applies to all members.
template<FunctorSystemTrait T>
constexpr auto RunIf (this auto &&self, T &&condition) -> decltype(std::forward< decltype(self)>(self))
 Adds a run condition functor that applies to all members.
template<SystemTrait T>
constexpr auto RunIf (this auto &&self, std::string name, T &&condition) -> decltype(std::forward< decltype(self)>(self))
 Adds a run condition to all set members with an explicit name.
constexpr auto Sequence (this auto &&self) -> decltype(std::forward< decltype(self)>(self))
 Marks this set as a sequence: systems run in insertion order.
constexpr ScheduleDone () noexcept
 Finishes configuration and returns a reference to the parent schedule.
constexpr SystemSetId Id () const noexcept
 Gets the identifier for this system set.

Detailed Description

Handle returned by Schedule::Set for configuring a named system set.

Definition at line 18 of file system_set_handle.hpp.

Constructor & Destructor Documentation

◆ SystemSetHandle() [1/3]

helios::ecs::SystemSetHandle::SystemSetHandle ( SystemSetId id,
Schedule & schedule )
inlineconstexprnoexcept

Constructs a SystemSetHandle with the given system set id and schedule.

Parameters
idThe system set id
scheduleThe schedule that the system set belongs to

Definition at line 26 of file system_set_handle.hpp.

◆ SystemSetHandle() [2/3]

helios::ecs::SystemSetHandle::SystemSetHandle ( const SystemSetHandle & )
delete

◆ SystemSetHandle() [3/3]

helios::ecs::SystemSetHandle::SystemSetHandle ( SystemSetHandle && )
constexprdefaultnoexcept

◆ ~SystemSetHandle()

helios::ecs::SystemSetHandle::~SystemSetHandle ( )
constexprdefaultnoexcept

Member Function Documentation

◆ After() [1/6]

template<SystemTrait T>
auto helios::ecs::SystemSetHandle::After ( this auto && self) -> decltype(std::forward< decltype(self)>(self))
inlineconstexpr

Adds an ordering constraint: all members of this set must run after the given system type.

Template Parameters
TSystem type satisfying SystemTrait
Returns
Reference to this handle for chaining

Definition at line 125 of file system_set_handle.hpp.

◆ After() [2/6]

auto helios::ecs::SystemSetHandle::After ( this auto && self,
const SystemGroupHandle & target ) -> decltype(std::forward< decltype(self)>(self))
constexpr

Adds an ordering constraint: all members of this set must run after all members of the given system group.

Parameters
targetSystem group handle that this set must follow
Returns
Reference to this handle for chaining

Definition at line 854 of file schedule.hpp.

◆ After() [3/6]

auto helios::ecs::SystemSetHandle::After ( this auto && self,
const SystemHandle & target ) -> decltype(std::forward< decltype(self)>(self))
inlineconstexpr

Adds an ordering constraint: all members of this set must run after the given system handle.

Parameters
targetSystem handle that this set must follow
Returns
Reference to this handle for chaining

Definition at line 136 of file system_set_handle.hpp.

◆ After() [4/6]

auto helios::ecs::SystemSetHandle::After ( this auto && self,
const SystemSetHandle & target ) -> decltype(std::forward< decltype(self)>(self))
inlineconstexpr

Adds an ordering constraint: all members of this set must run after the given system set handle.

Parameters
targetSystem set handle that this set must follow
Returns
Reference to this handle for chaining

Definition at line 168 of file system_set_handle.hpp.

◆ After() [5/6]

auto helios::ecs::SystemSetHandle::After ( this auto && self,
SystemId target ) -> decltype(std::forward< decltype(self)>(self))
constexpr

Adds an ordering constraint: all members of this set must run after the given system.

Parameters
targetSystem id that this set must follow
Returns
Reference to this handle for chaining

Definition at line 832 of file schedule.hpp.

◆ After() [6/6]

auto helios::ecs::SystemSetHandle::After ( this auto && self,
SystemSetId target ) -> decltype(std::forward< decltype(self)>(self))
constexpr

Adds an ordering constraint: all members of this set must run after all members of the given set.

Parameters
targetSet id that this set must follow
Returns
Reference to this handle for chaining

Definition at line 843 of file schedule.hpp.

◆ AfterSet()

template<SystemSetTrait T>
auto helios::ecs::SystemSetHandle::AfterSet ( this auto && self) -> decltype(std::forward< decltype(self)>(self))
inlineconstexpr

Adds an ordering constraint: all members of this set must run after all members of the given set type.

Template Parameters
TSet type satisfying SystemSetTrait
Returns
Reference to this handle for chaining

Definition at line 157 of file system_set_handle.hpp.

◆ Before() [1/6]

template<SystemTrait T>
auto helios::ecs::SystemSetHandle::Before ( this auto && self) -> decltype(std::forward< decltype(self)>(self))
inlineconstexpr

Adds an ordering constraint: all members of this set must run before the given system type.

Template Parameters
TSystem type satisfying SystemTrait
Returns
Reference to this handle for chaining

Definition at line 52 of file system_set_handle.hpp.

◆ Before() [2/6]

auto helios::ecs::SystemSetHandle::Before ( this auto && self,
const SystemGroupHandle & target ) -> decltype(std::forward< decltype(self)>(self))
constexpr

Adds an ordering constraint: all members of this set must run before all members of the given system group.

Parameters
targetSystem group handle that this set must precede
Returns
Reference to this handle for chaining

Definition at line 826 of file schedule.hpp.

◆ Before() [3/6]

auto helios::ecs::SystemSetHandle::Before ( this auto && self,
const SystemHandle & target ) -> decltype(std::forward< decltype(self)>(self))
inlineconstexpr

Adds an ordering constraint: all members of this set must run before the given system handle.

Parameters
targetSystem handle that this set must precede
Returns
Reference to this handle for chaining

Definition at line 63 of file system_set_handle.hpp.

◆ Before() [4/6]

auto helios::ecs::SystemSetHandle::Before ( this auto && self,
const SystemSetHandle & target ) -> decltype(std::forward< decltype(self)>(self))
inlineconstexpr

Adds an ordering constraint: all members of this set must run before the given system set handle.

Parameters
targetSystem set handle that this set must precede
Returns
Reference to this handle for chaining

Definition at line 95 of file system_set_handle.hpp.

◆ Before() [5/6]

auto helios::ecs::SystemSetHandle::Before ( this auto && self,
SystemId target ) -> decltype(std::forward< decltype(self)>(self))
constexpr

Adds an ordering constraint: all members of this set must run before the given system.

Parameters
targetSystem id that this set must precede
Returns
Reference to this handle for chaining

Definition at line 804 of file schedule.hpp.

◆ Before() [6/6]

auto helios::ecs::SystemSetHandle::Before ( this auto && self,
SystemSetId target ) -> decltype(std::forward< decltype(self)>(self))
constexpr

Adds an ordering constraint: all members of this set must run before all members of the given set.

Parameters
targetSet id that this set must precede
Returns
Reference to this handle for chaining

Definition at line 815 of file schedule.hpp.

◆ BeforeSet()

template<SystemSetTrait T>
auto helios::ecs::SystemSetHandle::BeforeSet ( this auto && self) -> decltype(std::forward< decltype(self)>(self))
inlineconstexpr

Adds an ordering constraint: all members of this set must run before all members of the given set type.

Template Parameters
TSet type satisfying SystemSetTrait
Returns
Reference to this handle for chaining

Definition at line 84 of file system_set_handle.hpp.

◆ Done()

Schedule & helios::ecs::SystemSetHandle::Done ( )
inlineconstexprnoexcept

Finishes configuration and returns a reference to the parent schedule.

Returns
Reference to the parent schedule for continued configuration

Definition at line 229 of file system_set_handle.hpp.

◆ Id()

SystemSetId helios::ecs::SystemSetHandle::Id ( ) const
inlinenodiscardconstexprnoexcept

Gets the identifier for this system set.

Returns
System set id

Definition at line 235 of file system_set_handle.hpp.

◆ operator=() [1/2]

SystemSetHandle & helios::ecs::SystemSetHandle::operator= ( const SystemSetHandle & )
delete

◆ operator=() [2/2]

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

◆ RunIf() [1/3]

auto helios::ecs::SystemSetHandle::RunIf ( this auto && self,
RunCondition condition,
AccessPolicy policy = {},
SystemLocalDataOptions options = {} ) -> decltype(std::forward< decltype(self)>(self))
constexpr

Adds a run condition predicate that applies to all members.

Parameters
conditionPredicate evaluated before any member runs
policyAccess policy for the run condition
optionsOptions for run condition local data construction
Returns
Reference to this handle for chaining

Definition at line 860 of file schedule.hpp.

◆ RunIf() [2/3]

template<SystemTrait T>
auto helios::ecs::SystemSetHandle::RunIf ( this auto && self,
std::string name,
T && condition ) -> decltype(std::forward< decltype(self)>(self))
constexpr

Adds a run condition to all set members with an explicit name.

Required for lambdas.

Template Parameters
TRun condition type satisfying SystemTrait
Parameters
nameHuman-readable name
conditionFunctor with declared access policy
Returns
Reference to this handle for chaining

Definition at line 887 of file schedule.hpp.

◆ RunIf() [3/3]

template<FunctorSystemTrait T>
auto helios::ecs::SystemSetHandle::RunIf ( this auto && self,
T && condition ) -> decltype(std::forward< decltype(self)>(self))
constexpr

Adds a run condition functor that applies to all members.

Lambdas are rejected; use RunIf(std::string, T&&).

Template Parameters
TRun condition type satisfying FunctorSystemTrait
Parameters
conditionFunctor with declared access policy
Returns
Reference to this handle for chaining

Definition at line 875 of file schedule.hpp.

◆ Sequence()

auto helios::ecs::SystemSetHandle::Sequence ( this auto && self) -> decltype(std::forward< decltype(self)>(self))
constexpr

Marks this set as a sequence: systems run in insertion order.

Returns
Reference to this handle for chaining

Definition at line 900 of file schedule.hpp.