59 struct __declspec(dllexport) ivec2 {
67 v[1 - 1] = a; v[2 - 1] = a;
70 inline ivec2(
int v_1 ,
int v_2 )
72 v[1 - 1] = v_1; v[2 - 1] = v_2;
75 inline ivec2(
const ivec2& a)
77 v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1];
80 inline ivec2& operator=(
const ivec2& a)
82 v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1];
87 inline int& operator[] (
int i) {
return v[i]; }
88 inline const int& operator[] (
int i)
const {
return v[i]; }
89 inline int& operator() (
int i) {
return v[i % 2]; }
90 inline const int& operator() (
int i)
const {
return v[i % 2]; }
99 inline ivec2
operator + (
const ivec2& a,
const ivec2& b)
102 for(
int i = 0; i < 2;++i) { c[i] = a[i] + b[i]; }
106 inline ivec2
operator + (
int a,
const ivec2& b)
109 for(
int i = 0; i < 2;++i) { c[i] = a + b[i]; }
113 inline ivec2
operator + (
const ivec2& a,
int b)
116 for(
int i = 0; i < 2;++i) { c[i] = a[i] + b; }
122 inline ivec2
operator - (
const ivec2& a,
const ivec2& b)
125 for(
int i = 0; i < 2;++i) { c[i] = a[i] - b[i]; }
129 inline ivec2
operator - (
int a,
const ivec2& b)
132 for(
int i = 0; i < 2;++i) { c[i] = a - b[i]; }
136 inline ivec2
operator - (
const ivec2& a,
int b)
139 for(
int i = 0; i < 2;++i) { c[i] = a[i] - b; }
145 inline ivec2
operator * (
const ivec2& a,
const ivec2& b)
148 for(
int i = 0; i < 2;++i) { c[i] = a[i] * b[i]; }
152 inline ivec2
operator * (
int a,
const ivec2& b)
155 for(
int i = 0; i < 2;++i) { c[i] = a * b[i]; }
159 inline ivec2
operator * (
const ivec2& a,
int b)
162 for(
int i = 0; i < 2;++i) { c[i] = a[i] * b; }
194 inline ivec2
operator += (ivec2& a,
const ivec2& b)
206 inline ivec2
operator -= (ivec2& a,
const ivec2& b)
218 inline ivec2
operator *= (ivec2& a,
const ivec2& b)
245 inline int operator == (
const ivec2& a,
const ivec2& b)
248 for(
int i = 0; i < 2;++i) { c = c && a[i] == b[i]; }
255 for(
int i = 0; i < 2;++i) { c = c && a == b[i]; }
262 for(
int i = 0; i < 2;++i) { c = c && a[i] == b; }
268 inline int operator < (
const ivec2& a,
const ivec2& b)
271 for(
int i = 0; i < 2;++i) { c = c && a[i] < b[i]; }
278 for(
int i = 0; i < 2;++i) { c = c && a < b[i]; }
285 for(
int i = 0; i < 2;++i) { c = c && a[i] < b; }
291 inline int operator <= (
const ivec2& a,
const ivec2& b)
294 for(
int i = 0; i < 2;++i) { c = c && a[i] <= b[i]; }
301 for(
int i = 0; i < 2;++i) { c = c && a <= b[i]; }
308 for(
int i = 0; i < 2;++i) { c = c && a[i] <= b; }
314 inline int operator > (
const ivec2& a,
const ivec2& b)
317 for(
int i = 0; i < 2;++i) { c = c && a[i] > b[i]; }
324 for(
int i = 0; i < 2;++i) { c = c && a > b[i]; }
331 for(
int i = 0; i < 2;++i) { c = c && a[i] > b; }
338 inline int operator >= (
const ivec2& a,
const ivec2& b)
341 for(
int i = 0; i < 2;++i) { c = c && a[i] >= b[i]; }
347 for(
int i = 0; i < 2;++i) { c = c && a >= b[i]; }
354 for(
int i = 0; i < 2;++i) { c = c && a[i] >= b; }
358 inline int operator != (
const ivec2& a,
const ivec2& b)
361 for(
int i = 0; i < 2;++i) { c = c && a[i] != b[i]; }
369 for(
int i = 0; i < 2;++i) { c[i] = -a[i]; }
376 struct __declspec(dllexport) ivec3 {
384 v[1 - 1] = a; v[2 - 1] = a; v[3 - 1] = a;
387 inline ivec3(
int v_1 ,
int v_2 ,
int v_3 )
389 v[1 - 1] = v_1; v[2 - 1] = v_2; v[3 - 1] = v_3;
392 inline ivec3(
const ivec3& a)
394 v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1]; v[3 - 1] = a[3 - 1];
397 inline ivec3& operator=(
const ivec3& a)
399 v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1]; v[3 - 1] = a[3 - 1];
404 inline int& operator[] (
int i) {
return v[i]; }
405 inline const int& operator[] (
int i)
const {
return v[i]; }
406 inline int& operator() (
int i) {
return v[i % 3]; }
407 inline const int& operator() (
int i)
const {
return v[i % 3]; }
411 inline ivec3
operator + (
const ivec3& a,
const ivec3& b)
414 for(
int i = 0; i < 3;++i) { c[i] = a[i] + b[i]; }
418 inline ivec3
operator + (
int a,
const ivec3& b)
421 for(
int i = 0; i < 3;++i) { c[i] = a + b[i]; }
425 inline ivec3
operator + (
const ivec3& a,
int b)
428 for(
int i = 0; i < 3;++i) { c[i] = a[i] + b; }
434 inline ivec3
operator - (
const ivec3& a,
const ivec3& b)
437 for(
int i = 0; i < 3;++i) { c[i] = a[i] - b[i]; }
441 inline ivec3
operator - (
int a,
const ivec3& b)
444 for(
int i = 0; i < 3;++i) { c[i] = a - b[i]; }
448 inline ivec3
operator - (
const ivec3& a,
int b)
451 for(
int i = 0; i < 3;++i) { c[i] = a[i] - b; }
457 inline ivec3
operator * (
const ivec3& a,
const ivec3& b)
460 for(
int i = 0; i < 3;++i) { c[i] = a[i] * b[i]; }
464 inline ivec3
operator * (
int a,
const ivec3& b)
467 for(
int i = 0; i < 3;++i) { c[i] = a * b[i]; }
471 inline ivec3
operator * (
const ivec3& a,
int b)
474 for(
int i = 0; i < 3;++i) { c[i] = a[i] * b; }
506 inline ivec3
operator += (ivec3& a,
const ivec3& b)
518 inline ivec3
operator -= (ivec3& a,
const ivec3& b)
530 inline ivec3
operator *= (ivec3& a,
const ivec3& b)
557 inline int operator == (
const ivec3& a,
const ivec3& b)
560 for(
int i = 0; i < 3;++i) { c = c && a[i] == b[i]; }
567 for(
int i = 0; i < 3;++i) { c = c && a == b[i]; }
574 for(
int i = 0; i < 3;++i) { c = c && a[i] == b; }
580 inline int operator < (
const ivec3& a,
const ivec3& b)
583 for(
int i = 0; i < 3;++i) { c = c && a[i] < b[i]; }
590 for(
int i = 0; i < 3;++i) { c = c && a < b[i]; }
597 for(
int i = 0; i < 3;++i) { c = c && a[i] < b; }
603 inline int operator <= (
const ivec3& a,
const ivec3& b)
606 for(
int i = 0; i < 3;++i) { c = c && a[i] <= b[i]; }
613 for(
int i = 0; i < 3;++i) { c = c && a <= b[i]; }
620 for(
int i = 0; i < 3;++i) { c = c && a[i] <= b; }
626 inline int operator > (
const ivec3& a,
const ivec3& b)
629 for(
int i = 0; i < 3;++i) { c = c && a[i] > b[i]; }
636 for(
int i = 0; i < 3;++i) { c = c && a > b[i]; }
643 for(
int i = 0; i < 3;++i) { c = c && a[i] > b; }
649 inline int operator >= (
const ivec3& a,
const ivec3& b)
652 for(
int i = 0; i < 3;++i) { c = c && a[i] >= b[i]; }
659 for(
int i = 0; i < 3;++i) { c = c && a >= b[i]; }
666 for(
int i = 0; i < 3;++i) { c = c && a[i] >= b; }
670 inline int operator != (
const ivec3& a,
const ivec3& b)
673 for(
int i = 0; i < 3;++i) { c = c && a[i] != b[i]; }
681 for(
int i = 0; i < 3;++i) { c[i] = -a[i]; }
688 struct __declspec(dllexport) ivec4 {
696 v[1 - 1] = a; v[2 - 1] = a; v[3 - 1] = a; v[4 - 1] = a;
699 inline ivec4(
int v_1 ,
int v_2 ,
int v_3 ,
int v_4 )
701 v[1 - 1] = v_1; v[2 - 1] = v_2; v[3 - 1] = v_3; v[4 - 1] = v_4;
704 inline ivec4(
const ivec4& a)
706 v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1]; v[3 - 1] = a[3 - 1]; v[4 - 1] = a[4 - 1];
709 inline ivec4& operator=(
const ivec4& a)
711 v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1]; v[3 - 1] = a[3 - 1]; v[4 - 1] = a[4 - 1];
716 inline int& operator[] (
int i) {
return v[i]; }
717 inline const int& operator[] (
int i)
const {
return v[i]; }
718 inline int& operator() (
int i) {
return v[i % 4]; }
719 inline const int& operator() (
int i)
const {
return v[i % 4]; }
728 inline ivec4
operator + (
const ivec4& a,
const ivec4& b)
731 for(
int i = 0; i < 4;++i) { c[i] = a[i] + b[i]; }
735 inline ivec4
operator + (
int a,
const ivec4& b)
738 for(
int i = 0; i < 4;++i) { c[i] = a + b[i]; }
742 inline ivec4
operator + (
const ivec4& a,
int b)
745 for(
int i = 0; i < 4;++i) { c[i] = a[i] + b; }
751 inline ivec4
operator - (
const ivec4& a,
const ivec4& b)
754 for(
int i = 0; i < 4;++i) { c[i] = a[i] - b[i]; }
758 inline ivec4
operator - (
int a,
const ivec4& b)
761 for(
int i = 0; i < 4;++i) { c[i] = a - b[i]; }
765 inline ivec4
operator - (
const ivec4& a,
int b)
768 for(
int i = 0; i < 4;++i) { c[i] = a[i] - b; }
774 inline ivec4
operator * (
const ivec4& a,
const ivec4& b)
777 for(
int i = 0; i < 4;++i) { c[i] = a[i] * b[i]; }
781 inline ivec4
operator * (
int a,
const ivec4& b)
784 for(
int i = 0; i < 4;++i) { c[i] = a * b[i]; }
788 inline ivec4
operator * (
const ivec4& a,
int b)
791 for(
int i = 0; i < 4;++i) { c[i] = a[i] * b; }
823 inline ivec4
operator += (ivec4& a,
const ivec4& b)
835 inline ivec4
operator -= (ivec4& a,
const ivec4& b)
847 inline ivec4
operator *= (ivec4& a,
const ivec4& b)
874 inline int operator == (
const ivec4& a,
const ivec4& b)
877 for(
int i = 0; i < 4;++i) { c = c && a[i] == b[i]; }
884 for(
int i = 0; i < 4;++i) { c = c && a == b[i]; }
891 for(
int i = 0; i < 4;++i) { c = c && a[i] == b; }
897 inline int operator < (
const ivec4& a,
const ivec4& b)
900 for(
int i = 0; i < 4;++i) { c = c && a[i] < b[i]; }
907 for(
int i = 0; i < 4;++i) { c = c && a < b[i]; }
914 for(
int i = 0; i < 4;++i) { c = c && a[i] < b; }
920 inline int operator <= (
const ivec4& a,
const ivec4& b)
923 for(
int i = 0; i < 4;++i) { c = c && a[i] <= b[i]; }
930 for(
int i = 0; i < 4;++i) { c = c && a <= b[i]; }
937 for(
int i = 0; i < 4;++i) { c = c && a[i] <= b; }
943 inline int operator > (
const ivec4& a,
const ivec4& b)
946 for(
int i = 0; i < 4;++i) { c = c && a[i] > b[i]; }
953 for(
int i = 0; i < 4;++i) { c = c && a > b[i]; }
960 for(
int i = 0; i < 4;++i) { c = c && a[i] > b; }
966 inline int operator >= (
const ivec4& a,
const ivec4& b)
969 for(
int i = 0; i < 4;++i) { c = c && a[i] >= b[i]; }
973 inline int operator != (
const ivec4& a,
const ivec4& b)
976 for(
int i = 0; i < 4;++i) { c = c && a[i] != b[i]; }
983 for(
int i = 0; i < 4;++i) { c = c && a >= b[i]; }
990 for(
int i = 0; i < 4;++i) { c = c && a[i] >= b; }
1000 for(
int i = 0; i < 4;++i) { c[i] = -a[i]; }
ivec2 operator+=(ivec2 &a, const ivec2 &b)
ivec2 operator-(const ivec2 &a, const ivec2 &b)
int operator>=(const ivec2 &a, const ivec2 &b)
ivec2 operator+(const ivec2 &a, const ivec2 &b)
ivec2 operator*(const ivec2 &a, const ivec2 &b)
int operator<=(const ivec2 &a, const ivec2 &b)
ivec2 operator-=(ivec2 &a, const ivec2 &b)
int operator>(const ivec2 &a, const ivec2 &b)
int operator!=(const ivec2 &a, const ivec2 &b)
int operator==(const ivec2 &a, const ivec2 &b)
int operator<(const ivec2 &a, const ivec2 &b)
ivec2 operator*=(ivec2 &a, const ivec2 &b)