forked from panda3d/panda3d
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuttonHandle.I
More file actions
146 lines (131 loc) · 3.27 KB
/
buttonHandle.I
File metadata and controls
146 lines (131 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file buttonHandle.I
* @author drose
* @date 2000-03-01
*/
/**
* Constructs a ButtonHandle with the corresponding index number, which may
* have been returned by an earlier call to ButtonHandle::get_index().
*/
constexpr ButtonHandle::
ButtonHandle(int index) : _index(index) {
}
/**
*
*/
INLINE bool ButtonHandle::
operator == (const ButtonHandle &other) const {
return (_index == other._index);
}
/**
*
*/
INLINE bool ButtonHandle::
operator != (const ButtonHandle &other) const {
return (_index != other._index);
}
/**
*
*/
INLINE bool ButtonHandle::
operator < (const ButtonHandle &other) const {
return (_index < other._index);
}
/**
*
*/
INLINE bool ButtonHandle::
operator <= (const ButtonHandle &other) const {
return (_index <= other._index);
}
/**
*
*/
INLINE bool ButtonHandle::
operator > (const ButtonHandle &other) const {
return (_index > other._index);
}
/**
*
*/
INLINE bool ButtonHandle::
operator >= (const ButtonHandle &other) const {
return (_index >= other._index);
}
/**
* Sorts ButtonHandles arbitrarily (according to <, >, etc.). Returns a
* number less than 0 if this type sorts before the other one, greater than
* zero if it sorts after, 0 if they are equivalent.
*/
INLINE int ButtonHandle::
compare_to(const ButtonHandle &other) const {
return _index - other._index;
}
/**
* Returns a hash code suitable for phash_map.
*/
INLINE size_t ButtonHandle::
get_hash() const {
return (size_t)_index;
}
/**
* Returns true if the button was created with an ASCII equivalent code (e.g.
* for a standard keyboard button).
*/
INLINE bool ButtonHandle::
has_ascii_equivalent() const {
return (_index > 0 && _index < 128);
}
/**
* Returns the character code associated with the button, or '\0' if no ASCII
* code was associated.
*/
INLINE char ButtonHandle::
get_ascii_equivalent() const {
return has_ascii_equivalent() ? (char)_index : '\0';
}
/**
* Returns true if this ButtonHandle is the same as the other one, or if the
* other one is an alias for this one. (Does not return true if this button
* is an alias for the other one, however.)
*
* This is a more general comparison than operator ==.
*/
INLINE bool ButtonHandle::
matches(const ButtonHandle &other) const {
return ((*this) == other ||
(other != ButtonHandle::none() &&
get_alias() == other));
}
/**
* Returns the integer index associated with this ButtonHandle. Each
* different ButtonHandle will have a different index. However, you probably
* shouldn't be using this method; you should just treat the ButtonHandles as
* opaque classes. This is provided for the convenience of non-C++ scripting
* languages to build a hashtable of ButtonHandles.
*/
constexpr int ButtonHandle::
get_index() const {
return _index;
}
/**
*
*/
INLINE void ButtonHandle::
output(std::ostream &out) const {
out << get_name();
}
/**
* ButtonHandle::none() evaluates to false, everything else evaluates to true.
*/
INLINE ButtonHandle::
operator bool () const {
return (_index != 0);
}