15 #ifndef GLM_ENABLE_EXPERIMENTAL 
   16 #       error "GLM: GLM_GTX_hash is an experimetal extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it." 
   21 #include "../vec2.hpp" 
   22 #include "../vec3.hpp" 
   23 #include "../vec4.hpp" 
   24 #include "../gtc/vec1.hpp" 
   26 #include "../gtc/quaternion.hpp" 
   27 #include "../gtx/dual_quaternion.hpp" 
   29 #include "../mat2x2.hpp" 
   30 #include "../mat2x3.hpp" 
   31 #include "../mat2x4.hpp" 
   33 #include "../mat3x2.hpp" 
   34 #include "../mat3x3.hpp" 
   35 #include "../mat3x4.hpp" 
   37 #include "../mat4x2.hpp" 
   38 #include "../mat4x3.hpp" 
   39 #include "../mat4x4.hpp" 
   41 #if !GLM_HAS_CXX11_STL 
   42 #       error "GLM_GTX_hash requires C++11 standard library support" 
   47         template <
typename T, glm::precision P>
 
   48         struct hash<
glm::tvec1<T,P> >
 
   50                 GLM_FUNC_DECL 
size_t operator()(glm::tvec1<T, P> 
const & v) 
const;
 
   53         template <
typename T, glm::precision P>
 
   54         struct hash<
glm::tvec2<T,P> >
 
   56                 GLM_FUNC_DECL 
size_t operator()(glm::tvec2<T, P> 
const & v) 
const;
 
   59         template <
typename T, glm::precision P>
 
   60         struct hash<
glm::tvec3<T,P> >
 
   62                 GLM_FUNC_DECL 
size_t operator()(glm::tvec3<T, P> 
const & v) 
const;
 
   65         template <
typename T, glm::precision P>
 
   66         struct hash<
glm::tvec4<T,P> >
 
   68                 GLM_FUNC_DECL 
size_t operator()(glm::tvec4<T, P> 
const & v) 
const;
 
   71         template <
typename T, glm::precision P>
 
   72         struct hash<
glm::tquat<T,P>>
 
   74                 GLM_FUNC_DECL 
size_t operator()(glm::tquat<T, P> 
const & q) 
const;
 
   77         template <
typename T, glm::precision P>
 
   78         struct hash<
glm::tdualquat<T,P> >
 
   80                 GLM_FUNC_DECL 
size_t operator()(glm::tdualquat<T,P> 
const & q) 
const;
 
   83         template <
typename T, glm::precision P>
 
   84         struct hash<
glm::tmat2x2<T,P> >
 
   86                 GLM_FUNC_DECL 
size_t operator()(glm::tmat2x2<T,P> 
const & m) 
const;
 
   89         template <
typename T, glm::precision P>
 
   90         struct hash<
glm::tmat2x3<T,P> >
 
   92                 GLM_FUNC_DECL 
size_t operator()(glm::tmat2x3<T,P> 
const & m) 
const;
 
   95         template <
typename T, glm::precision P>
 
   96         struct hash<
glm::tmat2x4<T,P> >
 
   98                 GLM_FUNC_DECL 
size_t operator()(glm::tmat2x4<T,P> 
const & m) 
const;
 
  101         template <
typename T, glm::precision P>
 
  102         struct hash<
glm::tmat3x2<T,P> >
 
  104                 GLM_FUNC_DECL 
size_t operator()(glm::tmat3x2<T,P> 
const & m) 
const;
 
  107         template <
typename T, glm::precision P>
 
  108         struct hash<
glm::tmat3x3<T,P> >
 
  110                 GLM_FUNC_DECL 
size_t operator()(glm::tmat3x3<T,P> 
const & m) 
const;
 
  113         template <
typename T, glm::precision P>
 
  114         struct hash<
glm::tmat3x4<T,P> >
 
  116                 GLM_FUNC_DECL 
size_t operator()(glm::tmat3x4<T,P> 
const & m) 
const;
 
  119         template <
typename T, glm::precision P>
 
  120         struct hash<
glm::tmat4x2<T,P> >
 
  122                 GLM_FUNC_DECL 
size_t operator()(glm::tmat4x2<T,P> 
const & m) 
const;
 
  125         template <
typename T, glm::precision P>
 
  126         struct hash<
glm::tmat4x3<T,P> >
 
  128                 GLM_FUNC_DECL 
size_t operator()(glm::tmat4x3<T,P> 
const & m) 
const;
 
  131         template <
typename T, glm::precision P>
 
  132         struct hash<
glm::tmat4x4<T,P> >
 
  134                 GLM_FUNC_DECL 
size_t operator()(glm::tmat4x4<T,P> 
const & m) 
const;