6 #include "qualifier.hpp" 7 #if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR 8 # include "_swizzle.hpp" 9 #elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION 10 # include "_swizzle_func.hpp" 16 template<
typename T, qualifier Q>
22 typedef vec<4, T, Q> type;
23 typedef vec<4, bool, Q> bool_type;
27 # if GLM_SILENT_WARNINGS == GLM_ENABLE 28 # if GLM_COMPILER & GLM_COMPILER_GCC 29 # pragma GCC diagnostic push 30 # pragma GCC diagnostic ignored "-Wpedantic" 31 # elif GLM_COMPILER & GLM_COMPILER_CLANG 32 # pragma clang diagnostic push 33 # pragma clang diagnostic ignored "-Wgnu-anonymous-struct" 34 # pragma clang diagnostic ignored "-Wnested-anon-types" 35 # elif GLM_COMPILER & GLM_COMPILER_VC 36 # pragma warning(push) 37 # pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union 41 # if GLM_CONFIG_XYZW_ONLY 43 # elif GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE 46 struct { T x, y, z, w; };
47 struct { T r, g, b, a; };
48 struct { T s, t, p, q; };
50 typename detail::storage<4, T, detail::is_aligned<Q>::value>::type data;
52 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR 53 GLM_SWIZZLE4_2_MEMBERS(T, Q, x, y, z, w)
54 GLM_SWIZZLE4_2_MEMBERS(T, Q, r, g, b, a)
55 GLM_SWIZZLE4_2_MEMBERS(T, Q, s, t, p, q)
56 GLM_SWIZZLE4_3_MEMBERS(T, Q, x, y, z, w)
57 GLM_SWIZZLE4_3_MEMBERS(T, Q, r, g, b, a)
58 GLM_SWIZZLE4_3_MEMBERS(T, Q, s, t, p, q)
59 GLM_SWIZZLE4_4_MEMBERS(T, Q, x, y, z, w)
60 GLM_SWIZZLE4_4_MEMBERS(T, Q, r, g, b, a)
61 GLM_SWIZZLE4_4_MEMBERS(T, Q, s, t, p, q)
70 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION 71 GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, Q)
75 # if GLM_SILENT_WARNINGS == GLM_ENABLE 76 # if GLM_COMPILER & GLM_COMPILER_CLANG 77 # pragma clang diagnostic pop 78 # elif GLM_COMPILER & GLM_COMPILER_GCC 79 # pragma GCC diagnostic pop 80 # elif GLM_COMPILER & GLM_COMPILER_VC 88 typedef length_t length_type;
89 GLM_FUNC_DECL
static GLM_CONSTEXPR length_type
length(){
return 4;}
91 GLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);
92 GLM_FUNC_DECL GLM_CONSTEXPR T
const& operator[](length_type i)
const;
96 GLM_FUNC_DECL GLM_CONSTEXPR vec() GLM_DEFAULT;
97 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<4, T, Q> const& v) GLM_DEFAULT;
99 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<4, T, P> const& v);
103 GLM_FUNC_DECL GLM_CONSTEXPR explicit vec(T scalar);
104 GLM_FUNC_DECL GLM_CONSTEXPR vec(T x, T y, T z, T w);
108 template<typename U, qualifier P>
109 GLM_FUNC_DECL GLM_CONSTEXPR explicit vec(vec<1, U, P> const& v);
112 template<typename X, typename Y, typename Z, typename W>
113 GLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, Y _y, Z _z, W _w);
114 template<typename X, typename Y, typename Z, typename W>
115 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, Y _y, Z _z, W _w);
116 template<typename X, typename Y, typename Z, typename W>
117 GLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, vec<1, Y, Q> const& _y, Z _z, W _w);
118 template<typename X, typename Y, typename Z, typename W>
119 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, Z _z, W _w);
120 template<typename X, typename Y, typename Z, typename W>
121 GLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, Y _y, vec<1, Z, Q> const& _z, W _w);
122 template<typename X, typename Y, typename Z, typename W>
123 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, Y _y, vec<1, Z, Q> const& _z, W _w);
124 template<typename X, typename Y, typename Z, typename W>
125 GLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, W _w);
126 template<typename X, typename Y, typename Z, typename W>
127 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, W _w);
128 template<typename X, typename Y, typename Z, typename W>
129 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, Y _y, Z _z, vec<1, W, Q> const& _w);
130 template<typename X, typename Y, typename Z, typename W>
131 GLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, vec<1, Y, Q> const& _y, Z _z, vec<1, W, Q> const& _w);
132 template<typename X, typename Y, typename Z, typename W>
133 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, Z _z, vec<1, W, Q> const& _w);
134 template<typename X, typename Y, typename Z, typename W>
135 GLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, Y _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);
136 template<typename X, typename Y, typename Z, typename W>
137 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, Y _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);
138 template<typename X, typename Y, typename Z, typename W>
139 GLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);
140 template<typename X, typename Y, typename Z, typename W>
141 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _Y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);
146 template<typename A, typename B, typename C, qualifier P>
147 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, B _z, C _w);
149 template<typename A, typename B, typename C, qualifier P>
150 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, vec<1, B, P> const& _z, C _w);
152 template<typename A, typename B, typename C, qualifier P>
153 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, B _z, vec<1, C, P> const& _w);
155 template<typename A, typename B, typename C, qualifier P>
156 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, vec<1, B, P> const& _z, vec<1, C, P> const& _w);
158 template<typename A, typename B, typename C, qualifier P>
159 GLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, vec<2, B, P> const& _yz, C _w);
161 template<typename A, typename B, typename C, qualifier P>
162 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, P> const& _x, vec<2, B, P> const& _yz, C _w);
164 template<typename A, typename B, typename C, qualifier P>
165 GLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, vec<2, B, P> const& _yz, vec<1, C, P> const& _w);
167 template<typename A, typename B, typename C, qualifier P>
168 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, P> const& _x, vec<2, B, P> const& _yz, vec<1, C, P> const& _w);
170 template<typename A, typename B, typename C, qualifier P>
171 GLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, B _y, vec<2, C, P> const& _zw);
173 template<typename A, typename B, typename C, qualifier P>
174 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, P> const& _x, B _y, vec<2, C, P> const& _zw);
176 template<typename A, typename B, typename C, qualifier P>
177 GLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, vec<1, B, P> const& _y, vec<2, C, P> const& _zw);
179 template<typename A, typename B, typename C, qualifier P>
180 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, P> const& _x, vec<1, B, P> const& _y, vec<2, C, P> const& _zw);
182 template<typename A, typename B, qualifier P>
183 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<3, A, P> const& _xyz, B _w);
185 template<typename A, typename B, qualifier P>
186 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<3, A, P> const& _xyz, vec<1, B, P> const& _w);
188 template<typename A, typename B, qualifier P>
189 GLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, vec<3, B, P> const& _yzw);
191 template<typename A, typename B, qualifier P>
192 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, P> const& _x, vec<3, B, P> const& _yzw);
194 template<typename A, typename B, qualifier P>
195 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, vec<2, B, P> const& _zw);
198 template<typename U, qualifier P>
199 GLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<4, U, P> const& v);
202 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR 203 template<
int E0,
int E1,
int E2,
int E3>
204 GLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<4, T, Q, E0, E1, E2, E3>
const& that)
209 template<
int E0,
int E1,
int F0,
int F1>
210 GLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<2, T, Q, E0, E1, -1, -2>
const& v, detail::_swizzle<2, T, Q, F0, F1, -1, -2>
const& u)
212 *
this = vec<4, T, Q>(v(), u());
215 template<
int E0,
int E1>
216 GLM_FUNC_DECL GLM_CONSTEXPR vec(T
const& x, T
const& y, detail::_swizzle<2, T, Q, E0, E1, -1, -2>
const& v)
218 *
this = vec<4, T, Q>(x, y, v());
221 template<
int E0,
int E1>
222 GLM_FUNC_DECL GLM_CONSTEXPR vec(T
const& x, detail::_swizzle<2, T, Q, E0, E1, -1, -2>
const& v, T
const& w)
224 *
this = vec<4, T, Q>(x, v(), w);
227 template<
int E0,
int E1>
228 GLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<2, T, Q, E0, E1, -1, -2>
const& v, T
const& z, T
const& w)
230 *
this = vec<4, T, Q>(v(), z, w);
233 template<
int E0,
int E1,
int E2>
234 GLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<3, T, Q, E0, E1, E2, -1>
const& v, T
const& w)
236 *
this = vec<4, T, Q>(v(), w);
239 template<
int E0,
int E1,
int E2>
240 GLM_FUNC_DECL GLM_CONSTEXPR vec(T
const& x, detail::_swizzle<3, T, Q, E0, E1, E2, -1>
const& v)
242 *
this = vec<4, T, Q>(x, v());
244 # endif//GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR 248 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator=(vec<4, T, Q>
const& v) GLM_DEFAULT;
251 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator=(vec<4, U, Q>
const& v);
253 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator+=(U scalar);
255 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator+=(vec<1, U, Q>
const& v);
257 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator+=(vec<4, U, Q>
const& v);
259 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator-=(U scalar);
261 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator-=(vec<1, U, Q>
const& v);
263 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator-=(vec<4, U, Q>
const& v);
265 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator*=(U scalar);
267 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator*=(vec<1, U, Q>
const& v);
269 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator*=(vec<4, U, Q>
const& v);
271 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator/=(U scalar);
273 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator/=(vec<1, U, Q>
const& v);
275 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator/=(vec<4, U, Q>
const& v);
279 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator++();
280 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator--();
281 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator++(
int);
282 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator--(
int);
287 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator%=(U scalar);
289 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator%=(vec<1, U, Q>
const& v);
291 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator%=(vec<4, U, Q>
const& v);
293 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator&=(U scalar);
295 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator&=(vec<1, U, Q>
const& v);
297 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator&=(vec<4, U, Q>
const& v);
299 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator|=(U scalar);
301 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator|=(vec<1, U, Q>
const& v);
303 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator|=(vec<4, U, Q>
const& v);
305 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator^=(U scalar);
307 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator^=(vec<1, U, Q>
const& v);
309 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator^=(vec<4, U, Q>
const& v);
311 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator<<=(U scalar);
313 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator<<=(vec<1, U, Q>
const& v);
315 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator<<=(vec<4, U, Q>
const& v);
317 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator>>=(U scalar);
319 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator>>=(vec<1, U, Q>
const& v);
321 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator>>=(vec<4, U, Q>
const& v);
326 template<
typename T, qualifier Q>
327 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q>
const& v);
329 template<
typename T, qualifier Q>
330 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q>
const& v);
334 template<
typename T, qualifier Q>
335 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q>
const& v, T
const & scalar);
337 template<
typename T, qualifier Q>
338 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q>
const& v1, vec<1, T, Q>
const& v2);
340 template<
typename T, qualifier Q>
341 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(T scalar, vec<4, T, Q>
const& v);
343 template<
typename T, qualifier Q>
344 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<1, T, Q>
const& v1, vec<4, T, Q>
const& v2);
346 template<
typename T, qualifier Q>
347 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
349 template<
typename T, qualifier Q>
350 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q>
const& v, T
const & scalar);
352 template<
typename T, qualifier Q>
353 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q>
const& v1, vec<1, T, Q>
const& v2);
355 template<
typename T, qualifier Q>
356 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(T scalar, vec<4, T, Q>
const& v);
358 template<
typename T, qualifier Q>
359 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<1, T, Q>
const& v1, vec<4, T, Q>
const& v2);
361 template<
typename T, qualifier Q>
362 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
364 template<
typename T, qualifier Q>
365 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q>
const& v, T
const & scalar);
367 template<
typename T, qualifier Q>
368 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q>
const& v1, vec<1, T, Q>
const& v2);
370 template<
typename T, qualifier Q>
371 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(T scalar, vec<4, T, Q>
const& v);
373 template<
typename T, qualifier Q>
374 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<1, T, Q>
const& v1, vec<4, T, Q>
const& v2);
376 template<
typename T, qualifier Q>
377 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
379 template<
typename T, qualifier Q>
380 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q>
const& v, T
const & scalar);
382 template<
typename T, qualifier Q>
383 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q>
const& v1, vec<1, T, Q>
const& v2);
385 template<
typename T, qualifier Q>
386 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(T scalar, vec<4, T, Q>
const& v);
388 template<
typename T, qualifier Q>
389 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<1, T, Q>
const& v1, vec<4, T, Q>
const& v2);
391 template<
typename T, qualifier Q>
392 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
394 template<
typename T, qualifier Q>
395 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q>
const& v, T scalar);
397 template<
typename T, qualifier Q>
398 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q>
const& v, vec<1, T, Q>
const& scalar);
400 template<
typename T, qualifier Q>
401 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(T scalar, vec<4, T, Q>
const& v);
403 template<
typename T, qualifier Q>
404 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<1, T, Q>
const& scalar, vec<4, T, Q>
const& v);
406 template<
typename T, qualifier Q>
407 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
409 template<
typename T, qualifier Q>
410 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q>
const& v, T scalar);
412 template<
typename T, qualifier Q>
413 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q>
const& v, vec<1, T, Q>
const& scalar);
415 template<
typename T, qualifier Q>
416 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(T scalar, vec<4, T, Q>
const& v);
418 template<
typename T, qualifier Q>
419 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<1, T, Q>
const& scalar, vec<4, T, Q>
const& v);
421 template<
typename T, qualifier Q>
422 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
424 template<
typename T, qualifier Q>
425 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q>
const& v, T scalar);
427 template<
typename T, qualifier Q>
428 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q>
const& v, vec<1, T, Q>
const& scalar);
430 template<
typename T, qualifier Q>
431 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(T scalar, vec<4, T, Q>
const& v);
433 template<
typename T, qualifier Q>
434 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<1, T, Q>
const& scalar, vec<4, T, Q>
const& v);
436 template<
typename T, qualifier Q>
437 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
439 template<
typename T, qualifier Q>
440 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q>
const& v, T scalar);
442 template<
typename T, qualifier Q>
443 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q>
const& v, vec<1, T, Q>
const& scalar);
445 template<
typename T, qualifier Q>
446 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(T scalar, vec<4, T, Q>
const& v);
448 template<
typename T, qualifier Q>
449 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<1, T, Q>
const& scalar, vec<4, T, Q>
const& v);
451 template<
typename T, qualifier Q>
452 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
454 template<
typename T, qualifier Q>
455 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q>
const& v, T scalar);
457 template<
typename T, qualifier Q>
458 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q>
const& v, vec<1, T, Q>
const& scalar);
460 template<
typename T, qualifier Q>
461 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(T scalar, vec<4, T, Q>
const& v);
463 template<
typename T, qualifier Q>
464 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<1, T, Q>
const& scalar, vec<4, T, Q>
const& v);
466 template<
typename T, qualifier Q>
467 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
469 template<
typename T, qualifier Q>
470 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q>
const& v, T scalar);
472 template<
typename T, qualifier Q>
473 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q>
const& v, vec<1, T, Q>
const& scalar);
475 template<
typename T, qualifier Q>
476 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(T scalar, vec<4, T, Q>
const& v);
478 template<
typename T, qualifier Q>
479 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<1, T, Q>
const& scalar, vec<4, T, Q>
const& v);
481 template<
typename T, qualifier Q>
482 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
484 template<
typename T, qualifier Q>
485 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator~(vec<4, T, Q>
const& v);
489 template<
typename T, qualifier Q>
490 GLM_FUNC_DECL GLM_CONSTEXPR
bool operator==(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
492 template<
typename T, qualifier Q>
493 GLM_FUNC_DECL GLM_CONSTEXPR
bool operator!=(vec<4, T, Q>
const& v1, vec<4, T, Q>
const& v2);
495 template<qualifier Q>
496 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> operator&&(vec<4, bool, Q>
const& v1, vec<4, bool, Q>
const& v2);
498 template<qualifier Q>
499 GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> operator||(vec<4, bool, Q>
const& v1, vec<4, bool, Q>
const& v2);
502 #ifndef GLM_EXTERNAL_TEMPLATE 503 #include "type_vec4.inl" 504 #endif//GLM_EXTERNAL_TEMPLATE GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.