1
1
// / @ref gtx_hash
2
2
3
3
namespace glm {
4
- namespace detail
5
- {
6
- GLM_INLINE void hash_combine (size_t &seed, size_t hash)
4
+ namespace detail
7
5
{
8
- hash += 0x9e3779b9 + (seed << 6 ) + (seed >> 2 );
9
- seed ^= hash;
6
+ GLM_INLINE void hash_combine (size_t & seed, size_t hash)
7
+ {
8
+ hash += 0x9e3779b9 + (seed << 6 ) + (seed >> 2 );
9
+ seed ^= hash;
10
+ }
10
11
}
11
- }}
12
+ }
13
+
14
+ namespace std {
12
15
13
- namespace std
14
- {
15
16
template <typename T, glm::qualifier Q>
16
17
GLM_FUNC_QUALIFIER size_t hash<glm::vec<1 , T, Q> >::operator ()(glm::vec<1 , T, Q> const & v) const GLM_NOEXCEPT
17
18
{
@@ -53,7 +54,7 @@ namespace std
53
54
}
54
55
55
56
template <typename T, glm::qualifier Q>
56
- GLM_FUNC_QUALIFIER size_t hash<glm::qua<T, Q> >::operator ()(glm::qua<T,Q> const & q) const GLM_NOEXCEPT
57
+ GLM_FUNC_QUALIFIER size_t hash<glm::qua<T, Q> >::operator ()(glm::qua<T, Q> const & q) const GLM_NOEXCEPT
57
58
{
58
59
size_t seed = 0 ;
59
60
hash<T> hasher;
@@ -74,102 +75,37 @@ namespace std
74
75
return seed;
75
76
}
76
77
77
- template <typename T, glm::qualifier Q>
78
- GLM_FUNC_QUALIFIER size_t hash<glm::mat<2 , 2 , T, Q> >::operator ()(glm::mat<2 , 2 , T, Q> const & m) const GLM_NOEXCEPT
79
- {
80
- size_t seed = 0 ;
81
- hash<glm::vec<2 , T, Q> > hasher;
82
- glm::detail::hash_combine (seed, hasher (m[0 ]));
83
- glm::detail::hash_combine (seed, hasher (m[1 ]));
84
- return seed;
85
- }
86
-
87
- template <typename T, glm::qualifier Q>
88
- GLM_FUNC_QUALIFIER size_t hash<glm::mat<2 , 3 , T, Q> >::operator ()(glm::mat<2 , 3 , T, Q> const & m) const GLM_NOEXCEPT
89
- {
90
- size_t seed = 0 ;
91
- hash<glm::vec<3 , T, Q> > hasher;
92
- glm::detail::hash_combine (seed, hasher (m[0 ]));
93
- glm::detail::hash_combine (seed, hasher (m[1 ]));
94
- return seed;
95
- }
96
-
97
- template <typename T, glm::qualifier Q>
98
- GLM_FUNC_QUALIFIER size_t hash<glm::mat<2 , 4 , T, Q> >::operator ()(glm::mat<2 , 4 , T, Q> const & m) const GLM_NOEXCEPT
99
- {
100
- size_t seed = 0 ;
101
- hash<glm::vec<4 , T, Q> > hasher;
102
- glm::detail::hash_combine (seed, hasher (m[0 ]));
103
- glm::detail::hash_combine (seed, hasher (m[1 ]));
104
- return seed;
105
- }
106
-
107
- template <typename T, glm::qualifier Q>
108
- GLM_FUNC_QUALIFIER size_t hash<glm::mat<3 , 2 , T, Q> >::operator ()(glm::mat<3 , 2 , T, Q> const & m) const GLM_NOEXCEPT
109
- {
110
- size_t seed = 0 ;
111
- hash<glm::vec<2 , T, Q> > hasher;
112
- glm::detail::hash_combine (seed, hasher (m[0 ]));
113
- glm::detail::hash_combine (seed, hasher (m[1 ]));
114
- glm::detail::hash_combine (seed, hasher (m[2 ]));
115
- return seed;
116
- }
117
-
118
- template <typename T, glm::qualifier Q>
119
- GLM_FUNC_QUALIFIER size_t hash<glm::mat<3 , 3 , T, Q> >::operator ()(glm::mat<3 , 3 , T, Q> const & m) const GLM_NOEXCEPT
78
+ template <glm::length_t R, typename T, glm::qualifier Q>
79
+ GLM_FUNC_QUALIFIER size_t hash<glm::mat<2 , R, T, Q> >::operator ()(glm::mat<2 , R, T, Q> const & m) const GLM_NOEXCEPT
120
80
{
121
81
size_t seed = 0 ;
122
- hash<glm::vec<3 , T, Q> > hasher;
82
+ hash<glm::vec<R , T, Q> > hasher;
123
83
glm::detail::hash_combine (seed, hasher (m[0 ]));
124
84
glm::detail::hash_combine (seed, hasher (m[1 ]));
125
- glm::detail::hash_combine (seed, hasher (m[2 ]));
126
85
return seed;
127
86
}
128
87
129
- template <typename T, glm::qualifier Q>
130
- GLM_FUNC_QUALIFIER size_t hash<glm::mat<3 , 4 , T, Q> >::operator ()(glm::mat<3 , 4 , T, Q> const & m) const GLM_NOEXCEPT
88
+ template <glm:: length_t R, typename T, glm::qualifier Q>
89
+ GLM_FUNC_QUALIFIER size_t hash<glm::mat<3 , R , T, Q> >::operator ()(glm::mat<3 , R , T, Q> const & m) const GLM_NOEXCEPT
131
90
{
132
91
size_t seed = 0 ;
133
- hash<glm::vec<4 , T, Q> > hasher;
92
+ hash<glm::vec<R , T, Q> > hasher;
134
93
glm::detail::hash_combine (seed, hasher (m[0 ]));
135
94
glm::detail::hash_combine (seed, hasher (m[1 ]));
136
95
glm::detail::hash_combine (seed, hasher (m[2 ]));
137
96
return seed;
138
97
}
139
98
140
- template <typename T, glm::qualifier Q>
141
- GLM_FUNC_QUALIFIER size_t hash<glm::mat<4 , 2 , T,Q> >::operator ()(glm::mat<4 , 2 , T,Q> const & m) const GLM_NOEXCEPT
99
+ template <glm:: length_t R, typename T, glm::qualifier Q >
100
+ GLM_FUNC_QUALIFIER size_t hash<glm::mat<4 , R , T, Q> >::operator ()(glm::mat<4 , R , T, Q> const & m) const GLM_NOEXCEPT
142
101
{
143
102
size_t seed = 0 ;
144
- hash<glm::vec<2 , T, Q> > hasher;
103
+ hash<glm::vec<R , T, Q> > hasher;
145
104
glm::detail::hash_combine (seed, hasher (m[0 ]));
146
105
glm::detail::hash_combine (seed, hasher (m[1 ]));
147
106
glm::detail::hash_combine (seed, hasher (m[2 ]));
148
107
glm::detail::hash_combine (seed, hasher (m[3 ]));
149
108
return seed;
150
109
}
151
110
152
- template <typename T, glm::qualifier Q>
153
- GLM_FUNC_QUALIFIER size_t hash<glm::mat<4 , 3 , T,Q> >::operator ()(glm::mat<4 , 3 , T,Q> const & m) const GLM_NOEXCEPT
154
- {
155
- size_t seed = 0 ;
156
- hash<glm::vec<3 , T, Q> > hasher;
157
- glm::detail::hash_combine (seed, hasher (m[0 ]));
158
- glm::detail::hash_combine (seed, hasher (m[1 ]));
159
- glm::detail::hash_combine (seed, hasher (m[2 ]));
160
- glm::detail::hash_combine (seed, hasher (m[3 ]));
161
- return seed;
162
- }
163
-
164
- template <typename T, glm::qualifier Q>
165
- GLM_FUNC_QUALIFIER size_t hash<glm::mat<4 , 4 , T,Q> >::operator ()(glm::mat<4 , 4 , T, Q> const & m) const GLM_NOEXCEPT
166
- {
167
- size_t seed = 0 ;
168
- hash<glm::vec<4 , T, Q> > hasher;
169
- glm::detail::hash_combine (seed, hasher (m[0 ]));
170
- glm::detail::hash_combine (seed, hasher (m[1 ]));
171
- glm::detail::hash_combine (seed, hasher (m[2 ]));
172
- glm::detail::hash_combine (seed, hasher (m[3 ]));
173
- return seed;
174
- }
175
111
}
0 commit comments