diff tangotests/vararg2.d @ 163:a8cd9bc1021a trunk

[svn r179] lots and lots of fixes, much more of tango now compiles/works.
author lindquist
date Mon, 05 May 2008 07:36:29 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tangotests/vararg2.d	Mon May 05 07:36:29 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");
+        }
+    }
+}