15 #ifndef GLM_ENABLE_EXPERIMENTAL 
   16 #       error "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." 
   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::qualifier Q>
 
   48         struct hash<
glm::vec<1, T,Q> >
 
   50                 GLM_FUNC_DECL 
size_t operator()(glm::vec<1, T, Q> 
const& v) 
const;
 
   53         template<
typename T, glm::qualifier Q>
 
   54         struct hash<
glm::vec<2, T,Q> >
 
   56                 GLM_FUNC_DECL 
size_t operator()(glm::vec<2, T, Q> 
const& v) 
const;
 
   59         template<
typename T, glm::qualifier Q>
 
   60         struct hash<
glm::vec<3, T,Q> >
 
   62                 GLM_FUNC_DECL 
size_t operator()(glm::vec<3, T, Q> 
const& v) 
const;
 
   65         template<
typename T, glm::qualifier Q>
 
   66         struct hash<
glm::vec<4, T,Q> >
 
   68                 GLM_FUNC_DECL 
size_t operator()(glm::vec<4, T, Q> 
const& v) 
const;
 
   71         template<
typename T, glm::qualifier Q>
 
   72         struct hash<
glm::tquat<T,Q>>
 
   74                 GLM_FUNC_DECL 
size_t operator()(glm::tquat<T, Q> 
const& q) 
const;
 
   77         template<
typename T, glm::qualifier Q>
 
   78         struct hash<
glm::tdualquat<T,Q> >
 
   80                 GLM_FUNC_DECL 
size_t operator()(glm::tdualquat<T,Q> 
const& q) 
const;
 
   83         template<
typename T, glm::qualifier Q>
 
   84         struct hash<
glm::mat<2, 2, T,Q> >
 
   86                 GLM_FUNC_DECL 
size_t operator()(glm::mat<2, 2, T,Q> 
const& m) 
const;
 
   89         template<
typename T, glm::qualifier Q>
 
   90         struct hash<
glm::mat<2, 3, T,Q> >
 
   92                 GLM_FUNC_DECL 
size_t operator()(glm::mat<2, 3, T,Q> 
const& m) 
const;
 
   95         template<
typename T, glm::qualifier Q>
 
   96         struct hash<
glm::mat<2, 4, T,Q> >
 
   98                 GLM_FUNC_DECL 
size_t operator()(glm::mat<2, 4, T,Q> 
const& m) 
const;
 
  101         template<
typename T, glm::qualifier Q>
 
  102         struct hash<
glm::mat<3, 2, T,Q> >
 
  104                 GLM_FUNC_DECL 
size_t operator()(glm::mat<3, 2, T,Q> 
const& m) 
const;
 
  107         template<
typename T, glm::qualifier Q>
 
  108         struct hash<
glm::mat<3, 3, T,Q> >
 
  110                 GLM_FUNC_DECL 
size_t operator()(glm::mat<3, 3, T,Q> 
const& m) 
const;
 
  113         template<
typename T, glm::qualifier Q>
 
  114         struct hash<
glm::mat<3, 4, T,Q> >
 
  116                 GLM_FUNC_DECL 
size_t operator()(glm::mat<3, 4, T,Q> 
const& m) 
const;
 
  119         template<
typename T, glm::qualifier Q>
 
  120         struct hash<
glm::mat<4, 2, T,Q> >
 
  122                 GLM_FUNC_DECL 
size_t operator()(glm::mat<4, 2, T,Q> 
const& m) 
const;
 
  125         template<
typename T, glm::qualifier Q>
 
  126         struct hash<
glm::mat<4, 3, T,Q> >
 
  128                 GLM_FUNC_DECL 
size_t operator()(glm::mat<4, 3, T,Q> 
const& m) 
const;
 
  131         template<
typename T, glm::qualifier Q>
 
  132         struct hash<
glm::mat<4, 4, T,Q> >
 
  134                 GLM_FUNC_DECL 
size_t operator()(glm::mat<4, 4, T,Q> 
const& m) 
const;