]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - tests/pp_va_args.qc
ast_expression now derives from ast_node
[xonotic/gmqcc.git] / tests / pp_va_args.qc
index f73372cd8af784d0f20c1381ed3950457bc6d6ec..a42e1927938e2c1e499d81f64444ff9da92aea01 100644 (file)
@@ -1,9 +1,22 @@
-void print(...) = #1;
+// method 0
+#define METHOD__(...) __VA_ARGS__
+#define METHOD_0(F,A) F METHOD__(A)
 
-#define NOPARENS(...) __VA_ARGS__
-#define callem(func, args) func(NOPARENS args)
+// method 1
+#define METHOD_1(F,A) F(METHOD__ A)
+
+// method 2
+#define METHOD_2(F,...) F __VA_ARGS__##[0]
+
+// method 3
+#define METHOD_3(F,...) F __VA_ARGS__
+
+// selector
+#define METHOD(I, F, ...) METHOD_##I (F, __VA_ARGS__)
 
 void main() {
-    print(NOPARENS("hello ", "world\n"));
-    callem(print, ("Yay", ", there\n"));
+    METHOD(0, print, ("Method", " <zero>\n"));
+    METHOD(1, print, ("Method", " <one>\n"));
+    METHOD(2, print, ("Method", " <two>\n"));
+    METHOD(3, print, ("Method", " <three>\n"));
 }