]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - tests/_my_test.qc
qc weirdness examples
[xonotic/gmqcc.git] / tests / _my_test.qc
diff --git a/tests/_my_test.qc b/tests/_my_test.qc
new file mode 100644 (file)
index 0000000..d8a9994
--- /dev/null
@@ -0,0 +1,128 @@
+void   (string str, ...)          print     = #1;
+string (float val)                ftos      = #2;
+entity ()                         spawn     = #3;
+void   (entity ent)               kill      = #4;
+string (vector vec)               vtos      = #5;
+void   (string str)               error     = #6;
+float  (vector vec)               vlen      = #7;
+string (entity ent)               etos      = #8;
+float  (string str)               stof      = #9;
+string (...)                      strcat    = #10;
+float  (string str1, string str2) strcmp    = #11;
+vector (vector vec)               normalize = #12;
+float  (float val)                sqrt      = #13;
+float  (float val)                floor     = #14;
+float  (float val1, float val2)   pow       = #15;
+vector (string str)               stov      = #16;
+
+void p() {
+    print("\n");
+}
+
+void pn(float n) {
+    print(ftos(n), "\n");
+}
+
+// ======================================
+
+float global_f;
+.float field_f;
+
+float global_af[5];
+//float[5] global_af_2; NOPE
+
+float(float) fn_f2f;
+float fn_f2f_2(float);
+float fn_f2f(float) { return 0; }
+float fn_f2f_2(float a) { return a; }
+
+.float() field_v2f_1;
+.float(void) field_v2f_2;
+.float(float) field_f2f;
+.float fn_f2pf(float);
+.float fn_f2pf(float) { return field_f; }
+
+float fn_f_f2f_2_f(float a, float(float wat) f2f) {
+    return f2f(a);
+}
+
+float fn_f_f2f_2_f_2(float a, float f2f(float wat)) {
+    return f2f(a);
+}
+
+typedef .float(float) Fn_f2pf;
+var Fn_f2pf var_fn_f2pf;
+//var .float(float) var_fn_f2pf_2;
+//.Fn_v2pf idk;
+//..float() idk2;
+//Fn_v2pf fn_v2pf() = { return field_f; }
+//.Fn_v2pf field_v2pf;
+
+typedef float(float) Fn_f2f;
+typedef float ty_f;
+typedef float ty_f5[5];
+
+var float(float) var_fn_f2f;
+
+float idk() { return 5; };
+float idk2()() { return idk; }
+float wtf(float, void) { return 6; }
+float wtf2()(float, void) { return wtf; }
+
+.float sanity;
+//.float(float) madness { return sanity; }
+void aaaaaa() {}
+.float(.float(float a) a()()()) cthulhu(.float a)(float, void, ...)(.float a(float))()()()() { return aaaaaa; }
+
+float unused;
+
+void main() {
+    //cthulhu(madness);
+
+    unused = 1;
+
+    global_f = 666;
+    global_af[4] = 10;
+    entity e = spawn();
+    e.field_f = 667;
+    //var_fn_f2pf_2 = fn_f2pf;
+    //var_fn_f2pf = fn_f2pf;
+    //e.field_v2pf = fn_v2pf;
+    //e.idk();
+    //idk = 6;
+    //idk2 = 7;
+
+    pn(global_f);
+    pn(e.field_f);
+    p();
+
+    pn(fn_f2f(1));
+    pn(fn_f2f_2(1));
+    p();
+
+    e.field_f2f = fn_f2f;
+    pn(e.field_f2f(2));
+    e.field_f2f = fn_f2f_2;
+    pn(e.field_f2f(2));
+    p();
+
+    pn(e.(fn_f2pf(3)));
+    p();
+
+    .float loc_field_f = fn_f2pf(3);
+    pn(e.loc_field_f);
+    pn(e.(loc_field_f));
+    p();
+
+    var_fn_f2f = fn_f2f_2;
+    pn(var_fn_f2f(4));
+    p();
+
+    pn(fn_f_f2f_2_f(5, fn_f2f_2));
+    pn(fn_f_f2f_2_f_2(5, fn_f2f_2));
+    p();
+
+    float x, y = 1;
+    //pn(x);
+    pn(y);
+}