home *** CD-ROM | disk | FTP | other *** search
- /* GNU C varargs and stdargs support for Clipper. */
-
- /* Define __gnuc_va_list. */
-
- #ifndef __GNUC_VA_LIST
- #define __GNUC_VA_LIST
-
- typedef struct
- {
- int __va_ap; /* pointer to stack args */
- void *__va_reg[4]; /* pointer to r0,f0,r1,f1 */
- int __va_num; /* number of args processed */
- } __gnuc_va_list;
- #endif /* not __GNUC_VA_LIST */
-
-
- #if defined (_STDARG_H) || defined (_VARARGS_H)
- #define va_list __gnuc_va_list
- #define __va_list __gnuc_va_list /* acc compatibility */
-
- #define _VA_LIST
- #define _VA_LIST_
- #define _SYS_INT_STDARG_H /* acc compatibility */
-
- #ifdef _STDARG_H
- #define va_start(AP,LASTARG) \
- ((AP) = *(va_list *)__builtin_saveregs(), \
- (AP).__va_num = __builtin_args_info (0), \
- (AP).__va_ap += __builtin_args_info (1))
- #else
- #define va_alist __builtin_va_alist
- /* The ... causes current_function_varargs to be set in cc1. */
- #define va_dcl va_list __builtin_va_alist; ...
- #define va_start(AP) \
- ((AP) = *(va_list *)__builtin_saveregs(), \
- (AP).__va_num = __builtin_args_info (0))
- #endif /* _STDARG_H */
-
- #define __va_rounded_size(TYPE) \
- (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
-
- #define __va_round(AP,TYPE) \
- ((AP).__va_ap = ((AP).__va_ap + __alignof__ (TYPE) - 1 ) & \
- ~(__alignof__ (TYPE) - 1))
-
- #define va_arg(AP, TYPE) \
- ((AP).__va_num < 2 && __builtin_classify_type (* (TYPE *)0) < 12 \
- ? (__builtin_classify_type (* (TYPE *)0) == 8 \
- ? (*(TYPE *)(AP).__va_reg[2 * (AP).__va_num++ + 1]) \
- : (*(TYPE *)(AP).__va_reg[2 * (AP).__va_num++ ])) \
- : ((AP).__va_num++, __va_round (AP,TYPE), *((TYPE *)((AP).__va_ap))++))
-
- #define va_end(AP)
-
- #endif /* defined (_STDARG_H) || defined (_VARARGS_H) */
-