Merging OCC22105, OCC22354, OCC22150 , OCC22199 , OCC22391 and OCC22108
[occt.git] / src / OpenGl / OpenGl_cmn_varargs.hxx
CommitLineData
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
15typedef 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
27typedef 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