2
3
4
5
6
7
8
11#ifndef _GLSL_STRUCT_MAT_TRAITS_CONCEPT_HPP_
12 #define _GLSL_STRUCT_MAT_TRAITS_CONCEPT_HPP_
14 #include <glslstruct/config.hpp>
17_GLSL_STRUCT_ERROR(
"This is only available for c++17 and greater!");
20 #include <glslstruct/utils/array_traits.hpp>
21 #include <glslstruct/utils/ValueType.hpp>
27
28
29
30
31
32
33
34
35
36
37
38
39
40
48
49
50
51
52
55
56
57
58
59
63
64
65
66
68 concept glsl_mat = requires {
69 { mat_traits<T>::get_columns() } -> std::same_as<size_t>;
70 { mat_traits<T>::get_rows() } -> std::same_as<size_t>;
71 { mat_traits<T>::get_value_type() } -> std::same_as<ValueType>;
72 { mat_traits<T>::get_data(std::declval<
const T&>()) } -> std::same_as<mat_data>;
73 { mat_traits<T>::get_value(std::declval<
const mat_data&>()) } -> std::same_as<T>;
77 static _GLSL_STRUCT_CONSTEXPR17
bool is_glsl_mat_v = glsl_mat<T>;
80 struct is_glsl_mat : std::bool_constant<is_glsl_mat_v<T> > {};
83 template<
typename T,
typename =
void>
84 struct is_glsl_mat : std::false_type {};
88 std::void_t<std::enable_if_t<std::is_same_v<size_t,
decltype(mat_traits<T>::get_columns())> >,
89 std::enable_if_t<std::is_same_v<size_t,
decltype(mat_traits<T>::get_rows())> >,
90 std::enable_if_t<std::is_same_v<ValueType,
decltype(mat_traits<T>::get_value_type())> >,
91 std::enable_if_t<std::is_same_v<mat_data,
decltype(mat_traits<T>::get_data(std::declval<
const T&>()))> >,
92 std::enable_if_t<std::is_same_v<T,
decltype(mat_traits<T>::get_value(std::declval<
const mat_data&>()))> > > >
100 #pragma region IS_MATS_ARRAY
102
103
104
105
110
111
112
113
119
120
121
122
123 template<
class V> concept glsl_mats_array = is_glsl_mats_array_v<V>;
126
127
128
129
130 template<
class V> concept glsl_mats_static_size_array = is_glsl_mats_static_size_array_v<V>;
#define _GLSL_STRUCT_HAS_CXX20
check if compiler has c++ version greater or equal to c++20 and if user enabled c++20 features using ...
Definition config.hpp:142
#define _GLSL_STRUCT_HAS_CXX17
check if compiler has c++ version greater or equal to c++17
Definition config.hpp:130
#define _GLSL_STRUCT_CONSTEXPR17
constexpr for c++17 and higher
Definition config.hpp:196