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