#ifndef __VARARGS_H
#define __VARARGS_H

#ifndef __LCC__
#error This file is intended for use with lcc.
#endif

#ifdef __cplusplus
extern "C" {
#endif

typedef char *__lcc_va_list;
typedef __lcc_va_list va_list;

#define va_dcl		int va_alist;

#define __va_rounded_size(TYPE)  \
  (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))

#define va_align(x)	(((x) + (sizeof(int) - 1)) & (~(sizeof(int) - 1)))

#define va_start(a)	((void)((a) = ((char *)(&va_list))))

#define va_end(a)	((void)((a) = (char *)-1))

#define va_arg(AP, TYPE)						\
 (AP = (__lcc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)),	\
  *((TYPE *) (void *) ((char *) (AP) - __va_rounded_size (TYPE))))

#ifdef __cplusplus
}
#endif

#endif
