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

#include <event_reader.hpp>

Public Types

using AdaptorIterator = EventIterator< T >
 
using AdaptorConstIterator = EventSimpleIterator< T >
 
using value_type = std::remove_cvref_t< T >
 
using const_iterator = AdaptorConstIterator
 
using iterator = const_iterator
 

Public Member Functions

constexpr EventReader (const details::EventManager &manager) noexcept
 Constructs an EventReader.
 
 EventReader (const EventReader &)=delete
 
 EventReader (EventReader &&) noexcept=default
 
 ~EventReader () noexcept=default
 
EventReaderoperator= (const EventReader &)=delete
 
EventReaderoperator= (EventReader &&) noexcept=default
 
auto Read () const &-> std::span< const value_type >
 
auto Collect () const -> std::vector< value_type >
 
template<typename Alloc >
requires std::same_as<typename Alloc::value_type, std::remove_cvref_t<T>>
auto CollectWith (Alloc alloc) const -> std::vector< value_type, Alloc >
 
template<typename OutIt >
requires std::output_iterator<OutIt, value_type>
void ReadInto (OutIt out) const
 
template<typename OutIt >
requires std::output_iterator<OutIt, std::remove_cvref_t<T>>
void Into (OutIt out) const
 
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
const value_typeFindFirst (const Pred &predicate) const &
 
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
size_t CountIf (const Pred &predicate) const
 
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto Filter (Pred predicate) const &-> utils::FilterAdapter< AdaptorIterator, Pred >
 
template<typename Func >
requires utils::TransformFor<Func, const std::remove_cvref_t<T>&>
auto Map (Func transform) const &-> utils::MapAdapter< AdaptorIterator, Func >
 
auto Take (size_t count) const &-> utils::TakeAdapter< AdaptorIterator >
 
auto Skip (size_t count) const &-> utils::SkipAdapter< AdaptorIterator >
 Skips the first N events.
 
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto TakeWhile (Pred predicate) const &-> utils::TakeWhileAdapter< AdaptorIterator, Pred >
 
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto SkipWhile (Pred predicate) const &-> utils::SkipWhileAdapter< AdaptorIterator, Pred >
 
auto Enumerate () const &-> utils::EnumerateAdapter< AdaptorIterator >
 
template<typename Func >
requires utils::InspectorFor<Func, const std::remove_cvref_t<T>&>
auto Inspect (Func inspector) const &-> utils::InspectAdapter< AdaptorIterator, Func >
 
auto StepBy (size_t step) const &-> utils::StepByAdapter< AdaptorIterator >
 
auto Reverse () const &-> utils::ReverseAdapter< AdaptorIterator >
 
auto Slide (size_t window_size) const &-> utils::SlideAdapter< AdaptorIterator >
 
auto Stride (size_t stride) const &-> utils::StrideAdapter< AdaptorIterator >
 
template<typename OtherIter >
requires utils::IteratorLike<OtherIter>
auto Zip (OtherIter other_begin, OtherIter other_end) const &-> utils::ZipAdapter< AdaptorIterator, OtherIter >
 
template<typename Action >
requires utils::ActionFor<Action, const std::remove_cvref_t<T>&>
void ForEach (const Action &action) const
 
template<typename Acc , typename Folder >
requires utils::FolderFor<Folder, Acc, const std::remove_cvref_t<T>&>
Acc Fold (Acc init, const Folder &folder) const
 
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
bool Any (const Pred &predicate) const
 Checks if any event matches the predicate.
 
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
bool All (const Pred &predicate) const
 
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto Find (const Pred &predicate) const -> std::optional< value_type >
 
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
constexpr bool None (const Pred &predicate) const
 
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto Partition (const Pred &predicate) const -> std::pair< std::vector< value_type >, std::vector< value_type > >
 
template<typename KeyFunc >
requires std::invocable<KeyFunc, const std::remove_cvref_t<T>&>
auto MaxBy (const KeyFunc &key_func) const -> std::optional< value_type >
 
template<typename KeyFunc >
requires std::invocable<KeyFunc, const std::remove_cvref_t<T>&>
auto MinBy (const KeyFunc &key_func) const -> std::optional< value_type >
 
template<typename KeyFunc >
requires std::invocable<KeyFunc, const std::remove_cvref_t<T>&>
auto GroupBy (const KeyFunc &key_func) const -> std::unordered_map< std::invoke_result_t< KeyFunc, const value_type & >, std::vector< value_type > >
 
