xref: /plan9-contrib/spim/include/ape/stdarg.h (revision 12b1df16f1a9233fb47d4260d51ef450cc19c368)
1*12b1df16SDavid du Colombier #ifndef __STDARG
2*12b1df16SDavid du Colombier #define __STDARG
3*12b1df16SDavid du Colombier 
4*12b1df16SDavid du Colombier typedef char *va_list;
5*12b1df16SDavid du Colombier 
6*12b1df16SDavid du Colombier #define va_start(list, start) list =\
7*12b1df16SDavid du Colombier 	(sizeof(start) < 4?\
8*12b1df16SDavid du Colombier 		(char*)((int*)&(start)+1):\
9*12b1df16SDavid du Colombier 		(char*)(&(start)+1))
10*12b1df16SDavid du Colombier #define va_end(list)
11*12b1df16SDavid du Colombier #define va_arg(list, mode)\
12*12b1df16SDavid du Colombier 	((sizeof(mode) == 1)?\
13*12b1df16SDavid du Colombier 		((list += 4), (mode*)list)[-4]:\
14*12b1df16SDavid du Colombier 	(sizeof(mode) == 2)?\
15*12b1df16SDavid du Colombier 		((list += 4), (mode*)list)[-2]:\
16*12b1df16SDavid du Colombier 		((list += sizeof(mode)), (mode*)list)[-1])
17*12b1df16SDavid du Colombier 
18*12b1df16SDavid du Colombier #endif /* __STDARG */
19