app
android
jni
third-party
include
glm
detail
_vectorize.hpp
Go to the documentation of this file.
1
29
#pragma once
30
31
#include "
type_vec1.hpp
"
32
#include "
type_vec2.hpp
"
33
#include "
type_vec3.hpp
"
34
#include "
type_vec4.hpp
"
35
36
#define VECTORIZE1_VEC(func) \
37
template <typename T, precision P> \
38
GLM_FUNC_QUALIFIER detail::tvec1<T, P> func( \
39
detail::tvec1<T, P> const & v) \
40
{ \
41
return detail::tvec1<T, P>( \
42
func(v.x)); \
43
}
44
45
#define VECTORIZE2_VEC(func) \
46
template <typename T, precision P> \
47
GLM_FUNC_QUALIFIER detail::tvec2<T, P> func( \
48
detail::tvec2<T, P> const & v) \
49
{ \
50
return detail::tvec2<T, P>( \
51
func(v.x), \
52
func(v.y)); \
53
}
54
55
#define VECTORIZE3_VEC(func) \
56
template <typename T, precision P> \
57
GLM_FUNC_QUALIFIER detail::tvec3<T, P> func( \
58
detail::tvec3<T, P> const & v) \
59
{ \
60
return detail::tvec3<T, P>( \
61
func(v.x), \
62
func(v.y), \
63
func(v.z)); \
64
}
65
66
#define VECTORIZE4_VEC(func) \
67
template <typename T, precision P> \
68
GLM_FUNC_QUALIFIER detail::tvec4<T, P> func( \
69
detail::tvec4<T, P> const & v) \
70
{ \
71
return detail::tvec4<T, P>( \
72
func(v.x), \
73
func(v.y), \
74
func(v.z), \
75
func(v.w)); \
76
}
77
78
#define VECTORIZE_VEC(func) \
79
VECTORIZE1_VEC(func) \
80
VECTORIZE2_VEC(func) \
81
VECTORIZE3_VEC(func) \
82
VECTORIZE4_VEC(func)
83
84
#define VECTORIZE1_VEC_SCA(func) \
85
template <typename T, precision P> \
86
GLM_FUNC_QUALIFIER detail::tvec1<T, P> func \
87
( \
88
detail::tvec1<T, P> const & x, \
89
typename detail::tvec1<T, P>::value_type const & y \
90
) \
91
{ \
92
return detail::tvec1<T, P>( \
93
func(x.x, y)); \
94
}
95
96
#define VECTORIZE2_VEC_SCA(func) \
97
template <typename T, precision P> \
98
GLM_FUNC_QUALIFIER detail::tvec2<T, P> func \
99
( \
100
detail::tvec2<T, P> const & x, \
101
typename detail::tvec2<T, P>::value_type const & y \
102
) \
103
{ \
104
return detail::tvec2<T, P>( \
105
func(x.x, y), \
106
func(x.y, y)); \
107
}
108
109
#define VECTORIZE3_VEC_SCA(func) \
110
template <typename T, precision P> \
111
GLM_FUNC_QUALIFIER detail::tvec3<T, P> func \
112
( \
113
detail::tvec3<T, P> const & x, \
114
typename detail::tvec3<T, P>::value_type const & y \
115
) \
116
{ \
117
return detail::tvec3<T, P>( \
118
func(x.x, y), \
119
func(x.y, y), \
120
func(x.z, y)); \
121
}
122
123
#define VECTORIZE4_VEC_SCA(func) \
124
template <typename T, precision P> \
125
GLM_FUNC_QUALIFIER detail::tvec4<T, P> func \
126
( \
127
detail::tvec4<T, P> const & x, \
128
typename detail::tvec4<T, P>::value_type const & y \
129
) \
130
{ \
131
return detail::tvec4<T, P>( \
132
func(x.x, y), \
133
func(x.y, y), \
134
func(x.z, y), \
135
func(x.w, y)); \
136
}
137
138
#define VECTORIZE_VEC_SCA(func) \
139
VECTORIZE1_VEC_SCA(func) \
140
VECTORIZE2_VEC_SCA(func) \
141
VECTORIZE3_VEC_SCA(func) \
142
VECTORIZE4_VEC_SCA(func)
143
144
#define VECTORIZE1_VEC_VEC(func) \
145
template <typename T, precision P> \
146
GLM_FUNC_QUALIFIER detail::tvec1<T, P> func \
147
( \
148
detail::tvec1<T, P> const & x, \
149
detail::tvec1<T, P> const & y \
150
) \
151
{ \
152
return detail::tvec1<T, P>( \
153
func(x.x, y.x)); \
154
}
155
156
#define VECTORIZE2_VEC_VEC(func) \
157
template <typename T, precision P> \
158
GLM_FUNC_QUALIFIER detail::tvec2<T, P> func \
159
( \
160
detail::tvec2<T, P> const & x, \
161
detail::tvec2<T, P> const & y \
162
) \
163
{ \
164
return detail::tvec2<T, P>( \
165
func(x.x, y.x), \
166
func(x.y, y.y)); \
167
}
168
169
#define VECTORIZE3_VEC_VEC(func) \
170
template <typename T, precision P> \
171
GLM_FUNC_QUALIFIER detail::tvec3<T, P> func \
172
( \
173
detail::tvec3<T, P> const & x, \
174
detail::tvec3<T, P> const & y \
175
) \
176
{ \
177
return detail::tvec3<T, P>( \
178
func(x.x, y.x), \
179
func(x.y, y.y), \
180
func(x.z, y.z)); \
181
}
182
183
#define VECTORIZE4_VEC_VEC(func) \
184
template <typename T, precision P> \
185
GLM_FUNC_QUALIFIER detail::tvec4<T, P> func \
186
( \
187
detail::tvec4<T, P> const & x, \
188
detail::tvec4<T, P> const & y \
189
) \
190
{ \
191
return detail::tvec4<T, P>( \
192
func(x.x, y.x), \
193
func(x.y, y.y), \
194
func(x.z, y.z), \
195
func(x.w, y.w)); \
196
}
197
198
#define VECTORIZE_VEC_VEC(func) \
199
VECTORIZE1_VEC_VEC(func) \
200
VECTORIZE2_VEC_VEC(func) \
201
VECTORIZE3_VEC_VEC(func) \
202
VECTORIZE4_VEC_VEC(func)
203
204
namespace
glm
{
205
namespace
detail
206
{
207
template
<
bool
C>
208
struct
If
209
{
210
template
<
typename
F,
typename
T>
211
static
GLM_FUNC_QUALIFIER
T
apply
(F functor,
const
T
& val)
212
{
213
return
functor(val);
214
}
215
};
216
217
template
<>
218
struct
If
<
false
>
219
{
220
template
<
typename
F,
typename
T>
221
static
GLM_FUNC_QUALIFIER
T
apply
(F,
const
T
& val)
222
{
223
return
val;
224
}
225
};
226
}
//namespace detail
227
}
//namespace glm
detail
type_vec1.hpp
glm
Definition:
_literals.hpp:31
glm::detail::If< false >::apply
static GLM_FUNC_QUALIFIER T apply(F, const T &val)
Definition:
_vectorize.hpp:221
Eigen::Triplet< double >
glm::detail::If
Definition:
_vectorize.hpp:208
type_vec4.hpp
type_vec2.hpp
false
#define false
Definition:
ConvertUTF.c:56
type_vec3.hpp
GLM_FUNC_QUALIFIER
#define GLM_FUNC_QUALIFIER
Definition:
setup.hpp:729
glm::detail::If::apply
static GLM_FUNC_QUALIFIER T apply(F functor, const T &val)
Definition:
_vectorize.hpp:211
rtabmap
Author(s): Mathieu Labbe
autogenerated on Thu Jul 25 2024 02:50:06