comparison 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
comparison
equal deleted inserted replaced
0:a9e71648e74d 1:c53b6e3fe49a
1
2 /**
3 * C's <stdarg.h>
4 * Authors: Hauke Duden and Walter Bright, Digital Mars, www.digitalmars.com
5 * License: Public Domain
6 * Macros:
7 * WIKI=Phobos/StdCStdarg
8 */
9
10 /* This is for use with extern(C) variable argument lists. */
11
12 module std.c.stdarg;
13
14 alias void* va_list;
15
16 template va_start(T)
17 {
18 void va_start(out va_list ap, inout T parmn)
19 {
20 ap = cast(va_list)(cast(void*)&parmn + ((T.sizeof + int.sizeof - 1) & ~(int.sizeof - 1)));
21 }
22 }
23
24 template va_arg(T)
25 {
26 T va_arg(inout va_list ap)
27 {
28 T arg = *cast(T*)ap;
29 ap = cast(va_list)(cast(void*)ap + ((T.sizeof + int.sizeof - 1) & ~(int.sizeof - 1)));
30 return arg;
31 }
32 }
33
34 void va_end(va_list ap)
35 {
36
37 }
38
39 void va_copy(out va_list dest, va_list src)
40 {
41 dest = src;
42 }