blob: be3d6991e399c4077217aee552be060c516b8df3 [file] [log] [blame]
/**
* Varargs implementation for the GNU compilers (Gnu D Compiler)
* Used by core.stdc.stdarg and core.vararg.
*
* Reference: https://github.com/ARM-software/abi-aa/blob/master/aapcs64/aapcs64.rst#appendix-variable-argument-lists
*
* Copyright: Copyright D Language Foundation 2025
* License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
* Authors: Various
* Source: $(DRUNTIMESRC core/internal/vararg/gnu.d)
*/
module core.internal.vararg.gnu;
version (GNU):
import gcc.builtins;
@nogc:
nothrow:
/**
* The argument pointer type.
*/
alias va_list = __gnuc_va_list;
alias __gnuc_va_list = __builtin_va_list;
/**
* Initialize ap.
* parmn should be the last named parameter.
*/
void va_start(T)(out va_list ap, ref T parmn);
/**
* Retrieve and return the next value that is of type T.
*/
T va_arg(T)(ref va_list ap); // intrinsic
/**
* Retrieve and store in parmn the next value that is of type T.
*/
void va_arg(T)(ref va_list ap, ref T parmn); // intrinsic
/**
* End use of ap.
*/
alias va_end = __builtin_va_end;
/**
* Make a copy of ap.
*/
alias va_copy = __builtin_va_copy;