Clutter Engine 0.0.1
Loading...
Searching...
No Matches
type_vec1.inl
1
2
3#include "./compute_vector_relational.hpp"
4
5namespace glm
6{
7 // -- Implicit basic constructors --
8
9# if GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE
10 template<typename T, qualifier Q>
11 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec()
12# if GLM_CONFIG_CTOR_INIT != GLM_CTOR_INIT_DISABLE
13 : x(0)
14# endif
15 {}
16
17 template<typename T, qualifier Q>
18 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<1, T, Q> const& v)
19 : x(v.x)
20 {}
21# endif
22
23 template<typename T, qualifier Q>
24 template<qualifier P>
25 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<1, T, P> const& v)
26 : x(v.x)
27 {}
28
29 // -- Explicit basic constructors --
30
31 template<typename T, qualifier Q>
32 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(T scalar)
33 : x(scalar)
34 {}
35
36 // -- Conversion vector constructors --
37
38 template<typename T, qualifier Q>
39 template<typename U, qualifier P>
40 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<1, U, P> const& v)
41 : x(static_cast<T>(v.x))
42 {}
43
44 template<typename T, qualifier Q>
45 template<typename U, qualifier P>
46 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<2, U, P> const& v)
47 : x(static_cast<T>(v.x))
48 {}
49
50 template<typename T, qualifier Q>
51 template<typename U, qualifier P>
52 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<3, U, P> const& v)
53 : x(static_cast<T>(v.x))
54 {}
55
56 template<typename T, qualifier Q>
57 template<typename U, qualifier P>
58 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<4, U, P> const& v)
59 : x(static_cast<T>(v.x))
60 {}
61
62 // -- Component accesses --
63
64 template<typename T, qualifier Q>
65 GLM_FUNC_QUALIFIER GLM_CONSTEXPR T & vec<1, T, Q>::operator[](typename vec<1, T, Q>::length_type)
66 {
67 return x;
68 }
69
70 template<typename T, qualifier Q>
71 GLM_FUNC_QUALIFIER GLM_CONSTEXPR T const& vec<1, T, Q>::operator[](typename vec<1, T, Q>::length_type) const
72 {
73 return x;
74 }
75
76 // -- Unary arithmetic operators --
77
78# if GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE
79 template<typename T, qualifier Q>
80 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator=(vec<1, T, Q> const& v)
81 {
82 this->x = v.x;
83 return *this;
84 }
85# endif
86
87 template<typename T, qualifier Q>
88 template<typename U>
89 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator=(vec<1, U, Q> const& v)
90 {
91 this->x = static_cast<T>(v.x);
92 return *this;
93 }
94
95 template<typename T, qualifier Q>
96 template<typename U>
97 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator+=(U scalar)
98 {
99 this->x += static_cast<T>(scalar);
100 return *this;
101 }
102
103 template<typename T, qualifier Q>
104 template<typename U>
105 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator+=(vec<1, U, Q> const& v)
106 {
107 this->x += static_cast<T>(v.x);
108 return *this;
109 }
110
111 template<typename T, qualifier Q>
112 template<typename U>
113 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator-=(U scalar)
114 {
115 this->x -= static_cast<T>(scalar);
116 return *this;
117 }
118
119 template<typename T, qualifier Q>
120 template<typename U>
121 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator-=(vec<1, U, Q> const& v)
122 {
123 this->x -= static_cast<T>(v.x);
124 return *this;
125 }
126
127 template<typename T, qualifier Q>
128 template<typename U>
129 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator*=(U scalar)
130 {
131 this->x *= static_cast<T>(scalar);
132 return *this;
133 }
134
135 template<typename T, qualifier Q>
136 template<typename U>
137 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator*=(vec<1, U, Q> const& v)
138 {
139 this->x *= static_cast<T>(v.x);
140 return *this;
141 }
142
143 template<typename T, qualifier Q>
144 template<typename U>
145 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator/=(U scalar)
146 {
147 this->x /= static_cast<T>(scalar);
148 return *this;
149 }
150
151 template<typename T, qualifier Q>
152 template<typename U>
153 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator/=(vec<1, U, Q> const& v)
154 {
155 this->x /= static_cast<T>(v.x);
156 return *this;
157 }
158
159 // -- Increment and decrement operators --
160
161 template<typename T, qualifier Q>
162 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator++()
163 {
164 ++this->x;
165 return *this;
166 }
167
168 template<typename T, qualifier Q>
169 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator--()
170 {
171 --this->x;
172 return *this;
173 }
174
175 template<typename T, qualifier Q>
176 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> vec<1, T, Q>::operator++(int)
177 {
178 vec<1, T, Q> Result(*this);
179 ++*this;
180 return Result;
181 }
182
183 template<typename T, qualifier Q>
184 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> vec<1, T, Q>::operator--(int)
185 {
186 vec<1, T, Q> Result(*this);
187 --*this;
188 return Result;
189 }
190
191 // -- Unary bit operators --
192
193 template<typename T, qualifier Q>
194 template<typename U>
195 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator%=(U scalar)
196 {
197 this->x %= static_cast<T>(scalar);
198 return *this;
199 }
200
201 template<typename T, qualifier Q>
202 template<typename U>
203 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator%=(vec<1, U, Q> const& v)
204 {
205 this->x %= static_cast<T>(v.x);
206 return *this;
207 }
208
209 template<typename T, qualifier Q>
210 template<typename U>
211 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator&=(U scalar)
212 {
213 this->x &= static_cast<T>(scalar);
214 return *this;
215 }
216
217 template<typename T, qualifier Q>
218 template<typename U>
219 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator&=(vec<1, U, Q> const& v)
220 {
221 this->x &= static_cast<T>(v.x);
222 return *this;
223 }
224
225 template<typename T, qualifier Q>
226 template<typename U>
227 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator|=(U scalar)
228 {
229 this->x |= static_cast<T>(scalar);
230 return *this;
231 }
232
233 template<typename T, qualifier Q>
234 template<typename U>
235 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator|=(vec<1, U, Q> const& v)
236 {
237 this->x |= U(v.x);
238 return *this;
239 }
240
241 template<typename T, qualifier Q>
242 template<typename U>
243 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator^=(U scalar)
244 {
245 this->x ^= static_cast<T>(scalar);
246 return *this;
247 }
248
249 template<typename T, qualifier Q>
250 template<typename U>
251 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator^=(vec<1, U, Q> const& v)
252 {
253 this->x ^= static_cast<T>(v.x);
254 return *this;
255 }
256
257 template<typename T, qualifier Q>
258 template<typename U>
259 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator<<=(U scalar)
260 {
261 this->x <<= static_cast<T>(scalar);
262 return *this;
263 }
264
265 template<typename T, qualifier Q>
266 template<typename U>
267 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator<<=(vec<1, U, Q> const& v)
268 {
269 this->x <<= static_cast<T>(v.x);
270 return *this;
271 }
272
273 template<typename T, qualifier Q>
274 template<typename U>
275 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator>>=(U scalar)
276 {
277 this->x >>= static_cast<T>(scalar);
278 return *this;
279 }
280
281 template<typename T, qualifier Q>
282 template<typename U>
283 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator>>=(vec<1, U, Q> const& v)
284 {
285 this->x >>= static_cast<T>(v.x);
286 return *this;
287 }
288
289 // -- Unary constant operators --
290
291 template<typename T, qualifier Q>
292 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v)
293 {
294 return v;
295 }
296
297 template<typename T, qualifier Q>
298 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v)
299 {
300 return vec<1, T, Q>(
301 -v.x);
302 }
303
304 // -- Binary arithmetic operators --
305
306 template<typename T, qualifier Q>
307 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v, T scalar)
308 {
309 return vec<1, T, Q>(
310 v.x + scalar);
311 }
312
313 template<typename T, qualifier Q>
314 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator+(T scalar, vec<1, T, Q> const& v)
315 {
316 return vec<1, T, Q>(
317 scalar + v.x);
318 }
319
320 template<typename T, qualifier Q>
321 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
322 {
323 return vec<1, T, Q>(
324 v1.x + v2.x);
325 }
326
327 //operator-
328 template<typename T, qualifier Q>
329 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v, T scalar)
330 {
331 return vec<1, T, Q>(
332 v.x - scalar);
333 }
334
335 template<typename T, qualifier Q>
336 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator-(T scalar, vec<1, T, Q> const& v)
337 {
338 return vec<1, T, Q>(
339 scalar - v.x);
340 }
341
342 template<typename T, qualifier Q>
343 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
344 {
345 return vec<1, T, Q>(
346 v1.x - v2.x);
347 }
348
349 template<typename T, qualifier Q>
350 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v, T scalar)
351 {
352 return vec<1, T, Q>(
353 v.x * scalar);
354 }
355
356 template<typename T, qualifier Q>
357 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator*(T scalar, vec<1, T, Q> const& v)
358 {
359 return vec<1, T, Q>(
360 scalar * v.x);
361 }
362
363 template<typename T, qualifier Q>
364 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
365 {
366 return vec<1, T, Q>(
367 v1.x * v2.x);
368 }
369
370 template<typename T, qualifier Q>
371 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator/(vec<1, T, Q> const& v, T scalar)
372 {
373 return vec<1, T, Q>(
374 v.x / scalar);
375 }
376
377 template<typename T, qualifier Q>
378 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator/(T scalar, vec<1, T, Q> const& v)
379 {
380 return vec<1, T, Q>(
381 scalar / v.x);
382 }
383
384 template<typename T, qualifier Q>
385 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator/(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
386 {
387 return vec<1, T, Q>(
388 v1.x / v2.x);
389 }
390
391 // -- Binary bit operators --
392
393 template<typename T, qualifier Q>
394 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator%(vec<1, T, Q> const& v, T scalar)
395 {
396 return vec<1, T, Q>(
397 v.x % scalar);
398 }
399
400 template<typename T, qualifier Q>
401 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator%(T scalar, vec<1, T, Q> const& v)
402 {
403 return vec<1, T, Q>(
404 scalar % v.x);
405 }
406
407 template<typename T, qualifier Q>
408 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator%(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
409 {
410 return vec<1, T, Q>(
411 v1.x % v2.x);
412 }
413
414 template<typename T, qualifier Q>
415 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator&(vec<1, T, Q> const& v, T scalar)
416 {
417 return vec<1, T, Q>(
418 v.x & scalar);
419 }
420
421 template<typename T, qualifier Q>
422 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator&(T scalar, vec<1, T, Q> const& v)
423 {
424 return vec<1, T, Q>(
425 scalar & v.x);
426 }
427
428 template<typename T, qualifier Q>
429 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator&(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
430 {
431 return vec<1, T, Q>(
432 v1.x & v2.x);
433 }
434
435 template<typename T, qualifier Q>
436 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator|(vec<1, T, Q> const& v, T scalar)
437 {
438 return vec<1, T, Q>(
439 v.x | scalar);
440 }
441
442 template<typename T, qualifier Q>
443 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator|(T scalar, vec<1, T, Q> const& v)
444 {
445 return vec<1, T, Q>(
446 scalar | v.x);
447 }
448
449 template<typename T, qualifier Q>
450 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator|(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
451 {
452 return vec<1, T, Q>(
453 v1.x | v2.x);
454 }
455
456 template<typename T, qualifier Q>
457 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator^(vec<1, T, Q> const& v, T scalar)
458 {
459 return vec<1, T, Q>(
460 v.x ^ scalar);
461 }
462
463 template<typename T, qualifier Q>
464 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator^(T scalar, vec<1, T, Q> const& v)
465 {
466 return vec<1, T, Q>(
467 scalar ^ v.x);
468 }
469
470 template<typename T, qualifier Q>
471 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator^(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
472 {
473 return vec<1, T, Q>(
474 v1.x ^ v2.x);
475 }
476
477 template<typename T, qualifier Q>
478 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator<<(vec<1, T, Q> const& v, T scalar)
479 {
480 return vec<1, T, Q>(
481 static_cast<T>(v.x << scalar));
482 }
483
484 template<typename T, qualifier Q>
485 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator<<(T scalar, vec<1, T, Q> const& v)
486 {
487 return vec<1, T, Q>(
488 scalar << v.x);
489 }
490
491 template<typename T, qualifier Q>
492 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator<<(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
493 {
494 return vec<1, T, Q>(
495 v1.x << v2.x);
496 }
497
498 template<typename T, qualifier Q>
499 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator>>(vec<1, T, Q> const& v, T scalar)
500 {
501 return vec<1, T, Q>(
502 v.x >> scalar);
503 }
504
505 template<typename T, qualifier Q>
506 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator>>(T scalar, vec<1, T, Q> const& v)
507 {
508 return vec<1, T, Q>(
509 scalar >> v.x);
510 }
511
512 template<typename T, qualifier Q>
513 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator>>(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
514 {
515 return vec<1, T, Q>(
516 v1.x >> v2.x);
517 }
518
519 template<typename T, qualifier Q>
520 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator~(vec<1, T, Q> const& v)
521 {
522 return vec<1, T, Q>(
523 ~v.x);
524 }
525
526 // -- Boolean operators --
527
528 template<typename T, qualifier Q>
529 GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator==(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
530 {
531 return detail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1.x, v2.x);
532 }
533
534 template<typename T, qualifier Q>
535 GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator!=(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
536 {
537 return !(v1 == v2);
538 }
539
540 template<qualifier Q>
541 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, bool, Q> operator&&(vec<1, bool, Q> const& v1, vec<1, bool, Q> const& v2)
542 {
543 return vec<1, bool, Q>(v1.x && v2.x);
544 }
545
546 template<qualifier Q>
547 GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, bool, Q> operator||(vec<1, bool, Q> const& v1, vec<1, bool, Q> const& v2)
548 {
549 return vec<1, bool, Q>(v1.x || v2.x);
550 }
551}//namespace glm
Core features
Definition common.hpp:21