0022819: Redesign of OpenGl driver
[occt.git] / src / OpenGl / OpenGl_cmn_varargs.hxx
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