bool Empty () const
 Checks if there are any events.
 
size_t Count () const
 Returns the number of events.
 
const_iterator begin () const
 Returns an iterator to the beginning of events.
 
const_iterator end () const
 Returns an iterator to the end of events.
 
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto FindFirst (const Pred &predicate) const &-> const value_type *
 

Detailed Description

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

Definition at line 187 of file event_reader.hpp.

Member Typedef Documentation

◆ AdaptorConstIterator

◆ AdaptorIterator

◆ const_iterator

◆ iterator

◆ value_type

template<EventTrait T>
using helios::ecs::EventReader< T >::value_type = std::remove_cvref_t<T>

Constructor & Destructor Documentation

◆ EventReader() [1/3]

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

Constructs an EventReader.

Parameters
managerReference to the event manager

Definition at line 200 of file event_reader.hpp.

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

◆ EventReader() [2/3]

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

◆ EventReader() [3/3]

template<EventTrait T>
helios::ecs::EventReader< T >::EventReader ( EventReader< T > &&  )
defaultnoexcept

◆ ~EventReader()

Member Function Documentation

◆ All()

template<EventTrait T>
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
bool helios::ecs::EventReader< T >::All ( const Pred predicate) const
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 893 of file event_reader.hpp.

893 {
894 EnsureCached();
895 for (const auto& event : *cached_events_) {
896 if (!predicate(event)) {
897 return false;
898 }
899 }
900 return true;
901}

◆ Any()

template<EventTrait T>
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
bool helios::ecs::EventReader< T >::Any ( const Pred predicate) const
inline

Checks if any event matches the predicate.

Short-circuits on first match for efficiency.

Template Parameters
PredPredicate function type (const T&) -> bool
Parameters
predicateFunction to test each event
Returns
True if at least one event matches, false otherwise
bool has_critical = reader.Any([](const MyEvent& e) { return e.is_critical; });
bool Any(const Pred &predicate) const
Definition query.hpp:1443
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 880 of file event_reader.hpp.

880 {
881 EnsureCached();
882 for (const auto& event : *cached_events_) {
883 if (predicate(event)) {
884 return true;
885 }
886 }
887 return false;
888}

◆ begin()

template<EventTrait T>
auto helios::ecs::EventReader< T >::begin ( ) const
inline

Returns an iterator to the beginning of events.

Triggers lazy initialization of event cache on first call.

Returns
Const iterator to first event (returns plain T for range-based for loops)
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 1022 of file event_reader.hpp.

1022 {
1023 EnsureCached();
1024 return const_iterator(cached_events_->begin());
1025}
AdaptorConstIterator const_iterator

◆ Collect()

template<EventTrait T>
auto helios::ecs::EventReader< T >::Collect ( ) const -> std::vector<value_type>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 242 of file event_reader.hpp.

242 {
243 EnsureCached();
244 return *cached_events_;
245 }

◆ CollectWith()

template<EventTrait T>
requires std::same_as<typename Alloc::value_type, std::remove_cvref_t<T>>
template<typename Alloc >
requires std::same_as<typename Alloc::value_type, std::remove_cvref_t<T>>
auto helios::ecs::EventReader< T >::CollectWith ( Alloc  alloc) const -> std::vector<value_type, Alloc>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 803 of file event_reader.hpp.

803 {
804 EnsureCached();
805 std::vector<value_type, Alloc> result{std::move(alloc)};
806 result.reserve(cached_events_->size());
807 for (const auto& event : *cached_events_) {
808 result.push_back(event);
809 }
810 return result;
811}

◆ Count()

template<EventTrait T>
size_t helios::ecs::EventReader< T >::Count ( ) const
inline

Returns the number of events.

Returns
Number of events in current and previous queues
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 795 of file event_reader.hpp.

795 {
796 EnsureCached();
797 return cached_events_->size();
798}

◆ CountIf()

template<EventTrait T>
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
size_t helios::ecs::EventReader< T >::CountIf ( const Pred predicate) const
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 783 of file event_reader.hpp.

783 {
784 EnsureCached();
785 size_t count = 0;
786 for (const auto& event : *cached_events_) {
787 if (predicate(event)) {
788 ++count;
789 }
790 }
791 return count;
792}

◆ Empty()

template<EventTrait T>
bool helios::ecs::EventReader< T >::Empty ( ) const
inline

Checks if there are any events.

Returns
true if no events exist, false otherwise
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 723 of file event_reader.hpp.

