1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER within this package.
5  */
6 
7 #if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
8 #define NONAMELESSUNION		1
9 #endif
10 #if defined(NONAMELESSSTRUCT) && \
11    !defined(NONAMELESSUNION)
12 #define NONAMELESSUNION		1
13 #endif
14 #if defined(NONAMELESSUNION)  && \
15    !defined(NONAMELESSSTRUCT)
16 #define NONAMELESSSTRUCT	1
17 #endif
18 #if !defined(__GNU_EXTENSION)
19 #if defined(__GNUC__) || defined(__GNUG__)
20 #define __GNU_EXTENSION		__extension__
21 #else
22 #define __GNU_EXTENSION
23 #endif
24 #endif /* __extension__ */
25 
26 #ifndef __ANONYMOUS_DEFINED
27 #define __ANONYMOUS_DEFINED
28 #if defined(__GNUC__) || defined(__GNUG__)
29 #define _ANONYMOUS_UNION	__extension__
30 #define _ANONYMOUS_STRUCT	__extension__
31 #else
32 #define _ANONYMOUS_UNION
33 #define _ANONYMOUS_STRUCT
34 #endif
35 #ifndef NONAMELESSUNION
36 #define _UNION_NAME(x)
37 #define _STRUCT_NAME(x)
38 #else /* NONAMELESSUNION */
39 #define _UNION_NAME(x)  x
40 #define _STRUCT_NAME(x) x
41 #endif
42 #endif	/* __ANONYMOUS_DEFINED */
43 
44 #ifndef DUMMYUNIONNAME
45 # ifdef NONAMELESSUNION
46 #  define DUMMYUNIONNAME  u
47 #  define DUMMYUNIONNAME1 u1	/* Wine uses this variant */
48 #  define DUMMYUNIONNAME2 u2
49 #  define DUMMYUNIONNAME3 u3
50 #  define DUMMYUNIONNAME4 u4
51 #  define DUMMYUNIONNAME5 u5
52 #  define DUMMYUNIONNAME6 u6
53 #  define DUMMYUNIONNAME7 u7
54 #  define DUMMYUNIONNAME8 u8
55 #  define DUMMYUNIONNAME9 u9
56 # else /* NONAMELESSUNION */
57 #  define DUMMYUNIONNAME
58 #  define DUMMYUNIONNAME1	/* Wine uses this variant */
59 #  define DUMMYUNIONNAME2
60 #  define DUMMYUNIONNAME3
61 #  define DUMMYUNIONNAME4
62 #  define DUMMYUNIONNAME5
63 #  define DUMMYUNIONNAME6
64 #  define DUMMYUNIONNAME7
65 #  define DUMMYUNIONNAME8
66 #  define DUMMYUNIONNAME9
67 # endif
68 #endif	/* DUMMYUNIONNAME */
69 
70 #if !defined(DUMMYUNIONNAME1)	/* MinGW does not define this one */
71 # ifdef NONAMELESSUNION
72 #  define DUMMYUNIONNAME1 u1	/* Wine uses this variant */
73 # else
74 #  define DUMMYUNIONNAME1	/* Wine uses this variant */
75 # endif
76 #endif	/* DUMMYUNIONNAME1 */
77 
78 #ifndef DUMMYSTRUCTNAME
79 # ifdef NONAMELESSUNION
80 #  define DUMMYSTRUCTNAME  s
81 #  define DUMMYSTRUCTNAME1 s1	/* Wine uses this variant */
82 #  define DUMMYSTRUCTNAME2 s2
83 #  define DUMMYSTRUCTNAME3 s3
84 #  define DUMMYSTRUCTNAME4 s4
85 #  define DUMMYSTRUCTNAME5 s5
86 # else
87 #  define DUMMYSTRUCTNAME
88 #  define DUMMYSTRUCTNAME1	/* Wine uses this variant */
89 #  define DUMMYSTRUCTNAME2
90 #  define DUMMYSTRUCTNAME3
91 #  define DUMMYSTRUCTNAME4
92 #  define DUMMYSTRUCTNAME5
93 # endif
94 #endif /* DUMMYSTRUCTNAME */
95 
96 /* These are for compatibility with the Wine source tree */
97 
98 #ifndef WINELIB_NAME_AW
99 # ifdef __MINGW_NAME_AW
100 #   define WINELIB_NAME_AW  __MINGW_NAME_AW
101 # else
102 #  ifdef UNICODE
103 #   define WINELIB_NAME_AW(func) func##W
104 #  else
105 #   define WINELIB_NAME_AW(func) func##A
106 #  endif
107 # endif
108 #endif	/* WINELIB_NAME_AW */
109 
110 #ifndef DECL_WINELIB_TYPE_AW
111 # ifdef __MINGW_TYPEDEF_AW
112 #  define DECL_WINELIB_TYPE_AW  __MINGW_TYPEDEF_AW
113 # else
114 #  define DECL_WINELIB_TYPE_AW(type)  typedef WINELIB_NAME_AW(type) type;
115 # endif
116 #endif	/* DECL_WINELIB_TYPE_AW */
117 
118