9 #ifndef RAD_ANYEVENT_HPP
10 #define RAD_ANYEVENT_HPP
14 #include <type_traits>
19 struct IncorrectEventType :
public std::runtime_error {
20 using std::runtime_error::runtime_error;
44 using SharedEvent = std::shared_ptr<const AnyEvent>;
60 inline char const*
GetId()
const {
return m_id; }
92 template <
typename EventTrait>
95 static constexpr
char const*
ID = EventTrait::ID;
98 template <
typename... Args,
typename =
typename std::enable_if<
99 std::is_constructible<
payload_t, Args...>::value>::type>
118 #endif // RAD_ANYEVENT_HPP
Definition: testCoroActivity.cpp:16
Context context
Definition: anyEvent.hpp:40
static constexpr char const * ID
Definition: anyEvent.hpp:95
AnyEvent * Clone() const override
Definition: anyEvent.hpp:110
virtual ~AnyEvent()
Definition: anyEvent.cpp:15
virtual AnyEvent * Clone() const =0
typename EventTrait::payload_t payload_t
Definition: anyEvent.hpp:96
EventT(Args &&...args)
Definition: anyEvent.hpp:100
std::string id
Definition: anyEvent.hpp:32
payload_t & GetPayload()
Definition: anyEvent.hpp:108
Definition: anyEvent.hpp:93
AnyEvent & operator=(AnyEvent const &e)=default
EventT & operator=(EventT const &e)=default
std::unique_ptr< AnyEvent > UniqueEvent
Definition: anyEvent.hpp:45
Definition: anyEvent.hpp:52
std::shared_ptr< const AnyEvent > SharedEvent
Definition: anyEvent.hpp:44
AnyEvent(char const *id)
Definition: anyEvent.cpp:13
payload_t const & GetPayload() const
Definition: anyEvent.hpp:106
char const * GetId() const
Definition: anyEvent.hpp:60
std::type_index payload
Definition: anyEvent.hpp:37