]> git.xonotic.org Git - xonotic/gmqcc.git/blob - tests/operators.qc
e1464e381c6b2740529c814f89ceb292791e9433
[xonotic/gmqcc.git] / tests / operators.qc
1 void   print(...)    = #1;
2 string ftos (float)  = #2;
3 string vtos (vector) = #5;
4 entity spawn()       = #3;
5
6 .float mem;
7
8 void main() {
9         float a;
10
11         // regular binary+store
12         a = 5;
13         print(ftos(a += 1), " = ");
14         print(ftos(a), "\n");
15
16         entity e = spawn();
17     e.mem = 10;
18         print(ftos(e.mem += 1), " = ");
19         print(ftos(e.mem), "\n");
20
21     // prefix
22         print(ftos(++a), " = ");
23         print(ftos(a), "\n");
24         print(ftos(--a), " = ");
25         print(ftos(a), "\n");
26         print(ftos(++e.mem), " = ");
27         print(ftos(e.mem), "\n");
28
29         // suffix
30         print(ftos(a++), " = ");
31         print(ftos(a-1), "\n");
32         // the CLANG way:
33         a = 3;
34         print(ftos((a++ + a) + a), " = 11\n");
35
36         // check if minus translates
37         print(ftos(a--), "\n");
38         print(ftos(--a), "\n");
39
40         // postfix on members
41         print(ftos(e.mem--), " = ");
42         print(ftos(e.mem+1), "\n");
43
44         // compounds in general
45         a = 3;
46         print(ftos(a *= 2), " = 6\n");
47         print(ftos(a /= 2), " = 3\n");
48
49     // compounds on vectors
50         vector v;
51         v = '3 4 5';
52         print(vtos(v *= 2), " = '6 8 10'\n");
53         print(vtos(v /= 2), " = '3 4 5'\n");
54
55         // bit compounds
56         a = 1;
57         print(ftos(a |= 2), " = 3\n");
58         print(ftos(a &= 6), " = 2\n");
59 }