| 1.0.0 API documentation

type_trait.hpp
Go to the documentation of this file.
1
13 #pragma once
14
15 #ifndef GLM_ENABLE_EXPERIMENTAL
16 # error "GLM: GLM_GTX_type_trait 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."
17 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
18 # pragma message("GLM: GLM_GTX_type_trait extension included")
19 #endif
20
21 // Dependency:
22 #include "../detail/qualifier.hpp"
23 #include "../gtc/quaternion.hpp"
24 #include "../gtx/dual_quaternion.hpp"
25
26 namespace glm
27 {
30
31 template<typename T>
32 struct type
33 {
34 static bool const is_vec = false;
35 static bool const is_mat = false;
36 static bool const is_quat = false;
37 static length_t const components = 0;
38 static length_t const cols = 0;
39 static length_t const rows = 0;
40 };
41
42 template<length_t L, typename T, qualifier Q>
43 struct type<vec<L, T, Q> >
44 {
45 static bool const is_vec = true;
46 static bool const is_mat = false;
47 static bool const is_quat = false;
48 static length_t const components = L;
49 };
50
51 template<length_t C, length_t R, typename T, qualifier Q>
52 struct type<mat<C, R, T, Q> >
53 {
54 static bool const is_vec = false;
55 static bool const is_mat = true;
56 static bool const is_quat = false;
57 static length_t const components = C;
58 static length_t const cols = C;
59 static length_t const rows = R;
60 };
61
62 template<typename T, qualifier Q>
63 struct type<qua<T, Q> >
64 {
65 static bool const is_vec = false;
66 static bool const is_mat = false;
67 static bool const is_quat = true;
68 static length_t const components = 4;
69 };
70
71 template<typename T, qualifier Q>
72 struct type<tdualquat<T, Q> >
73 {
74 static bool const is_vec = false;
75 static bool const is_mat = false;
76 static bool const is_quat = true;
77 static length_t const components = 8;
78 };
79
81 }//namespace glm
82
83 #include "type_trait.inl"