Quake-III-Arena

Quake III Arena GPL Source Release
Log | Files | Refs

stdarg.h (787B)


      1 #ifndef __STDARG
      2 #define __STDARG
      3 
      4 #if !defined(_VA_LIST)
      5 #define _VA_LIST
      6 typedef char *__va_list;
      7 #endif
      8 typedef __va_list va_list;
      9 
     10 #define va_start(list, start) ((void)((list) = (sizeof(start)<4 ? \
     11 	(char *)((int *)&(start)+1) : (char *)(&(start)+1))))
     12 #define __va_arg(list, mode, n) \
     13 	(*(mode *)(&(list += ((sizeof(mode)+n)&~n))[-(int)((sizeof(mode)+n)&~n)]))
     14 #define _bigendian_va_arg(list, mode, n) (\
     15 	sizeof(mode)==1 ? *(mode *)(&(list += 4)[-1]) : \
     16 	sizeof(mode)==2 ? *(mode *)(&(list += 4)[-2]) : __va_arg(list, mode, n))
     17 #define _littleendian_va_arg(list, mode, n) __va_arg(list, mode, n)
     18 #define va_end(list) ((void)0)
     19 #define va_arg(list, mode) (sizeof(mode)==8 ? \
     20 	*(mode *)(&(list = (char*)(((int)list + 15)&~7U))[-8]) : \
     21 	_bigendian_va_arg(list, mode, 3U))
     22 #endif