723{ return !manager_.HasEvents<value_type>(); }
std::remove_cvref_t< T > value_type
bool HasEvents() const
Checks if events of a specific type exist in either queue.

◆ end()

template<EventTrait T>
auto helios::ecs::EventReader< T >::end ( ) const
inline

Returns an iterator to the end of events.

Triggers lazy initialization of event cache on first call.

Returns
Const iterator to end
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 1028 of file event_reader.hpp.

1028 {
1029 EnsureCached();
1030 return const_iterator(cached_events_->end());
1031}

◆ Enumerate()

template<EventTrait T>
auto helios::ecs::EventReader< T >::Enumerate ( ) const & -> utils::EnumerateAdapter<AdaptorIterator>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 858 of file event_reader.hpp.

858 {
859 EnsureCached();
860 return {AdaptorIterator(cached_events_->begin()), AdaptorIterator(cached_events_->end())};
861}
EventIterator< T > AdaptorIterator

◆ Filter()

template<EventTrait T>
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto helios::ecs::EventReader< T >::Filter ( Pred  predicate) const & -> utils::FilterAdapter<AdaptorIterator, Pred>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 816 of file event_reader.hpp.

816 {
817 EnsureCached();
818 return {AdaptorIterator(cached_events_->begin()), AdaptorIterator(cached_events_->end()), std::move(predicate)};
819}

◆ Find()

template<EventTrait T>
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto helios::ecs::EventReader< T >::Find ( const Pred predicate) const -> std::optional<value_type>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 906 of file event_reader.hpp.

906 {
907 EnsureCached();
908 for (const auto& event : *cached_events_) {
909 if (predicate(event)) {
910 return event;
911 }
912 }
913 return std::nullopt;
914}

◆ FindFirst() [1/2]

template<EventTrait T>
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
const value_type * helios::ecs::EventReader< T >::FindFirst ( const Pred predicate) const &

◆ FindFirst() [2/2]

template<EventTrait T>
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto helios::ecs::EventReader< T >::FindFirst ( const Pred predicate) const & -> const value_type*
inline

Definition at line 770 of file event_reader.hpp.

770 {
771 EnsureCached();
772 for (const auto& event : *cached_events_) {
773 if (predicate(event)) {
774 return &event;
775 }
776 }
777 return nullptr;
778}

◆ Fold()

template<EventTrait T>
requires utils::FolderFor<Folder, Acc, const std::remove_cvref_t<T>&>
template<typename Acc , typename Folder >
requires utils::FolderFor<Folder, Acc, const std::remove_cvref_t<T>&>
Acc helios::ecs::EventReader< T >::Fold ( Acc  init,
const Folder folder 
) const
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 933 of file event_reader.hpp.

933 {
934 EnsureCached();
935 for (const auto& event : *cached_events_) {
936 if constexpr (std::invocable<Folder, Acc, const value_type&>) {
937 init = folder(std::move(init), event);
938 } else {
939 init = std::apply([&folder, &init](const auto&... args) { return folder(std::move(init), args...); }, event);
940 }
941 }
942 return init;
943}

◆ ForEach()

template<EventTrait T>
requires utils::ActionFor<Action, const std::remove_cvref_t<T>&>
template<typename Action >
requires utils::ActionFor<Action, const std::remove_cvref_t<T>&>
void helios::ecs::EventReader< T >::ForEach ( const Action action) const
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 919 of file event_reader.hpp.

919 {
920 EnsureCached();
921 for (const auto& event : *cached_events_) {
922 if constexpr (std::invocable<Action, const value_type&>) {
923 action(event);
924 } else {
925 std::apply(action, event);
926 }
927 }
928}

◆ GroupBy()

template<EventTrait T>
requires std::invocable<KeyFunc, const std::remove_cvref_t<T>&>
template<typename KeyFunc >
requires std::invocable<KeyFunc, const std::remove_cvref_t<T>&>
auto helios::ecs::EventReader< T >::GroupBy ( const KeyFunc key_func) const -> std::unordered_map<std::invoke_result_t<KeyFunc, const value_type&>, std::vector<value_type>>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 1011 of file event_reader.hpp.

1012 {
1013 EnsureCached();
1014 std::unordered_map<std::invoke_result_t<KeyFunc, const value_type&>, std::vector<value_type>> result;
1015 for (const auto& event : *cached_events_) {
1016 result[key_func(event)].push_back(event);
1017 }
1018 return result;
1019}

