view lphobos/std/stdarg.d @ 107:3efbcc81ba45 trunk

[svn r111] Fixed most problems with complex number support and added typeinfo for them. Added typeinfo ti_C. Did some changes to the way expressions that have both lvalue and rvalue LLVM values are handled.
author lindquist
date Tue, 20 Nov 2007 00:02:35 +0100
parents fb265a6efea1
children 5825d48b27d1
line wrap: on
line source


/*
 * Placed in public domain.
 * Written by Hauke Duden and Walter Bright
 */

/* This is for use with variable argument lists with extern(D) linkage. */

module std.stdarg;

alias void* va_list;

T va_arg(T)(inout va_list vp)
{
    static assert((T.sizeof & (T.sizeof -1)) == 0);
    va_list vptmp = cast(va_list)((cast(size_t)vp + T.sizeof - 1) &  ~(T.sizeof - 1));
    vp = vptmp + T.sizeof;
    return *cast(T*)vptmp;
}