| /** | |
| * 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; |