rad 6.2.0
Loading...
Searching...
No Matches
getPayload.hpp
Go to the documentation of this file.
1
9#ifndef RAD_CORE_GETPAYLOAD_HPP_
10#define RAD_CORE_GETPAYLOAD_HPP_
11
12#include <rad/anyEvent.hpp>
13
14namespace rad {
15
28template <typename EVENT>
29typename EVENT::payload_t& GetPayload(AnyEvent& ev) {
30 if (typeid(ev) != typeid(EVENT)) {
31 throw IncorrectEventType("Wrong event type");
32 }
33 return static_cast<EVENT&>(ev).GetPayload();
34}
35
39template <typename EVENT>
40typename EVENT::payload_t const& GetPayload(AnyEvent const& ev) {
41 return GetPayload<EVENT>(const_cast<AnyEvent&>(ev));
42}
43
56template <typename EVENT>
57typename EVENT::payload_t* GetPayloadNothrow(AnyEvent& ev) {
58 if (typeid(ev) != typeid(EVENT)) {
59 return nullptr;
60 }
61 return &static_cast<EVENT&>(ev).GetPayload();
62}
63
67template <typename EVENT>
68typename EVENT::payload_t const* GetPayloadNothrow(AnyEvent const& ev) {
69 if (typeid(ev) != typeid(EVENT)) {
70 return nullptr;
71 }
72 return &static_cast<EVENT*>(const_cast<AnyEvent*>(&ev))->GetPayload();
73 // return GetPayloadNothrow<EVENT>(const_cast<AnyEvent&>(ev));
74}
75
76} // namespace rad
77#endif // #ifndef RAD_CORE_GETPAYLOAD_HPP_
AnyEvent class header file.
Definition anyEvent.hpp:52
Definition actionsApp.cpp:23
EVENT::payload_t & GetPayload(AnyEvent &ev)
Definition getPayload.hpp:29
EVENT::payload_t * GetPayloadNothrow(AnyEvent &ev)
Definition getPayload.hpp:57
Definition anyEvent.hpp:19