Mercurial > projects > ldc
diff lphobos/std/c/stdarg.d @ 1:c53b6e3fe49a trunk
[svn r5] Initial commit. Most things are very rough.
author | lindquist |
---|---|
date | Sat, 01 Sep 2007 21:43:27 +0200 |
parents | |
children | 0ccfae271c45 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lphobos/std/c/stdarg.d Sat Sep 01 21:43:27 2007 +0200 @@ -0,0 +1,42 @@ + +/** + * C's <stdarg.h> + * Authors: Hauke Duden and Walter Bright, Digital Mars, www.digitalmars.com + * License: Public Domain + * Macros: + * WIKI=Phobos/StdCStdarg + */ + +/* This is for use with extern(C) variable argument lists. */ + +module std.c.stdarg; + +alias void* va_list; + +template va_start(T) +{ + void va_start(out va_list ap, inout T parmn) + { + ap = cast(va_list)(cast(void*)&parmn + ((T.sizeof + int.sizeof - 1) & ~(int.sizeof - 1))); + } +} + +template va_arg(T) +{ + T va_arg(inout va_list ap) + { + T arg = *cast(T*)ap; + ap = cast(va_list)(cast(void*)ap + ((T.sizeof + int.sizeof - 1) & ~(int.sizeof - 1))); + return arg; + } +} + +void va_end(va_list ap) +{ + +} + +void va_copy(out va_list dest, va_list src) +{ + dest = src; +}