]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - tests/xor.qc
Fixes
[xonotic/gmqcc.git] / tests / xor.qc
index 2006944ef1f0b37a1c87a5cf45e98a4092ee1a42..41d02e95ee366a80a48fdb96975ed55d9a9d9267 100644 (file)
@@ -1,3 +1,16 @@
+vector swap(float x, float y) {
+    vector ret = '0 0 0';
+    // everyone knows this trick
+    ret.x = x;
+    ret.y = y;
+    
+    ret.x = ret.x ^ ret.y;
+    ret.y = ret.y ^ ret.x;
+    ret.x = ret.x ^ ret.y;
+    
+    return ret;
+}
+
 void main() {
     float x = 5;
     float y = 3;
@@ -21,4 +34,19 @@ void main() {
     // elements are their own inverse?
     if (x ^ 0 == x)
         print("inverse\n");
+        
+    // vector ^ vector
+    // vector ^ float
+    // are legal in constant expressions (currently)
+    const vector v3 = '5 2 5' ^ '3 10 3';
+    const vector v4 = '5 2 5' ^ 10;
+    
+    print("vv: ", vtos(v3), "\n");
+    print("vf: ", vtos(v4), "\n");
+    
+    // good olde xor swap test too
+    float swap_x = 100;
+    float swap_y = 200;
+    vector swaps = swap(swap_x, swap_y);
+    print("100:200 swapped is: ", ftos(swaps.x), ":", ftos(swaps.y), "\n");
 }