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.") 
   19 #               pragma message("GLM: GLM_GTX_hash extension included") 
   25 #include "../vec2.hpp" 
   26 #include "../vec3.hpp" 
   27 #include "../vec4.hpp" 
   28 #include "../gtc/vec1.hpp" 
   30 #include "../gtc/quaternion.hpp" 
   31 #include "../gtx/dual_quaternion.hpp" 
   33 #include "../mat2x2.hpp" 
   34 #include "../mat2x3.hpp" 
   35 #include "../mat2x4.hpp" 
   37 #include "../mat3x2.hpp" 
   38 #include "../mat3x3.hpp" 
   39 #include "../mat3x4.hpp" 
   41 #include "../mat4x2.hpp" 
   42 #include "../mat4x3.hpp" 
   43 #include "../mat4x4.hpp" 
   45 #if !GLM_HAS_CXX11_STL 
   46 #       error "GLM_GTX_hash requires C++11 standard library support" 
   51         template<
typename T, glm::qualifier Q>
 
   52         struct hash<
glm::vec<1, T,Q> >
 
   54                 GLM_FUNC_DECL 
size_t operator()(glm::vec<1, T, Q> 
const& v) 
const;
 
   57         template<
typename T, glm::qualifier Q>
 
   58         struct hash<
glm::vec<2, T,Q> >
 
   60                 GLM_FUNC_DECL 
size_t operator()(glm::vec<2, T, Q> 
const& v) 
const;
 
   63         template<
typename T, glm::qualifier Q>
 
   64         struct hash<
glm::vec<3, T,Q> >
 
   66                 GLM_FUNC_DECL 
size_t operator()(glm::vec<3, T, Q> 
const& v) 
const;
 
   69         template<
typename T, glm::qualifier Q>
 
   70         struct hash<
glm::vec<4, T,Q> >
 
   72                 GLM_FUNC_DECL 
size_t operator()(glm::vec<4, T, Q> 
const& v) 
const;
 
   75         template<
typename T, glm::qualifier Q>
 
   76         struct hash<
glm::qua<T,Q>>
 
   78                 GLM_FUNC_DECL 
size_t operator()(glm::qua<T, Q> 
const& q) 
const;
 
   81         template<
typename T, glm::qualifier Q>
 
   82         struct hash<
glm::tdualquat<T,Q> >
 
   84                 GLM_FUNC_DECL 
size_t operator()(glm::tdualquat<T,Q> 
const& q) 
const;
 
   87         template<
typename T, glm::qualifier Q>
 
   88         struct hash<
glm::mat<2, 2, T,Q> >
 
   90                 GLM_FUNC_DECL 
size_t operator()(glm::mat<2, 2, T,Q> 
const& m) 
const;
 
   93         template<
typename T, glm::qualifier Q>
 
   94         struct hash<
glm::mat<2, 3, T,Q> >
 
   96                 GLM_FUNC_DECL 
size_t operator()(glm::mat<2, 3, T,Q> 
const& m) 
const;
 
   99         template<
typename T, glm::qualifier Q>
 
  100         struct hash<
glm::mat<2, 4, T,Q> >
 
  102                 GLM_FUNC_DECL 
size_t operator()(glm::mat<2, 4, T,Q> 
const& m) 
const;
 
  105         template<
typename T, glm::qualifier Q>
 
  106         struct hash<
glm::mat<3, 2, T,Q> >
 
  108                 GLM_FUNC_DECL 
size_t operator()(glm::mat<3, 2, T,Q> 
const& m) 
const;
 
  111         template<
typename T, glm::qualifier Q>
 
  112         struct hash<
glm::mat<3, 3, T,Q> >
 
  114                 GLM_FUNC_DECL 
size_t operator()(glm::mat<3, 3, T,Q> 
const& m) 
const;
 
  117         template<
typename T, glm::qualifier Q>
 
  118         struct hash<
glm::mat<3, 4, T,Q> >
 
  120                 GLM_FUNC_DECL 
size_t operator()(glm::mat<3, 4, T,Q> 
const& m) 
const;
 
  123         template<
typename T, glm::qualifier Q>
 
  124         struct hash<
glm::mat<4, 2, T,Q> >
 
  126                 GLM_FUNC_DECL 
size_t operator()(glm::mat<4, 2, T,Q> 
const& m) 
const;
 
  129         template<
typename T, glm::qualifier Q>
 
  130         struct hash<
glm::mat<4, 3, T,Q> >
 
  132                 GLM_FUNC_DECL 
size_t operator()(glm::mat<4, 3, T,Q> 
const& m) 
const;
 
  135         template<
typename T, glm::qualifier Q>
 
  136         struct hash<
glm::mat<4, 4, T,Q> >
 
  138                 GLM_FUNC_DECL 
size_t operator()(glm::mat<4, 4, T,Q> 
const& m) 
const;