59 GLM_FUNC_QUALIFIER
void operator() (T&
e, T& t)
const{
e = t; }
64 GLM_FUNC_QUALIFIER
void operator() (T&
e, T& t)
const{
e -= t; }
69 GLM_FUNC_QUALIFIER
void operator() (T&
e, T& t)
const{
e += t; }
74 GLM_FUNC_QUALIFIER
void operator() (T&
e, T& t)
const{
e *= t; }
79 GLM_FUNC_QUALIFIER
void operator() (T&
e, T& t)
const{
e /= t; }
85 for (
int i = 0; i < N; ++i)
92 _apply_op(that, op_equal());
96 GLM_FUNC_QUALIFIER
void operator -= (
vec<N, T, Q> const& that)
98 _apply_op(that, op_minus());
101 GLM_FUNC_QUALIFIER
void operator += (vec<N, T, Q>
const& that)
103 _apply_op(that, op_plus());
106 GLM_FUNC_QUALIFIER
void operator *= (vec<N, T, Q>
const& that)
108 _apply_op(that, op_mul());
111 GLM_FUNC_QUALIFIER
void operator /= (vec<N, T, Q>
const& that)
113 _apply_op(that, op_div());
116 GLM_FUNC_QUALIFIER T& operator[](
size_t i)
118 const int offset_dst[4] = { E0, E1, E2, E3 };
119 return this->elem(offset_dst[i]);
121 GLM_FUNC_QUALIFIER T operator[](
size_t i)
const
123 const int offset_dst[4] = { E0, E1, E2, E3 };
124 return this->elem(offset_dst[i]);
129 GLM_FUNC_QUALIFIER
void _apply_op(vec<N, T, Q>
const& that,
const U& op)
135 for (
int i = 0; i < N; ++i)
137 for (
int i = 0; i < N; ++i)
138 op( (*
this)[i], t[i] );
144 struct _swizzle_base2<N, T, Q, E0,E1,E2,E3, 1> :
public _swizzle_base1<N, T, Q, E0,E1,E2,E3, detail::is_aligned<Q>::value>
148 GLM_FUNC_QUALIFIER
_swizzle_base2& operator= (Stub
const&) {
return *
this; }
150 GLM_FUNC_QUALIFIER T operator[] (
size_t i)
const
152 const int offset_dst[4] = { E0, E1, E2, E3 };
153 return this->elem(offset_dst[i]);
158 struct _swizzle :
public _swizzle_base2<N, T, Q, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)>
160 typedef _swizzle_base2<N, T, Q, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)>
base_type;
162 using base_type::operator=;
164 GLM_FUNC_QUALIFIER
operator vec<N, T, Q> ()
const {
return (*
this)(); }