rad
3.0.0
INTROOT
include
rad
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
14
namespace
rad
{
15
28
template
<
typename
EVENT>
29
typename
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
39
template
<
typename
EVENT>
40
typename
EVENT::payload_t
const
&
GetPayload
(
AnyEvent
const
& ev) {
41
return
GetPayload<EVENT>(
const_cast<
AnyEvent
&
>
(ev));
42
}
43
56
template
<
typename
EVENT>
57
typename
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
67
template
<
typename
EVENT>
68
typename
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_
rad::GetPayload
EVENT::payload_t & GetPayload(AnyEvent &ev)
Definition:
getPayload.hpp:29
rad
Definition:
actionCallback.hpp:21
rad::AnyEvent
Definition:
anyEvent.hpp:52
rad::GetPayloadNothrow
EVENT::payload_t * GetPayloadNothrow(AnyEvent &ev)
Definition:
getPayload.hpp:57
rad::IncorrectEventType
Definition:
anyEvent.hpp:19
Generated by
1.8.20