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
37# pragma warning(disable: 4201)
38# if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE
39# pragma warning(disable: 4324)
44# if GLM_CONFIG_XYZW_ONLY
46# elif GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE
55# if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
56 GLM_SWIZZLE3_2_MEMBERS(T, Q, x, y, z)
57 GLM_SWIZZLE3_2_MEMBERS(T, Q, r, g, b)
58 GLM_SWIZZLE3_2_MEMBERS(T, Q, s, t, p)
59 GLM_SWIZZLE3_3_MEMBERS(T, Q, x, y, z)
60 GLM_SWIZZLE3_3_MEMBERS(T, Q, r, g, b)
61 GLM_SWIZZLE3_3_MEMBERS(T, Q, s, t, p)
62 GLM_SWIZZLE3_4_MEMBERS(T, Q, x, y, z)
63 GLM_SWIZZLE3_4_MEMBERS(T, Q, r, g, b)
64 GLM_SWIZZLE3_4_MEMBERS(T, Q, s, t, p)
72# if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
73 GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, Q)
77# if GLM_SILENT_WARNINGS == GLM_ENABLE
78# if GLM_COMPILER & GLM_COMPILER_CLANG
79# pragma clang diagnostic pop
80# elif GLM_COMPILER & GLM_COMPILER_GCC
81# pragma GCC diagnostic pop
82# elif GLM_COMPILER & GLM_COMPILER_VC
91 GLM_FUNC_DECL
static GLM_CONSTEXPR
length_type length(){
return 3;}
93 GLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);
94 GLM_FUNC_DECL GLM_CONSTEXPR T
const& operator[](length_type i)
const;
98 GLM_FUNC_DECL GLM_CONSTEXPR
vec() GLM_DEFAULT;
99 GLM_FUNC_DECL GLM_CONSTEXPR
vec(
vec const& v) GLM_DEFAULT;
101 GLM_FUNC_DECL GLM_CONSTEXPR
vec(
vec<3, T, P> const& v);
105 GLM_FUNC_DECL GLM_CONSTEXPR explicit
vec(T scalar);
106 GLM_FUNC_DECL GLM_CONSTEXPR
vec(T a, T b, T c);
111 GLM_FUNC_DECL GLM_CONSTEXPR explicit
vec(
vec<1, U, P> const& v);
114 template<typename X, typename Y, typename Z>
115 GLM_FUNC_DECL GLM_CONSTEXPR
vec(X x, Y y, Z z);
116 template<typename X, typename Y, typename Z>
117 GLM_FUNC_DECL GLM_CONSTEXPR
vec(
vec<1, X, Q> const& _x, Y _y, Z _z);
118 template<typename X, typename Y, typename Z>
119 GLM_FUNC_DECL GLM_CONSTEXPR
vec(X _x,
vec<1, Y, Q> const& _y, Z _z);
120 template<typename X, typename Y, typename Z>
121 GLM_FUNC_DECL GLM_CONSTEXPR
vec(
vec<1, X, Q> const& _x,
vec<1, Y, Q> const& _y, Z _z);
122 template<typename X, typename Y, typename Z>
123 GLM_FUNC_DECL GLM_CONSTEXPR
vec(X _x, Y _y,
vec<1, Z, Q> const& _z);
124 template<typename X, typename Y, typename Z>
125 GLM_FUNC_DECL GLM_CONSTEXPR
vec(
vec<1, X, Q> const& _x, Y _y,
vec<1, Z, Q> const& _z);
126 template<typename X, typename Y, typename Z>
127 GLM_FUNC_DECL GLM_CONSTEXPR
vec(X _x,
vec<1, Y, Q> const& _y,
vec<1, Z, Q> const& _z);
128 template<typename X, typename Y, typename Z>
129 GLM_FUNC_DECL GLM_CONSTEXPR
vec(
vec<1, X, Q> const& _x,
vec<1, Y, Q> const& _y,
vec<1, Z, Q> const& _z);
134 template<typename A, typename B,
qualifier P>
135 GLM_FUNC_DECL GLM_CONSTEXPR
vec(
vec<2, A, P> const& _xy, B _z);
137 template<typename A, typename B,
qualifier P>
138 GLM_FUNC_DECL GLM_CONSTEXPR
vec(
vec<2, A, P> const& _xy,
vec<1, B, P> const& _z);
140 template<typename A, typename B,
qualifier P>
141 GLM_FUNC_DECL GLM_CONSTEXPR
vec(A _x,
vec<2, B, P> const& _yz);
143 template<typename A, typename B,
qualifier P>
144 GLM_FUNC_DECL GLM_CONSTEXPR
vec(
vec<1, A, P> const& _x,
vec<2, B, P> const& _yz);
147 GLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT
vec(
vec<4, U, P> const& v);
151 GLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT
vec(
vec<3, U, P> const& v);
154# if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
155 template<
int E0,
int E1,
int E2>
161 template<
int E0,
int E1>
164 *
this =
vec(v(), scalar);
167 template<
int E0,
int E1>
168 GLM_FUNC_DECL GLM_CONSTEXPR vec(T
const& scalar, detail::_swizzle<2, T, Q, E0, E1, -1, -2>
const& v)
170 *
this = vec(scalar, v());
176 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q>& operator=(vec<3, T, Q>
const& v) GLM_DEFAULT;
179 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator=(vec<3, U, Q>
const& v);
181 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator+=(U scalar);
183 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator+=(vec<1, U, Q>
const& v);
185 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator+=(vec<3, U, Q>
const& v);
187 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator-=(U scalar);
189 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator-=(vec<1, U, Q>
const& v);
191 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator-=(vec<3, U, Q>
const& v);
193 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator*=(U scalar);
195 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator*=(vec<1, U, Q>
const& v);
197 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator*=(vec<3, U, Q>
const& v);
199 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator/=(U scalar);
201 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator/=(vec<1, U, Q>
const& v);
203 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator/=(vec<3, U, Q>
const& v);
207 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator++();
208 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator--();
209 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator++(
int);
210 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator--(
int);
215 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator%=(U scalar);
217 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator%=(vec<1, U, Q>
const& v);
219 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator%=(vec<3, U, Q>
const& v);
221 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator&=(U scalar);
223 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator&=(vec<1, U, Q>
const& v);
225 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator&=(vec<3, U, Q>
const& v);
227 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator|=(U scalar);
229 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator|=(vec<1, U, Q>
const& v);
231 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator|=(vec<3, U, Q>
const& v);
233 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator^=(U scalar);
235 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator^=(vec<1, U, Q>
const& v);
237 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator^=(vec<3, U, Q>
const& v);
239 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator<<=(U scalar);
241 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator<<=(vec<1, U, Q>
const& v);
243 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator<<=(vec<3, U, Q>
const& v);
245 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator>>=(U scalar);
247 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator>>=(vec<1, U, Q>
const& v);
249 GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator>>=(vec<3, U, Q>
const& v);