#ifndef __STDARG_H
#define __STDARG_H

#ifndef __STDDEF_H
#include <stddef.h>
#endif

#ifdef __cplusplus
namespace std {
extern "C" {
#endif

typedef void *va_list;

#ifdef __cplusplus
} ;
} ;
#endif
#define __sizeof__(x) ((sizeof(x)+sizeof(int)-1) & ~(sizeof(int)-1))

#define va_start(ap, parmN) ap = (va_list)((char *)(&parmN)+sizeof(parmN))
#define va_arg(ap, type) (*(type *)(((*(char **)&(ap))+=__sizeof__(type))-(__sizeof__(type))))
#define va_end(ap)

#if  __STDC_VERSION__ >= 199901L
#define va_copy(ap_d, ap_s)  (void)(ap_d = ap_s)
#endif

#define _va_ptr             (...)

#endif  /* __STDARG_H */

#if defined(__cplusplus) && !defined(__USING_CNAME__) && !defined(__STDARG_H_USING_LIST)
#define __STDARG_H_USING_LIST
using std::va_list ;
#endif
