ifw  0.0.1-dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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* getPayload_nothrow(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* getPayload_nothrow(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 getPayload_nothrow<EVENT>(const_cast<AnyEvent&>(ev));
74 }
75 
76 } // namespace rad
77 #endif // #ifndef RAD_CORE_GETPAYLOAD_HPP_
EVENT::payload_t & getPayload(AnyEvent &ev)
Definition: GetPayload.hpp:29
EVENT::payload_t * getPayload_nothrow(AnyEvent &ev)
Definition: GetPayload.hpp:57
Definition: AnyEvent.hpp:55
Definition: AnyEvent.hpp:19