7fd59977 |
1 | #ifndef OPENGL_CMN_VARARGS_H |
2 | #define OPENGL_CMN_VARARGS_H |
3 | |
4 | #if !defined(__STDC__) |
5 | # define __STDC__ 1 |
6 | #endif |
7 | |
8 | #include <stdarg.h> |
9 | |
10 | #if !defined(WNT) |
11 | # include <X11/Xlib.h> |
12 | # include <GL/glx.h> |
13 | #endif |
14 | |
15 | typedef union CMN_KEY_DATA_UNION |
16 | { |
17 | Tint ldata; |
18 | #if !defined(WNT) |
19 | Pixmap pixmap; |
20 | GLXPixmap |
21 | glxpixmap; |
22 | #endif |
23 | Tfloat fdata; |
24 | void *pdata; |
25 | } CMN_KEY_DATA, *cmn_key_data; |
26 | |
27 | typedef struct |
28 | { |
29 | int id; |
30 | CMN_KEY_DATA data; |
31 | } CMN_KEY, *cmn_key; |
32 | |
33 | #if defined (SOLARIS) || defined (IRIXO32) |
34 | |
35 | #define CMN_GET_STACK(n,k) { \ |
36 | va_list p; \ |
37 | va_start (p, n); \ |
38 | if (n>=0) { \ |
39 | k = (cmn_key *)p; \ |
40 | } \ |
41 | else { \ |
42 | n = -n; \ |
43 | k = *(cmn_key **)p; \ |
44 | } \ |
45 | } |
46 | |
47 | #else /* DECOSF1 || HPUX || IRIX avec n32 */ |
48 | |
49 | #define TMaxArgs 128 |
50 | |
51 | #define CMN_GET_STACK(n,k) { \ |
52 | int i; \ |
53 | va_list ap; \ |
54 | cmn_key * args; \ |
55 | va_start (ap,n); \ |
56 | if (n>=0) { \ |
57 | for (i=0; i<n && i<TMaxArgs; i++) \ |
58 | k[i] = va_arg (ap, cmn_key); \ |
59 | } \ |
60 | else { \ |
61 | n = -n; \ |
62 | args = va_arg (ap, cmn_key *); \ |
63 | for (i=0; i<n && i<TMaxArgs; i++) \ |
64 | k[i] = args[i]; \ |
65 | } \ |
66 | va_end (ap); \ |
67 | } |
68 | #endif /* DECOSF1 || HPUX || IRIX avec n32 */ |
69 | |
70 | #endif |