diff tests/minicomplex/vararg2.d @ 341:1bb99290e03a trunk

[svn r362] Started merging the old 'test' dir as well as the newer 'tangotests' dir into 'tests/mini' and 'tests/minicomplex'.
author lindquist
date Sun, 13 Jul 2008 02:51:19 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/minicomplex/vararg2.d	Sun Jul 13 02:51:19 2008 +0200
@@ -0,0 +1,42 @@
+module tangotests.vararg2;
+
+extern(C) int printf(char*, ...);
+
+import tango.core.Vararg;
+
+void main()
+{
+    func(0xf00, 1, " ", 2, " ", 3, "\n", 0.3, "\n");
+}
+
+void func(int foo, ...)
+{
+    foreach(t; _arguments)
+    {
+        if (t == typeid(char[]))
+        {
+            char[] str = va_arg!(char[])(_argptr);
+            printf("%.*s", str.length, str.ptr);
+        }
+        else if (t == typeid(int))
+        {
+            printf("%d", va_arg!(int)(_argptr));
+        }
+        else if (t == typeid(float))
+        {
+            printf("%f", va_arg!(float)(_argptr));
+        }
+        else if (t == typeid(double))
+        {
+            printf("%f", va_arg!(double)(_argptr));
+        }
+        else if (t == typeid(real))
+        {
+            printf("%f", va_arg!(real)(_argptr));
+        }
+        else
+        {
+            assert(0, "not int");
+        }
+    }
+}