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>
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; };
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 87 typedef length_t length_type;
90 GLM_FUNC_DECL
static GLM_CONSTEXPR length_type
length(){
return 4;}
92 GLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);
93 GLM_FUNC_DECL GLM_CONSTEXPR T
const& operator[](length_type i)
const;
97 GLM_FUNC_DECL GLM_CONSTEXPR
vec() GLM_DEFAULT;
104 GLM_FUNC_DECL GLM_CONSTEXPR
explicit vec(T scalar);
105 GLM_FUNC_DECL GLM_CONSTEXPR vec(T x, T y, T z, T w);
109 template<
typename U, qualifier P>
110 GLM_FUNC_DECL GLM_CONSTEXPR
explicit vec(
vec<1, U, P> const& v);
113 template<
typename X,
typename Y,
typename Z,
typename W>
114 GLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, Y _y, Z _z, W _w);
115 template<
typename X,
typename Y,
typename Z,
typename W>
116 GLM_FUNC_DECL GLM_CONSTEXPR vec(
vec<1, X, Q> const& _x, Y _y, Z _z, W _w);
117 template<
typename X,
typename Y,
typename Z,
typename W>
118 GLM_FUNC_DECL GLM_CONSTEXPR vec(X _x,
vec<1, Y, Q> const& _y, Z _z, W _w);
119 template<
typename X,
typename Y,
typename Z,
typename W>
121 template<
typename X,
typename Y,
typename Z,
typename W>
122 GLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, Y _y,
vec<1, Z, Q> const& _z, W _w);
123 template<
typename X,
typename Y,
typename Z,
typename W>
125 template<
typename X,
typename Y,
typename Z,
typename W>
127 template<
typename X,
typename Y,
typename Z,
typename W>
129 template<
typename X,
typename Y,
typename Z,
typename W>
131 template<
typename X,
typename Y,
typename Z,
typename W>
133 template<
typename X,
typename Y,
typename Z,
typename W>
135 template<
typename X,
typename Y,
typename Z,
typename W>
137 template<
typename X,
typename Y,
typename Z,
typename W>
139 template<
typename X,
typename Y,
typename Z,
typename W>
141 template<
typename X,
typename Y,
typename Z,
typename W>
142 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);
147 template<
typename A,
typename B,
typename C, qualifier P>
148 GLM_FUNC_DECL GLM_CONSTEXPR vec(
vec<2, A, P> const& _xy, B _z, C _w);
150 template<
typename A,
typename B,
typename C, qualifier P>
153 template<
typename A,
typename B,
typename C, qualifier P>
156 template<
typename A,
typename B,
typename C, qualifier P>
159 template<
typename A,
typename B,
typename C, qualifier P>
160 GLM_FUNC_DECL GLM_CONSTEXPR vec(A _x,
vec<2, B, P> const& _yz, C _w);
162 template<
typename A,
typename B,
typename C, qualifier P>
165 template<
typename A,
typename B,
typename C, qualifier P>
168 template<
typename A,
typename B,
typename C, qualifier P>
171 template<
typename A,
typename B,
typename C, qualifier P>
172 GLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, B _y,
vec<2, C, P> const& _zw);
174 template<
typename A,
typename B,
typename C, qualifier P>
177 template<
typename A,
typename B,
typename C, qualifier P>
180 template<
typename A,
typename B,
typename C, qualifier P>
183 template<
typename A,
typename B, qualifier P>
184 GLM_FUNC_DECL GLM_CONSTEXPR vec(
vec<3, A, P> const& _xyz, B _w);
186 template<
typename A,
typename B, qualifier P>
189 template<
typename A,
typename B, qualifier P>
190 GLM_FUNC_DECL GLM_CONSTEXPR vec(A _x,
vec<3, B, P> const& _yzw);
192 template<
typename A,
typename B, qualifier P>
195 template<
typename A,
typename B, qualifier P>
199 template<
typename U, qualifier P>
200 GLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(
vec<4, U, P> const& v);
203 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR 204 template<
int E0,
int E1,
int E2,
int E3>
210 template<
int E0,
int E1,
int F0,
int F1>
211 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)
216 template<
int E0,
int E1>
222 template<
int E0,
int E1>
228 template<
int E0,
int E1>
234 template<
int E0,
int E1,
int E2>
240 template<
int E0,
int E1,
int E2>
245 # endif//GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR 254 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q>& operator+=(U scalar);
260 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q>& operator-=(U scalar);
266 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q>& operator*=(U scalar);
272 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q>& operator/=(U scalar);
280 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> & operator++();
281 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> & operator--();
282 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> operator++(
int);
283 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> operator--(
int);
288 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> & operator%=(U scalar);
294 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> & operator&=(U scalar);
300 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> & operator|=(U scalar);
306 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> & operator^=(U scalar);
312 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> & operator<<=(U scalar);
314 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> & operator<<=(vec<1, U, Q>
const& v);
316 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> & operator<<=(vec<4, U, Q>
const& v);
318 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> & operator>>=(U scalar);
327 template<
typename T, qualifier Q>
330 template<
typename T, qualifier Q>
335 template<
typename T, qualifier Q>
338 template<
typename T, qualifier Q>
341 template<
typename T, qualifier Q>
344 template<
typename T, qualifier Q>
347 template<
typename T, qualifier Q>
350 template<
typename T, qualifier Q>
353 template<
typename T, qualifier Q>
356 template<
typename T, qualifier Q>
359 template<
typename T, qualifier Q>
362 template<
typename T, qualifier Q>
365 template<
typename T, qualifier Q>
368 template<
typename T, qualifier Q>
371 template<
typename T, qualifier Q>
374 template<
typename T, qualifier Q>
377 template<
typename T, qualifier Q>
380 template<
typename T, qualifier Q>
383 template<
typename T, qualifier Q>
386 template<
typename T, qualifier Q>
389 template<
typename T, qualifier Q>
392 template<
typename T, qualifier Q>
395 template<
typename T, qualifier Q>
398 template<
typename T, qualifier Q>
401 template<
typename T, qualifier Q>
404 template<
typename T, qualifier Q>
407 template<
typename T, qualifier Q>
410 template<
typename T, qualifier Q>
413 template<
typename T, qualifier Q>
416 template<
typename T, qualifier Q>
419 template<
typename T, qualifier Q>
422 template<
typename T, qualifier Q>
425 template<
typename T, qualifier Q>
428 template<
typename T, qualifier Q>
431 template<
typename T, qualifier Q>
434 template<
typename T, qualifier Q>
437 template<
typename T, qualifier Q>
440 template<
typename T, qualifier Q>
443 template<
typename T, qualifier Q>
446 template<
typename T, qualifier Q>
449 template<
typename T, qualifier Q>
452 template<
typename T, qualifier Q>
455 template<
typename T, qualifier Q>
456 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> operator<<(vec<4, T, Q>
const& v, T scalar);
458 template<
typename T, qualifier Q>
461 template<
typename T, qualifier Q>
462 GLM_FUNC_DECL GLM_CONSTEXPR
vec<4, T, Q> operator<<(T scalar, vec<4, T, Q>
const& v);
464 template<
typename T, qualifier Q>
467 template<
typename T, qualifier Q>
470 template<
typename T, qualifier Q>
473 template<
typename T, qualifier Q>
476 template<
typename T, qualifier Q>
479 template<
typename T, qualifier Q>
482 template<
typename T, qualifier Q>
485 template<
typename T, qualifier Q>
490 template<
typename T, qualifier Q>
493 template<
typename T, qualifier Q>
496 template<qualifier Q>
499 template<qualifier Q>
503 #ifndef GLM_EXTERNAL_TEMPLATE 504 #include "type_vec4.inl" 505 #endif//GLM_EXTERNAL_TEMPLATE static GLM_FUNC_DECL GLM_CONSTEXPR length_type length()
Return the count of components of the vector.
Definition: type_vec4.hpp:90
Definition: qualifier.hpp:35
Definition: qualifier.hpp:85
Core features
Definition: common.hpp:20
Definition: type_vec4.hpp:17
Definition: type_vec1.hpp:17
Definition: _swizzle.hpp:158