Mercurial > projects > ldc
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 } |