|
|
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.