10 #include <type_traits> 17 template <
class VectorT>
20 template <
class T_,
int Dim_,
bool Packed_>
24 static constexpr
int Dim = Dim_;
25 static constexpr
bool Packed = Packed_;
28 template <
class VectorT>
33 template <
class MatrixT>
36 template <
class T_,
int Rows_,
int Columns_, eMatrixOrder Order_, eMatrixLayout Layout_,
bool Packed_>
40 static constexpr
int Rows = Rows_;
41 static constexpr
int Columns = Columns_;
44 static constexpr
bool Packed = Packed_;
47 template <
class MatrixT>
51 template <eMatrixLayout Layout>
59 template <
class T,
class U>
65 template <
template <
class>
class Cond,
class... T>
68 template <
template <
class>
class Cond,
class Head,
class... Rest>
69 struct All<Cond, Head, Rest...> {
70 static constexpr
bool value = Cond<Head>::value &&
All<Cond, Rest...>::value;
73 template <
template <
class>
class Cond>
75 static constexpr
bool value =
true;
79 template <
template <
class>
class Cond,
class... T>
82 template <
template <
class>
class Cond,
class Head,
class... Rest>
83 struct Any<Cond, Head, Rest...> {
84 static constexpr
bool value = Cond<Head>::value ||
Any<Cond, Rest...>::value;
87 template <
template <
class>
class Cond>
89 static constexpr
bool value =
false;
97 template <
class Tl1,
class Tl2>
100 template <
class... T,
class... U>
105 template <
class T,
int N>
114 static constexpr
bool value =
false;
116 template <
class T,
int Dim,
bool Packed>
118 static constexpr
bool value =
true;
127 static constexpr
bool value =
false;
129 template <
class T,
int... Indices>
131 static constexpr
bool value =
true;
145 static constexpr
bool value =
false;
147 template <
class T,
int Rows,
int Columns, eMatrixOrder Order, eMatrixLayout Layout,
bool Packed>
149 static constexpr
bool value =
true;
158 static constexpr
bool value =
false;
160 template <
class M,
int Rows,
int Columns>
162 static constexpr
bool value =
true;
171 static constexpr
bool value =
false;
173 template <
class T,
bool Packed>
175 static constexpr
bool value =
true;
189 template <
class U,
int A
long = 0>
191 static constexpr
int value = 1;
193 template <
class T,
int Dim,
bool Packed>
195 static constexpr
int value = Dim;
197 template <
class T,
int... Indices>
199 static constexpr
int value =
sizeof...(Indices);
203 template <
class... Rest>
206 template <
class Head,
class... Rest>
213 static constexpr
int value = 0;
217 template <
class VectorDataT>
220 static std::false_type
test(...) {
return {}; }
223 static decltype(U::simd)
test(
int) {
return {}; }
226 static constexpr
bool value = !std::is_same<std::false_type, decltype(test<VectorDataT>(0))>::value;
Definition: Traits.hpp:13
Definition: Traits.hpp:106
Definition: Traits.hpp:165
typename std::conditional< N<=0, TypeList<>, typename ConcatTypeList< TypeList< T >, typename RepeatType< T, N - 1 >::type >::type >::type type
Definition: Traits.hpp:107
Allows you to do quaternion math and represent rotation in a compact way.
Definition: Definitions.hpp:69
Definition: Traits.hpp:113
Definition: Traits.hpp:190
Definition: Traits.hpp:18
Definition: Traits.hpp:144
Definition: Traits.hpp:29
Definition: Traits.hpp:98
Definition: Traits.hpp:157
static std::false_type test(...)
Definition: Traits.hpp:220
Represents a vector in N-dimensional space.
Definition: Definitions.hpp:57
Enables element swizzling (reordering elements) for vectors.
Definition: Definitions.hpp:60
T_ Type
Definition: Traits.hpp:23
Definition: Traits.hpp:48
Definition: Traits.hpp:121
Definition: Traits.hpp:66
constexpr int DYNAMIC
Specify this as Vector or Matrix dimension template parameter to set size at runtime. PLEASE NOTE THAT DYNAMICALLY SIZED VECTORS AND MATRICES ARE NOT SUPPORTED YET.
Definition: Definitions.hpp:49
Definition: Traits.hpp:139
Definition: Traits.hpp:152
Definition: Traits.hpp:134
Definition: Traits.hpp:95
Definition: Definitions.hpp:66
Definition: Traits.hpp:184
Definition: Traits.hpp:204
Definition: Traits.hpp:80
static decltype(U::simd) test(int)
Definition: Traits.hpp:223
Definition: Definitions.hpp:63
Definition: Traits.hpp:178
Definition: Traits.hpp:34
T_ Type
Definition: Traits.hpp:39
Definition: Traits.hpp:126
Definition: Traits.hpp:52
Definition: Traits.hpp:170
Definition: Traits.hpp:218
eMatrixOrder
Determines if you want to left- or right-multiply your matrices with vectors.
Definition: Definitions.hpp:22
decltype(T() *U()+T()+U()) MatMulElemT
Definition: Traits.hpp:60
eMatrixLayout
Determines the memory layout of matrices.
Definition: Definitions.hpp:36