Kiwano Engine v1.3.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
26namespace kiwano
27{
36{
37public:
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
55private:
56 std::type_index type_;
57};
58
61#define KGE_EVENT(EVENT_TYPE) ::kiwano::EventType(typeid(EVENT_TYPE))
62
63inline EventType::EventType()
64 : type_(typeid(void))
65{
66}
67
68inline EventType::EventType(const std::type_index& type)
69 : type_(type)
70{
71}
72
73inline bool EventType::IsNull() const
74{
75 return type_ == typeid(void);
76}
77
78inline const std::type_index& EventType::GetType() const
79{
80 return type_;
81}
82
83inline bool EventType::operator==(const EventType& rhs) const
84{
85 return type_ == rhs.type_;
86}
87
88inline bool EventType::operator!=(const EventType& rhs) const
89{
90 return type_ != rhs.type_;
91}
92
93inline bool EventType::operator<(const EventType& rhs) const
94{
95 return type_ < rhs.type_;
96}
97
98inline bool EventType::operator<=(const EventType& rhs) const
99{
100 return type_ <= rhs.type_;
101}
102
103inline bool EventType::operator>(const EventType& rhs) const
104{
105 return type_ > rhs.type_;
106}
107
108inline bool EventType::operator>=(const EventType& rhs) const
109{
110 return type_ >= rhs.type_;
111}
112
113} // namespace kiwano
事件类型
Definition: EventType.h:36
bool IsNull() const
是否是空类型
Definition: EventType.h:73