|
|
1.1 ! root 1: /* stdarg.h for GNU. ! 2: Note that the type used in va_arg is supposed to match the ! 3: actual type **after default promotions**. ! 4: Thus, va_arg (..., short) is not valid. */ ! 5: ! 6: #ifndef _STDARG_H ! 7: #define _STDARG_H ! 8: ! 9: #ifndef __GNUC__ ! 10: /* Use the system's macros with the system's compiler. */ ! 11: #include <stdarg.h> ! 12: #else ! 13: #ifdef __m88k__ ! 14: #include "va-m88k.h" ! 15: #else ! 16: #ifdef __i860__ ! 17: #include "va-i860.h" ! 18: #else ! 19: #ifdef __hp9000s800__ ! 20: #include "va-hp800.h" ! 21: #else ! 22: #ifdef __mips__ ! 23: #include "va-mips.h" ! 24: #else ! 25: ! 26: #ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ ! 27: #undef _VA_LIST ! 28: #endif ! 29: ! 30: /* The macro _VA_LIST_ is the same thing used by this file in Ultrix. */ ! 31: #ifndef _VA_LIST_ ! 32: /* The macro _VA_LIST is used in SCO Unix 3.2. */ ! 33: #ifndef _VA_LIST ! 34: #define _VA_LIST_ ! 35: #define _VA_LIST ! 36: typedef char *va_list; ! 37: #endif /* _VA_LIST */ ! 38: #endif /* _VA_LIST_ */ ! 39: ! 40: /* Amount of space required in an argument list for an arg of type TYPE. ! 41: TYPE may alternatively be an expression whose type is used. */ ! 42: ! 43: #define __va_rounded_size(TYPE) \ ! 44: (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ! 45: ! 46: #ifndef __sparc__ ! 47: #define va_start(AP, LASTARG) \ ! 48: (AP = ((char *) __builtin_next_arg ())) ! 49: #else ! 50: #define va_start(AP, LASTARG) \ ! 51: (__builtin_saveregs (), \ ! 52: AP = ((char *) __builtin_next_arg ())) ! 53: #endif ! 54: ! 55: void va_end (va_list); /* Defined in libgcc.a */ ! 56: #define va_end(AP) ! 57: ! 58: #define va_arg(AP, TYPE) \ ! 59: (AP += __va_rounded_size (TYPE), \ ! 60: *((TYPE *) (AP - __va_rounded_size (TYPE)))) ! 61: ! 62: #endif /* not mips */ ! 63: #endif /* not hp9000s800 */ ! 64: #endif /* not i860 */ ! 65: #endif /* not m88k */ ! 66: #endif /* __GNUC__ */ ! 67: #endif /* _STDARG_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.