diff --git a/glm/gtx/type_trait.hpp b/glm/gtx/type_trait.hpp index 08dcc1a7..637bbd19 100644 --- a/glm/gtx/type_trait.hpp +++ b/glm/gtx/type_trait.hpp @@ -17,18 +17,7 @@ #endif // Dependency: -#include "../detail/type_vec2.hpp" -#include "../detail/type_vec3.hpp" -#include "../detail/type_vec4.hpp" -#include "../detail/type_mat2x2.hpp" -#include "../detail/type_mat2x3.hpp" -#include "../detail/type_mat2x4.hpp" -#include "../detail/type_mat3x2.hpp" -#include "../detail/type_mat3x3.hpp" -#include "../detail/type_mat3x4.hpp" -#include "../detail/type_mat4x2.hpp" -#include "../detail/type_mat4x3.hpp" -#include "../detail/type_mat4x4.hpp" +#include "../detail/qualifier.hpp" #include "../gtc/quaternion.hpp" #include "../gtx/dual_quaternion.hpp" @@ -58,136 +47,18 @@ namespace glm static bool const is_vec = true; static bool const is_mat = false; static bool const is_quat = false; - enum - { - components = L - }; + static length_t const components = L; }; - template - struct type > - { - static bool const is_vec = false; - static bool const is_mat = true; - static bool const is_quat = false; - enum - { - components = 2, - cols = 2, - rows = 2 - }; - }; - - template - struct type > - { - static bool const is_vec = false; - static bool const is_mat = true; - static bool const is_quat = false; - enum - { - components = 2, - cols = 2, - rows = 3 - }; - }; - - template - struct type > - { - static bool const is_vec = false; - static bool const is_mat = true; - static bool const is_quat = false; - enum - { - components = 2, - cols = 2, - rows = 4 - }; - }; - - template - struct type > - { - static bool const is_vec = false; - static bool const is_mat = true; - static bool const is_quat = false; - enum - { - components = 3, - cols = 3, - rows = 2 - }; - }; - - template - struct type > - { - static bool const is_vec = false; - static bool const is_mat = true; - static bool const is_quat = false; - enum - { - components = 3, - cols = 3, - rows = 3 - }; - }; - - template - struct type > - { - static bool const is_vec = false; - static bool const is_mat = true; - static bool const is_quat = false; - enum - { - components = 3, - cols = 3, - rows = 4 - }; - }; - - template - struct type > - { - static bool const is_vec = false; - static bool const is_mat = true; - static bool const is_quat = false; - enum - { - components = 4, - cols = 4, - rows = 2 - }; - }; - - template - struct type > - { - static bool const is_vec = false; - static bool const is_mat = true; - static bool const is_quat = false; - enum - { - components = 4, - cols = 4, - rows = 3 - }; - }; - - template - struct type > + template + struct type > { static bool const is_vec = false; static bool const is_mat = true; static bool const is_quat = false; - enum - { - components = 4, - cols = 4, - rows = 4 - }; + static length_t const components = C; + static length_t const cols = C; + static length_t const rows = R; }; template @@ -196,10 +67,7 @@ namespace glm static bool const is_vec = false; static bool const is_mat = false; static bool const is_quat = true; - enum - { - components = 4 - }; + static length_t const components = 4; }; template @@ -208,10 +76,7 @@ namespace glm static bool const is_vec = false; static bool const is_mat = false; static bool const is_quat = true; - enum - { - components = 8 - }; + static length_t const components = 8; }; /// @} diff --git a/glm/gtx/type_trait.inl b/glm/gtx/type_trait.inl index e69de29b..1cdf3322 100644 --- a/glm/gtx/type_trait.inl +++ b/glm/gtx/type_trait.inl @@ -0,0 +1,62 @@ +/// @ref gtx_type_trait +/// @file glm/gtx/type_trait.inl + +namespace glm +{ + template + bool const type::is_vec; + template + bool const type::is_mat; + template + bool const type::is_quat; + template + length_t const type::components; + template + length_t const type::cols; + template + length_t const type::rows; + + // vec + template + bool const type >::is_vec; + template + bool const type >::is_mat; + template + bool const type >::is_quat; + template + length_t const type >::components; + + // mat + template + bool const type >::is_vec; + template + bool const type >::is_mat; + template + bool const type >::is_quat; + template + length_t const type >::components; + template + length_t const type >::cols; + template + length_t const type >::rows; + + // tquat + template + bool const type >::is_vec; + template + bool const type >::is_mat; + template + bool const type >::is_quat; + template + length_t const type >::components; + + // tdualquat + template + bool const type >::is_vec; + template + bool const type >::is_mat; + template + bool const type >::is_quat; + template + length_t const type >::components; +}//namespace glm