FlukyEngine
hash.hpp
Go to the documentation of this file.
1 
13 #pragma once
14 
15 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
16 # ifndef GLM_ENABLE_EXPERIMENTAL
17 # pragma message("GLM: GLM_GTX_hash is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
18 # else
19 # pragma message("GLM: GLM_GTX_hash extension included")
20 # endif
21 #endif
22 
23 #include <functional>
24 
25 #include "../vec2.hpp"
26 #include "../vec3.hpp"
27 #include "../vec4.hpp"
28 #include "../gtc/vec1.hpp"
29 
30 #include "../gtc/quaternion.hpp"
31 #include "../gtx/dual_quaternion.hpp"
32 
33 #include "../mat2x2.hpp"
34 #include "../mat2x3.hpp"
35 #include "../mat2x4.hpp"
36 
37 #include "../mat3x2.hpp"
38 #include "../mat3x3.hpp"
39 #include "../mat3x4.hpp"
40 
41 #include "../mat4x2.hpp"
42 #include "../mat4x3.hpp"
43 #include "../mat4x4.hpp"
44 
45 #if !GLM_HAS_CXX11_STL
46 # error "GLM_GTX_hash requires C++11 standard library support"
47 #endif
48 
49 namespace std
50 {
51  template<typename T, glm::qualifier Q>
52  struct hash<glm::vec<1, T,Q> >
53  {
54  GLM_FUNC_DECL size_t operator()(glm::vec<1, T, Q> const& v) const;
55  };
56 
57  template<typename T, glm::qualifier Q>
58  struct hash<glm::vec<2, T,Q> >
59  {
60  GLM_FUNC_DECL size_t operator()(glm::vec<2, T, Q> const& v) const;
61  };
62 
63  template<typename T, glm::qualifier Q>
64  struct hash<glm::vec<3, T,Q> >
65  {
66  GLM_FUNC_DECL size_t operator()(glm::vec<3, T, Q> const& v) const;
67  };
68 
69  template<typename T, glm::qualifier Q>
70  struct hash<glm::vec<4, T,Q> >
71  {
72  GLM_FUNC_DECL size_t operator()(glm::vec<4, T, Q> const& v) const;
73  };
74 
75  template<typename T, glm::qualifier Q>
76  struct hash<glm::qua<T,Q>>
77  {
78  GLM_FUNC_DECL size_t operator()(glm::qua<T, Q> const& q) const;
79  };
80 
81  template<typename T, glm::qualifier Q>
82  struct hash<glm::tdualquat<T,Q> >
83  {
84  GLM_FUNC_DECL size_t operator()(glm::tdualquat<T,Q> const& q) const;
85  };
86 
87  template<typename T, glm::qualifier Q>
88  struct hash<glm::mat<2, 2, T,Q> >
89  {
90  GLM_FUNC_DECL size_t operator()(glm::mat<2, 2, T,Q> const& m) const;
91  };
92 
93  template<typename T, glm::qualifier Q>
94  struct hash<glm::mat<2, 3, T,Q> >
95  {
96  GLM_FUNC_DECL size_t operator()(glm::mat<2, 3, T,Q> const& m) const;
97  };
98 
99  template<typename T, glm::qualifier Q>
100  struct hash<glm::mat<2, 4, T,Q> >
101  {
102  GLM_FUNC_DECL size_t operator()(glm::mat<2, 4, T,Q> const& m) const;
103  };
104 
105  template<typename T, glm::qualifier Q>
106  struct hash<glm::mat<3, 2, T,Q> >
107  {
108  GLM_FUNC_DECL size_t operator()(glm::mat<3, 2, T,Q> const& m) const;
109  };
110 
111  template<typename T, glm::qualifier Q>
112  struct hash<glm::mat<3, 3, T,Q> >
113  {
114  GLM_FUNC_DECL size_t operator()(glm::mat<3, 3, T,Q> const& m) const;
115  };
116 
117  template<typename T, glm::qualifier Q>
118  struct hash<glm::mat<3, 4, T,Q> >
119  {
120  GLM_FUNC_DECL size_t operator()(glm::mat<3, 4, T,Q> const& m) const;
121  };
122 
123  template<typename T, glm::qualifier Q>
124  struct hash<glm::mat<4, 2, T,Q> >
125  {
126  GLM_FUNC_DECL size_t operator()(glm::mat<4, 2, T,Q> const& m) const;
127  };
128 
129  template<typename T, glm::qualifier Q>
130  struct hash<glm::mat<4, 3, T,Q> >
131  {
132  GLM_FUNC_DECL size_t operator()(glm::mat<4, 3, T,Q> const& m) const;
133  };
134 
135  template<typename T, glm::qualifier Q>
136  struct hash<glm::mat<4, 4, T,Q> >
137  {
138  GLM_FUNC_DECL size_t operator()(glm::mat<4, 4, T,Q> const& m) const;
139  };
140 } // namespace std
141 
142 #include "hash.inl"
Definition: type_vec2.hpp:17
Definition: type_vec3.hpp:17
Definition: qualifier.hpp:37
Core features
Definition: common.hpp:20
Definition: hash.hpp:49
Definition: type_mat2x3.hpp:14
Definition: type_mat4x3.hpp:14
Definition: type_mat3x3.hpp:13
Definition: type_mat2x2.hpp:13
Definition: type_mat4x2.hpp:14
Definition: type_mat3x2.hpp:14
Definition: type_vec4.hpp:17
Definition: type_mat2x4.hpp:14
Definition: type_mat4x4.hpp:13
Definition: type_mat3x4.hpp:14
Definition: type_vec1.hpp:17
Definition: dual_quaternion.hpp:37