mirror of
https://github.com/UberGames/ioef.git
synced 2024-12-11 05:11:29 +00:00
22 lines
787 B
C
22 lines
787 B
C
#ifndef __STDARG
|
|
#define __STDARG
|
|
|
|
#if !defined(_VA_LIST)
|
|
#define _VA_LIST
|
|
typedef char *__va_list;
|
|
#endif
|
|
typedef __va_list va_list;
|
|
|
|
#define va_start(list, start) ((void)((list) = (sizeof(start)<4 ? \
|
|
(char *)((int *)&(start)+1) : (char *)(&(start)+1))))
|
|
#define __va_arg(list, mode, n) \
|
|
(*(mode *)(&(list += ((sizeof(mode)+n)&~n))[-(int)((sizeof(mode)+n)&~n)]))
|
|
#define _bigendian_va_arg(list, mode, n) (\
|
|
sizeof(mode)==1 ? *(mode *)(&(list += 4)[-1]) : \
|
|
sizeof(mode)==2 ? *(mode *)(&(list += 4)[-2]) : __va_arg(list, mode, n))
|
|
#define _littleendian_va_arg(list, mode, n) __va_arg(list, mode, n)
|
|
#define va_end(list) ((void)0)
|
|
#define va_arg(list, mode) (sizeof(mode)==8 ? \
|
|
*(mode *)(&(list = (char*)(((int)list + 15)&~7U))[-8]) : \
|
|
_bigendian_va_arg(list, mode, 3U))
|
|
#endif
|