|
|
1.1 ! root 1: /* (-lgl ! 2: * COHERENT Version 3.2 ! 3: * Copyright (c) 1982, 1993 by Mark Williams Company. ! 4: * All rights reserved. May not be copied without permission. ! 5: -lgl) */ ! 6: /* ! 7: * stdarg.h ! 8: * C variable arguments header. ! 9: * Draft Proposed ANSI C Standard, Section 4.8, 12/7/88 draft. ! 10: */ ! 11: ! 12: #ifndef __STDARG_H__ ! 13: #define __STDARG_H__ ! 14: ! 15: #include <common/ccompat.h> ! 16: #include <common/__valist.h> ! 17: ! 18: typedef __va_list va_list; ! 19: ! 20: /* ! 21: * On true ANSI/ISO C systems, we just use '...' to get the base address of ! 22: * the argument space. In either system, we have several options as to how ! 23: * we attempt to work around alignment issues (if we do at all). ! 24: * ! 25: * As a convenience, we round sizes up to a minimum size of "int". This may ! 26: * help people who are confused about what the implementation is permitted ! 27: * to do with enumeration types, for instance. This setup below will break ! 28: * with systems that put the padding below the datum. ! 29: */ ! 30: ! 31: #define __size_to_int(type) (sizeof (type) < sizeof (int) ? \ ! 32: sizeof (int) : sizeof (type)) ! 33: ! 34: #if __cplusplus ! 35: ! 36: #define va_start(ap, pN) (ap = ...) ! 37: ! 38: #else ! 39: ! 40: #define va_start(ap, pN) (ap = (va_list) \ ! 41: ((char *) & pN + __size_to_int (pN))) ! 42: #endif ! 43: ! 44: #define va_arg(ap, type) \ ! 45: ((* (type *) ((ap += __size_to_int (type)) - __size_to_int (type)))) ! 46: #define va_end(ap) ((void) 0) ! 47: ! 48: #endif /* ! defined (__STDARG_H__) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.