◆ Inspect()

template<EventTrait T>
requires utils::InspectorFor<Func, const std::remove_cvref_t<T>&>
template<typename Func >
requires utils::InspectorFor<Func, const std::remove_cvref_t<T>&>
auto helios::ecs::EventReader< T >::Inspect ( Func  inspector) const & -> utils::InspectAdapter<AdaptorIterator, Func>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 866 of file event_reader.hpp.

866 {
867 EnsureCached();
868 return {AdaptorIterator(cached_events_->begin()), AdaptorIterator(cached_events_->end()), std::move(inspector)};
869}

◆ Into()

template<EventTrait T>
requires std::output_iterator<OutIt, std::remove_cvref_t<T>>
template<typename OutIt >
requires std::output_iterator<OutIt, std::remove_cvref_t<T>>
void helios::ecs::EventReader< T >::Into ( OutIt  out) const
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 760 of file event_reader.hpp.

760 {
761 EnsureCached();
762 for (const auto& event : *cached_events_) {
763 *out++ = event;
764 }
765}

◆ Map()

template<EventTrait T>
requires utils::TransformFor<Func, const std::remove_cvref_t<T>&>
template<typename Func >
requires utils::TransformFor<Func, const std::remove_cvref_t<T>&>
auto helios::ecs::EventReader< T >::Map ( Func  transform) const & -> utils::MapAdapter<AdaptorIterator, Func>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 824 of file event_reader.hpp.

824 {
825 EnsureCached();
826 return {AdaptorIterator(cached_events_->begin()), AdaptorIterator(cached_events_->end()), std::move(transform)};
827}

◆ MaxBy()

template<EventTrait T>
requires std::invocable<KeyFunc, const std::remove_cvref_t<T>&>
template<typename KeyFunc >
requires std::invocable<KeyFunc, const std::remove_cvref_t<T>&>
auto helios::ecs::EventReader< T >::MaxBy ( const KeyFunc key_func) const -> std::optional<value_type>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 965 of file event_reader.hpp.

965 {
966 EnsureCached();
967 if (cached_events_->empty()) {
968 return std::nullopt;
969 }
970
971 auto max_iter = cached_events_->begin();
972 auto max_key = key_func(*max_iter);
973
974 for (auto iter = cached_events_->begin() + 1; iter != cached_events_->end(); ++iter) {
975 auto current_key = key_func(*iter);
976 if (current_key > max_key) {
977 max_key = std::move(current_key);
978 max_iter = iter;
979 }
980 }
981
982 return *max_iter;
983}

◆ MinBy()

template<EventTrait T>
requires std::invocable<KeyFunc, const std::remove_cvref_t<T>&>
template<typename KeyFunc >
requires std::invocable<KeyFunc, const std::remove_cvref_t<T>&>
auto helios::ecs::EventReader< T >::MinBy ( const KeyFunc key_func) const -> std::optional<value_type>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 988 of file event_reader.hpp.

988 {
989 EnsureCached();
990 if (cached_events_->empty()) {
991 return std::nullopt;
992 }
993
994 auto min_iter = cached_events_->begin();
995 auto min_key = key_func(*min_iter);
996
997 for (auto iter = cached_events_->begin() + 1; iter != cached_events_->end(); ++iter) {
998 auto current_key = key_func(*iter);
999 if (current_key < min_key) {
1000 min_key = std::move(current_key);
1001 min_iter = iter;
1002 }
1003 }
1004
1005 return *min_iter;
1006}

◆ None()

template<EventTrait T>
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
constexpr bool helios::ecs::EventReader< T >::None ( const Pred predicate) const
inlineconstexpr
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 650 of file event_reader.hpp.

650 {
651 return !Any(predicate);
652 }
bool Any(const Pred &predicate) const
Checks if any event matches the predicate.

◆ operator=() [1/2]

◆ operator=() [2/2]

template<EventTrait T>
EventReader & helios::ecs::EventReader< T >::operator= ( EventReader< T > &&  )
defaultnoexcept

◆ Partition()

template<EventTrait T>
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto helios::ecs::EventReader< T >::Partition ( const Pred predicate) const -> std::pair<std::vector<value_type>, std::vector<value_type>>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 948 of file event_reader.hpp.

949 {
950 EnsureCached();
951 std::pair<std::vector<value_type>, std::vector<value_type>> result;
952 for (const auto& event : *cached_events_) {
953 if (predicate(event)) {
954 result.first.push_back(event);
955 } else {
956 result.second.push_back(event);
957 }
958 }
959 return result;
960}

