Kiwano Engine  v1.2.x
EventType.h
1 // Copyright (c) 2016-2018 Kiwano - Nomango
2 //
3 // Permission is hereby granted, free of charge, to any person obtaining a copy
4 // of this software and associated documentation files (the "Software"), to deal
5 // in the Software without restriction, including without limitation the rights
6 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 // copies of the Software, and to permit persons to whom the Software is
8 // furnished to do so, subject to the following conditions:
9 //
10 // The above copyright notice and this permission notice shall be included in
11 // all copies or substantial portions of the Software.
12 //
13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 // THE SOFTWARE.
20 
21 #pragma once
22 #include <kiwano/core/Common.h>
23 #include <typeindex>
24 #include <typeinfo>
25 
26 namespace kiwano
27 {
33 class EventType
36 {
37 public:
38  EventType();
39 
40  EventType(const std::type_index& type);
41 
44  bool IsNull() const;
45 
46  const std::type_index& GetType() const;
47 
48  bool operator==(const EventType& rhs) const;
49  bool operator!=(const EventType& rhs) const;
50  bool operator<(const EventType& rhs) const;
51  bool operator<=(const EventType& rhs) const;
52  bool operator>(const EventType& rhs) const;
53  bool operator>=(const EventType& rhs) const;
54 
55 private:
56  std::type_index type_;
57 };
58 
61 #define KGE_EVENT(EVENT_TYPE) ::kiwano::EventType(typeid(EVENT_TYPE))
62 
63 inline EventType::EventType()
64  : type_(typeid(void))
65 {
66 }
67 
68 inline EventType::EventType(const std::type_index& type)
69  : type_(type)
70 {
71 }
72 
73 inline bool EventType::IsNull() const
74 {
75  return type_ == typeid(void);
76 }
77 
78 inline const std::type_index& EventType::GetType() const
79 {
80  return type_;
81 }
82 
83 inline bool EventType::operator==(const EventType& rhs) const
84 {
85  return type_ == rhs.type_;
86 }
87 
88 inline bool EventType::operator!=(const EventType& rhs) const
89 {
90  return type_ != rhs.type_;
91 }
92 
93 inline bool EventType::operator<(const EventType& rhs) const
94 {
95  return type_ < rhs.type_;
96 }
97 
98 inline bool EventType::operator<=(const EventType& rhs) const
99 {
100  return type_ <= rhs.type_;
101 }
102 
103 inline bool EventType::operator>(const EventType& rhs) const
104 {
105  return type_ > rhs.type_;
106 }
107 
108 inline bool EventType::operator>=(const EventType& rhs) const
109 {
110  return type_ >= rhs.type_;
111 }
112 
113 } // namespace kiwano
事件类型
Definition: EventType.h:35
bool IsNull() const
是否是空类型
Definition: EventType.h:73
Definition: Actor.cpp:26