Clutter Engine 0.0.1
Loading...
Searching...
No Matches
hash.inl
1
11
12namespace glm {
13namespace detail
14{
15 GLM_INLINE void hash_combine(size_t &seed, size_t hash)
16 {
17 hash += 0x9e3779b9 + (seed << 6) + (seed >> 2);
18 seed ^= hash;
19 }
20}}
21
22namespace std
23{
24 template<typename T, glm::qualifier Q>
25 GLM_FUNC_QUALIFIER size_t hash<glm::vec<1, T, Q>>::operator()(glm::vec<1, T, Q> const& v) const
26 {
27 hash<T> hasher;
28 return hasher(v.x);
29 }
30
31 template<typename T, glm::qualifier Q>
32 GLM_FUNC_QUALIFIER size_t hash<glm::vec<2, T, Q>>::operator()(glm::vec<2, T, Q> const& v) const
33 {
34 size_t seed = 0;
35 hash<T> hasher;
36 glm::detail::hash_combine(seed, hasher(v.x));
37 glm::detail::hash_combine(seed, hasher(v.y));
38 return seed;
39 }
40
41 template<typename T, glm::qualifier Q>
42 GLM_FUNC_QUALIFIER size_t hash<glm::vec<3, T, Q>>::operator()(glm::vec<3, T, Q> const& v) const
43 {
44 size_t seed = 0;
45 hash<T> hasher;
46 glm::detail::hash_combine(seed, hasher(v.x));
47 glm::detail::hash_combine(seed, hasher(v.y));
48 glm::detail::hash_combine(seed, hasher(v.z));
49 return seed;
50 }
51
52 template<typename T, glm::qualifier Q>
53 GLM_FUNC_QUALIFIER size_t hash<glm::vec<4, T, Q>>::operator()(glm::vec<4, T, Q> const& v) const
54 {
55 size_t seed = 0;
56 hash<T> hasher;
57 glm::detail::hash_combine(seed, hasher(v.x));
58 glm::detail::hash_combine(seed, hasher(v.y));
59 glm::detail::hash_combine(seed, hasher(v.z));
60 glm::detail::hash_combine(seed, hasher(v.w));
61 return seed;
62 }
63
64 template<typename T, glm::qualifier Q>
65 GLM_FUNC_QUALIFIER size_t hash<glm::qua<T, Q>>::operator()(glm::qua<T,Q> const& q) const
66 {
67 size_t seed = 0;
68 hash<T> hasher;
69 glm::detail::hash_combine(seed, hasher(q.x));
70 glm::detail::hash_combine(seed, hasher(q.y));
71 glm::detail::hash_combine(seed, hasher(q.z));
72 glm::detail::hash_combine(seed, hasher(q.w));
73 return seed;
74 }
75
76 template<typename T, glm::qualifier Q>
77 GLM_FUNC_QUALIFIER size_t hash<glm::tdualquat<T, Q>>::operator()(glm::tdualquat<T, Q> const& q) const
78 {
79 size_t seed = 0;
80 hash<glm::qua<T, Q>> hasher;
81 glm::detail::hash_combine(seed, hasher(q.real));
82 glm::detail::hash_combine(seed, hasher(q.dual));
83 return seed;
84 }
85
86 template<typename T, glm::qualifier Q>
87 GLM_FUNC_QUALIFIER size_t hash<glm::mat<2, 2, T, Q>>::operator()(glm::mat<2, 2, T, Q> const& m) const
88 {
89 size_t seed = 0;
90 hash<glm::vec<2, T, Q>> hasher;
91 glm::detail::hash_combine(seed, hasher(m[0]));
92 glm::detail::hash_combine(seed, hasher(m[1]));
93 return seed;
94 }
95
96 template<typename T, glm::qualifier Q>
97 GLM_FUNC_QUALIFIER size_t hash<glm::mat<2, 3, T, Q>>::operator()(glm::mat<2, 3, T, Q> const& m) const
98 {
99 size_t seed = 0;
100 hash<glm::vec<3, T, Q>> hasher;
101 glm::detail::hash_combine(seed, hasher(m[0]));
102 glm::detail::hash_combine(seed, hasher(m[1]));
103 return seed;
104 }
105
106 template<typename T, glm::qualifier Q>
107 GLM_FUNC_QUALIFIER size_t hash<glm::mat<2, 4, T, Q>>::operator()(glm::mat<2, 4, T, Q> const& m) const
108 {
109 size_t seed = 0;
110 hash<glm::vec<4, T, Q>> hasher;
111 glm::detail::hash_combine(seed, hasher(m[0]));
112 glm::detail::hash_combine(seed, hasher(m[1]));
113 return seed;
114 }
115
116 template<typename T, glm::qualifier Q>
117 GLM_FUNC_QUALIFIER size_t hash<glm::mat<3, 2, T, Q>>::operator()(glm::mat<3, 2, T, Q> const& m) const
118 {
119 size_t seed = 0;
120 hash<glm::vec<2, T, Q>> hasher;
121 glm::detail::hash_combine(seed, hasher(m[0]));
122 glm::detail::hash_combine(seed, hasher(m[1]));
123 glm::detail::hash_combine(seed, hasher(m[2]));
124 return seed;
125 }
126
127 template<typename T, glm::qualifier Q>
128 GLM_FUNC_QUALIFIER size_t hash<glm::mat<3, 3, T, Q>>::operator()(glm::mat<3, 3, T, Q> const& m) const
129 {
130 size_t seed = 0;
131 hash<glm::vec<3, T, Q>> hasher;
132 glm::detail::hash_combine(seed, hasher(m[0]));
133 glm::detail::hash_combine(seed, hasher(m[1]));
134 glm::detail::hash_combine(seed, hasher(m[2]));
135 return seed;
136 }
137
138 template<typename T, glm::qualifier Q>
139 GLM_FUNC_QUALIFIER size_t hash<glm::mat<3, 4, T, Q>>::operator()(glm::mat<3, 4, T, Q> const& m) const
140 {
141 size_t seed = 0;
142 hash<glm::vec<4, T, Q>> hasher;
143 glm::detail::hash_combine(seed, hasher(m[0]));
144 glm::detail::hash_combine(seed, hasher(m[1]));
145 glm::detail::hash_combine(seed, hasher(m[2]));
146 return seed;
147 }
148
149 template<typename T, glm::qualifier Q>
150 GLM_FUNC_QUALIFIER size_t hash<glm::mat<4, 2, T,Q>>::operator()(glm::mat<4, 2, T,Q> const& m) const
151 {
152 size_t seed = 0;
153 hash<glm::vec<2, T, Q>> hasher;
154 glm::detail::hash_combine(seed, hasher(m[0]));
155 glm::detail::hash_combine(seed, hasher(m[1]));
156 glm::detail::hash_combine(seed, hasher(m[2]));
157 glm::detail::hash_combine(seed, hasher(m[3]));
158 return seed;
159 }
160
161 template<typename T, glm::qualifier Q>
162 GLM_FUNC_QUALIFIER size_t hash<glm::mat<4, 3, T,Q>>::operator()(glm::mat<4, 3, T,Q> const& m) const
163 {
164 size_t seed = 0;
165 hash<glm::vec<3, T, Q>> hasher;
166 glm::detail::hash_combine(seed, hasher(m[0]));
167 glm::detail::hash_combine(seed, hasher(m[1]));
168 glm::detail::hash_combine(seed, hasher(m[2]));
169 glm::detail::hash_combine(seed, hasher(m[3]));
170 return seed;
171 }
172
173 template<typename T, glm::qualifier Q>
174 GLM_FUNC_QUALIFIER size_t hash<glm::mat<4, 4, T,Q>>::operator()(glm::mat<4, 4, T, Q> const& m) const
175 {
176 size_t seed = 0;
177 hash<glm::vec<4, T, Q>> hasher;
178 glm::detail::hash_combine(seed, hasher(m[0]));
179 glm::detail::hash_combine(seed, hasher(m[1]));
180 glm::detail::hash_combine(seed, hasher(m[2]));
181 glm::detail::hash_combine(seed, hasher(m[3]));
182 return seed;
183 }
184}
detail namespace with internal helper functions
Definition json.h:249
std::size_t hash(const BasicJsonType &j)
hash a JSON value
Definition json.h:6023
Core features
Definition common.hpp:21
Definition qualifier.hpp:36
Definition type_quat.hpp:20
Definition dual_quaternion.hpp:38
Definition qualifier.hpp:35