◆ Read()

template<EventTrait T>
auto helios::ecs::EventReader< T >::Read ( ) const & -> std::span<const value_type>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 223 of file event_reader.hpp.

223 {
224 EnsureCached();
225 return {cached_events_->data(), cached_events_->size()};
226 }

◆ ReadInto()

template<EventTrait T>
template<typename OutIt >
requires std::output_iterator<OutIt, value_type>
void helios::ecs::EventReader< T >::ReadInto ( OutIt  out) const
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 289 of file event_reader.hpp.

289 {
290 manager_.ReadInto<value_type>(std::move(out));
291 }
void ReadInto(OutIt out) const
Reads events of a specific type into a provided output iterator.

◆ Reverse()

template<EventTrait T>
auto helios::ecs::EventReader< T >::Reverse ( ) const & -> utils::ReverseAdapter<AdaptorIterator>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 497 of file event_reader.hpp.

497{ return {begin(), end()}; }
const_iterator end() const
Returns an iterator to the end of events.
const_iterator begin() const
Returns an iterator to the beginning of events.

◆ Skip()

template<EventTrait T>
auto helios::ecs::EventReader< T >::Skip ( size_t  count) const & -> utils::SkipAdapter<AdaptorIterator>
inline

Skips the first N events.

Lazily skips the first N elements and yields the rest.

Parameters
countNumber of elements to skip
Returns
View that yields elements after skipping count elements
auto after_ten = reader.Skip(10);
auto Skip(size_t count) const &-> utils::SkipAdapter< iterator >
Definition query.hpp:2073
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 836 of file event_reader.hpp.

836 {
837 EnsureCached();
838 return {AdaptorIterator(cached_events_->begin()), AdaptorIterator(cached_events_->end()), count};
839}

◆ SkipWhile()

template<EventTrait T>
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto helios::ecs::EventReader< T >::SkipWhile ( Pred  predicate) const & -> utils::SkipWhileAdapter<AdaptorIterator, Pred>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 852 of file event_reader.hpp.

852 {
853 EnsureCached();
854 return {AdaptorIterator(cached_events_->begin()), AdaptorIterator(cached_events_->end()), std::move(predicate)};
855}

◆ Slide()

template<EventTrait T>
auto helios::ecs::EventReader< T >::Slide ( size_t  window_size) const & -> utils::SlideAdapter<AdaptorIterator>
inline

◆ StepBy()

template<EventTrait T>
auto helios::ecs::EventReader< T >::StepBy ( size_t  step) const & -> utils::StepByAdapter<AdaptorIterator>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 872 of file event_reader.hpp.

872 {
873 EnsureCached();
874 return {AdaptorIterator(cached_events_->begin()), AdaptorIterator(cached_events_->end()), step};
875}

◆ Stride()

template<EventTrait T>
auto helios::ecs::EventReader< T >::Stride ( size_t  stride) const & -> utils::StrideAdapter<AdaptorIterator>
inline

◆ Take()

template<EventTrait T>
auto helios::ecs::EventReader< T >::Take ( size_t  count) const & -> utils::TakeAdapter<AdaptorIterator>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 830 of file event_reader.hpp.

830 {
831 EnsureCached();
832 return {AdaptorIterator(cached_events_->begin()), AdaptorIterator(cached_events_->end()), count};
833}

◆ TakeWhile()

template<EventTrait T>
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
template<typename Pred >
requires utils::PredicateFor<Pred, const std::remove_cvref_t<T>&>
auto helios::ecs::EventReader< T >::TakeWhile ( Pred  predicate) const & -> utils::TakeWhileAdapter<AdaptorIterator, Pred>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 844 of file event_reader.hpp.

844 {
845 EnsureCached();
846 return {AdaptorIterator(cached_events_->begin()), AdaptorIterator(cached_events_->end()), std::move(predicate)};
847}

◆ Zip()

template<EventTrait T>
template<typename OtherIter >
requires utils::IteratorLike<OtherIter>
auto helios::ecs::EventReader< T >::Zip ( OtherIter  other_begin,
OtherIter  other_end 
) const & -> utils::ZipAdapter<AdaptorIterator, OtherIter>
inline
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/event_reader.hpp.

Definition at line 547 of file event_reader.hpp.

548 {
549 return {begin(), end(), std::move(other_begin), std::move(other_end)};
550 }