7#ifndef MAKI_EVENT_SET_HPP
8#define MAKI_EVENT_SET_HPP
11#include "detail/type_set.hpp"
12#include "detail/friendly_impl.hpp"
52 return detail::type_set_contains_v<Impl, Event>;
62 return detail::type_set_contains_v<Impl, Event>;
66 using impl_type = Impl;
69 friend struct detail::impl_of_t_helper;
84#ifdef MAKI_DETAIL_DOXYGEN
87 detail::type_set_item<Event>
91#ifdef MAKI_DETAIL_DOXYGEN
98inline constexpr auto all_events = detail::make_event_set_from_impl
100 detail::universal_type_set_t
104#ifdef MAKI_DETAIL_DOXYGEN
109inline constexpr auto no_event = IMPLEMENTATION_DETAIL;
111inline constexpr auto no_event = detail::make_event_set_from_impl
113 detail::empty_type_set_t
122template<
class EventSetImpl>
123constexpr auto operator!
125#ifdef MAKI_DETAIL_DOXYGEN
132 return detail::make_event_set_from_impl
134 detail::type_set_inverse_t<EventSetImpl>
146 return detail::make_event_set_from_impl
148 detail::type_set_exclusion_list<Event>
157template<
class LhsImpl,
class RhsImpl>
158constexpr auto operator||
160#ifdef MAKI_DETAIL_DOXYGEN
169 return detail::make_event_set_from_impl
171 detail::type_set_union_t<LhsImpl, RhsImpl>
180template<
class LhsImpl,
class Event>
181constexpr auto operator||
183#ifdef MAKI_DETAIL_DOXYGEN
192 return detail::make_event_set_from_impl
194 detail::type_set_union_t
197 detail::type_set_item<Event>
207template<
class Event,
class RhsImpl>
208constexpr auto operator||
221template<
class LhsEvent,
class RhsEvent>
222constexpr auto operator||
228 return detail::make_event_set_from_impl
230 detail::type_set_inclusion_list<LhsEvent, RhsEvent>
239template<
class LhsImpl,
class RhsImpl>
240constexpr auto operator&&
242#ifdef MAKI_DETAIL_DOXYGEN
251 return detail::make_event_set_from_impl
253 detail::type_set_intersection_t<LhsImpl, RhsImpl>
262 static constexpr auto value =
false;
265 template<
class EventSetImpl>
266 struct is_event_set<
event_set<EventSetImpl>>
268 static constexpr auto value =
true;
272 constexpr auto is_event_set_v = is_event_set<T>::value;
Represents an event type set.
Definition event_set.hpp:35
constexpr bool contains(event_t< Event >) const
Checks whether the set contains Event.
Definition event_set.hpp:60
constexpr auto no_event
An empty maki::event_set.
Definition event_set.hpp:109
constexpr auto operator!(event_t< Event >)
Creates a maki::event_set that contains all the event types but Event.
Definition event_set.hpp:144
constexpr bool contains() const
Checks whether the set contains Event.
Definition event_set.hpp:50
event_set(event_t< Event >) -> event_set< IMPLEMENTATION_DETAIL >
Class template argument deduction guide for maki::event_set.
constexpr auto all_events
An infinite maki::event_set that contains all the event types.
Definition event_set.hpp:96
constexpr event_set(event_t< Event >)
Constructs a set that only contains Event.
Definition event_set.hpp:41
Holds an event type.
Definition event.hpp:20