Helios Engine 0.1.0
A modular ECS based data-oriented C++23 game engine
 
Loading...
Searching...
No Matches
helios::ecs::EventWriter< T > Class Template Reference

Type-safe writer for events. More...

#include <event_writer.hpp>

Public Member Functions

constexpr EventWriter (details::EventManager &manager) noexcept
 Constructs an EventWriter.
 
 EventWriter (const EventWriter &)=delete
 
constexpr EventWriter (EventWriter &&) noexcept=default
 
constexpr ~EventWriter () noexcept=default
 
EventWriteroperator= (const EventWriter &)=delete
 
constexpr EventWriteroperator= (EventWriter &&) noexcept=default
 
void Write (const T &event)
 Writes a single event (copy).
 
template<std::ranges::sized_range R>
requires std::same_as<std::ranges::range_value_t<R>, T>
void WriteBulk (const R &events)
 Writes multiple events to the queue in bulk.
 
template<typename... Args>
requires std::constructible_from<T, Args...>
void Emplace (Args &&... args)
 Emplaces an event in-place.
 

Detailed Description

template<EventTrait T>
class helios::ecs::EventWriter< T >

Type-safe writer for events.

Provides a clean, ergonomic API for writing events to the event system. EventWriter is a lightweight wrapper around EventManager that enforces type safety and provides convenient methods for bulk operations and in-place construction.

Note
EventWriter holds a non-const reference to EventManager and is not thread-safe. EventWriter is intended to be short-lived (function-scoped).
Template Parameters
TEvent type
auto writer = world.WriteEvents<MyEvent>();
writer.Write(MyEvent{42});
writer.Emplace(42); // Construct in-place
writer.WriteBulk(event_span);

Definition at line 28 of file event_writer.hpp.

Constructor & Destructor Documentation

◆ EventWriter() [1/3]

template<EventTrait T>
constexpr helios::ecs::EventWriter< T >::EventWriter ( details::EventManager manager)
inlineexplicitconstexprnoexcept

Constructs an EventWriter.

Parameters
managerReference to the event manager

Definition at line 34 of file event_writer.hpp.

34: manager_(manager) {}
BasicQuery< World, Allocator, Components... > Query
Type alias for query with mutable world access.
Definition query.hpp:2481

◆ EventWriter() [2/3]

template<EventTrait T>
helios::ecs::EventWriter< T >::EventWriter ( const EventWriter< T > &  )
delete

◆ EventWriter() [3/3]

template<EventTrait T>
constexpr helios::ecs::EventWriter< T >::EventWriter ( EventWriter< T > &&  )
constexprdefaultnoexcept

◆ ~EventWriter()

template<EventTrait T>
constexpr helios::ecs::EventWriter< T >::~EventWriter ( )
constexprdefaultnoexcept

Member Function Documentation

◆ Emplace()

template<EventTrait T>
template<typename... Args>
requires std::constructible_from<T, Args...>
void helios::ecs::EventWriter< T >::Emplace ( Args &&...  args)
inline

Emplaces an event in-place.

Constructs the event directly in the event queue, avoiding unnecessary copies or moves.

Template Parameters
ArgsConstructor argument types
Parameters
argsArguments to forward to event constructor

Definition at line 69 of file event_writer.hpp.

69 {
70 manager_.Write(T{std::forward<Args>(args)...});
71 }
void Write(const T &event)
Writes a single event to the current queue.

◆ operator=() [1/2]

template<EventTrait T>
EventWriter & helios::ecs::EventWriter< T >::operator= ( const EventWriter< T > &  )
delete

◆ operator=() [2/2]

template<EventTrait T>
constexpr EventWriter & helios::ecs::EventWriter< T >::operator= ( EventWriter< T > &&  )
constexprdefaultnoexcept

◆ Write()

template<EventTrait T>
void helios::ecs::EventWriter< T >::Write ( const T &  event)
inline

Writes a single event (copy).

Copies the event into the current event queue.

Parameters
eventEvent to write

Definition at line 47 of file event_writer.hpp.

47{ manager_.Write(event); }

◆ WriteBulk()

template<EventTrait T>
template<std::ranges::sized_range R>
requires std::same_as<std::ranges::range_value_t<R>, T>
void helios::ecs::EventWriter< T >::WriteBulk ( const R events)
inline

Writes multiple events to the queue in bulk.

Template Parameters
RRange of events
Parameters
eventsRange of events to store

Definition at line 56 of file event_writer.hpp.

56 {
57 manager_.WriteBulk(events);
58 }
void WriteBulk(const R &events)
Writes multiple events to the queue in bulk.