]> git.llucax.com Git - software/druntime.git/blob - import/stdc/stdarg.d
afdbceb15573d57bf09d02ae9a1a6420edb6dbff
[software/druntime.git] / import / stdc / stdarg.d
1 /**
2  * D header file for C99.
3  *
4  * Copyright: Public Domain
5  * License:   Public Domain
6  * Authors:   Hauke Duden, Walter Bright
7  * Standards: ISO/IEC 9899:1999 (E)
8  */
9 module stdc.stdarg;
10
11
12 version( GNU )
13 {
14     public import std.c.stdarg;
15 }
16 else
17 {
18     alias void* va_list;
19
20     template va_start( T )
21     {
22         void va_start( out va_list ap, inout T parmn )
23         {
24             ap = cast(va_list) ( cast(void*) &parmn + ( ( T.sizeof + int.sizeof - 1 ) & ~( int.sizeof - 1 ) ) );
25         }
26     }
27
28     template va_arg( T )
29     {
30         T va_arg( inout va_list ap )
31         {
32             T arg = *cast(T*) ap;
33             ap = cast(va_list) ( cast(void*) ap + ( ( T.sizeof + int.sizeof - 1 ) & ~( int.sizeof - 1 ) ) );
34             return arg;
35         }
36     }
37
38     void va_end( va_list ap )
39     {
40
41     }
42
43     void va_copy( out va_list dest, va_list src )
44     {
45         dest = src;
46     }
47 }