Showing with 1 addition and 69 deletions.
  1. +1 −69 src/core/vararg.d
70 changes: 1 addition & 69 deletions src/core/vararg.d
Original file line number Diff line number Diff line change
Expand Up @@ -16,72 +16,4 @@
*/
module core.vararg;

version( X86 )
{
/**
* The base vararg list type.
*/
alias char* va_list;

/**
* This function initializes the supplied argument pointer for subsequent
* use by va_arg and va_end.
*
* Params:
* ap = The argument pointer to initialize.
* parmn = The identifier of the rightmost parameter in the function
* parameter list.
*/
void va_start(T)( out va_list ap, ref T parmn )
{
ap = cast(va_list)( cast(void*) &parmn + ( ( T.sizeof + int.sizeof - 1 ) & ~( int.sizeof - 1 ) ) );
}

/**
* This function returns the next argument in the sequence referenced by
* the supplied argument pointer. The argument pointer will be adjusted
* to point to the next arggument in the sequence.
*
* Params:
* ap = The argument pointer.
*
* Returns:
* The next argument in the sequence. The result is undefined if ap
* does not point to a valid argument.
*/
T va_arg(T)( ref 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;
}

/**
* This function cleans up any resources allocated by va_start. It is
* currently a no-op and exists mostly for syntax compatibility with
* the variadric argument functions for C.
*
* Params:
* ap = The argument pointer.
*/
void va_end( va_list ap )
{
}

/**
* This function copied the argument pointer src to dst.
*
* Params:
* src = The source pointer.
* dst = The destination pointer.
*/
void va_copy( out va_list dst, va_list src )
{
dst = src;
}
}
else
{
public import core.stdc.stdarg;
}

public import core.stdc.stdarg;