Mercurial > projects > ldc
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"); + } + } +}