/* 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)
typedef __gnuc_va_list va_list;
#define __va_list __gnuc_va_list	/* acc compatibility */

#define _VA_LIST
#define _VA_LIST_
#define _SYS_INT_STDARG_H		/* acc compatibility */

/* Call __builtin_next_arg even though we aren't using its value, so that
   we can verify that LASTARG is correct.  */
#ifdef _STDARG_H
#define va_start(AP,LASTARG)			\
  (__builtin_next_arg (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 */

/* round to alignment of `type' but keep a least integer alignment */
#define __va_round(AP,TYPE)					\
  ((AP).__va_ap = ((AP).__va_ap + __alignof__ (TYPE) - 1 ) &	\
   ~(__alignof__ (TYPE) - 1),					\
  ((AP).__va_ap = ((AP).__va_ap + sizeof (int) - 1) & ~(sizeof (int) - 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)	((void) 0)

/* Copy __gnuc_va_list into another variable of this type.  */
#define __va_copy(dest, src) (dest) = (src)

#endif /* defined (_STDARG_H) || defined (_VARARGS_H) */
