|
|
1.1 ! root 1: /* Handle gvarargs.h and gstdarg.h for clipper. */ ! 2: ! 3: typedef struct ! 4: { ! 5: double __va_f[2]; /* saved floating regs f0,f1 */ ! 6: int __va_r[2]; /* saved general regs r0,r1 */ ! 7: int __va_ap; /* pointer stack args */ ! 8: int __va_num; /* number of args processed */ ! 9: } va_list; ! 10: #define _VA_LIST ! 11: ! 12: #ifdef _STDARG_H ! 13: #define va_start(AP,LASTARG) \ ! 14: ((AP) = *(va_list *)__builtin_saveregs(), \ ! 15: (AP).__va_num = __builtin_args_info (0), \ ! 16: (AP).__va_ap += __builtin_args_info (1)) ! 17: #else ! 18: #define va_alist __builtin_va_alist ! 19: /* The ... causes current_function_varargs to be set in cc1. */ ! 20: #define va_dcl va_list __builtin_va_alist; ... ! 21: #define va_start(AP) \ ! 22: ((AP) = *(va_list *)__builtin_saveregs(), \ ! 23: (AP).__va_num = __builtin_args_info (0)) ! 24: #endif /* _STDARG_H */ ! 25: ! 26: #define __va_rounded_size(TYPE) \ ! 27: (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ! 28: ! 29: #define __va_round(AP,TYPE) \ ! 30: ((AP).__va_ap = ((AP).__va_ap + __alignof__ (TYPE) - 1 ) & \ ! 31: ~(__alignof__ (TYPE) - 1)) ! 32: ! 33: #define va_arg(AP, TYPE) \ ! 34: ((AP).__va_num < 2 && __builtin_classify_type (* (TYPE *)0) < 12 \ ! 35: ? (__builtin_classify_type (* (TYPE *)0) == 8 \ ! 36: ? (*(TYPE *)&(AP).__va_f[(AP).__va_num++]) \ ! 37: : ((TYPE)((AP).__va_r[(AP).__va_num++]))) \ ! 38: : ((AP).__va_num++, __va_round (AP,TYPE), *((TYPE *)((AP).__va_ap))++)) ! 39: ! 40: #define va_end(AP)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.