2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
7 #if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
8 #define NONAMELESSUNION 1
10 #if defined(NONAMELESSSTRUCT) && \
11 !defined(NONAMELESSUNION)
12 #define NONAMELESSUNION 1
14 #if defined(NONAMELESSUNION) && \
15 !defined(NONAMELESSSTRUCT)
16 #define NONAMELESSSTRUCT 1
19 #ifndef __ANONYMOUS_DEFINED
20 #define __ANONYMOUS_DEFINED
21 #if defined(__GNUC__) || defined(__GNUG__)
22 #define _ANONYMOUS_UNION __extension__
23 #define _ANONYMOUS_STRUCT __extension__
25 #define _ANONYMOUS_UNION
26 #define _ANONYMOUS_STRUCT
28 #ifndef NONAMELESSUNION
29 #define _UNION_NAME(x)
30 #define _STRUCT_NAME(x)
31 #else /* NONAMELESSUNION */
32 #define _UNION_NAME(x) x
33 #define _STRUCT_NAME(x) x
35 #endif /* __ANONYMOUS_DEFINED */
37 #ifndef DUMMYUNIONNAME
38 # ifdef NONAMELESSUNION
39 # define DUMMYUNIONNAME u
40 # define DUMMYUNIONNAME1 u1 /* Wine uses this variant */
41 # define DUMMYUNIONNAME2 u2
42 # define DUMMYUNIONNAME3 u3
43 # define DUMMYUNIONNAME4 u4
44 # define DUMMYUNIONNAME5 u5
45 # define DUMMYUNIONNAME6 u6
46 # define DUMMYUNIONNAME7 u7
47 # define DUMMYUNIONNAME8 u8
48 # define DUMMYUNIONNAME9 u9
49 # else /* NONAMELESSUNION */
50 # define DUMMYUNIONNAME
51 # define DUMMYUNIONNAME1 /* Wine uses this variant */
52 # define DUMMYUNIONNAME2
53 # define DUMMYUNIONNAME3
54 # define DUMMYUNIONNAME4
55 # define DUMMYUNIONNAME5
56 # define DUMMYUNIONNAME6
57 # define DUMMYUNIONNAME7
58 # define DUMMYUNIONNAME8
59 # define DUMMYUNIONNAME9
61 #endif /* DUMMYUNIONNAME */
63 #ifndef DUMMYSTRUCTNAME
64 # ifdef NONAMELESSUNION
65 # define DUMMYSTRUCTNAME s
66 # define DUMMYSTRUCTNAME1 s1 /* Wine uses this variant */
67 # define DUMMYSTRUCTNAME2 s2
68 # define DUMMYSTRUCTNAME3 s3
69 # define DUMMYSTRUCTNAME4 s4
70 # define DUMMYSTRUCTNAME5 s5
72 # define DUMMYSTRUCTNAME
73 # define DUMMYSTRUCTNAME1 /* Wine uses this variant */
74 # define DUMMYSTRUCTNAME2
75 # define DUMMYSTRUCTNAME3
76 # define DUMMYSTRUCTNAME4
77 # define DUMMYSTRUCTNAME5
79 #endif /* DUMMYSTRUCTNAME */
81 /* These are for compatibility with the Wine source tree */
83 #ifndef WINELIB_NAME_AW
84 # ifdef __MINGW_NAME_AW
85 # define WINELIB_NAME_AW __MINGW_NAME_AW
88 # define WINELIB_NAME_AW(func) func##W
90 # define WINELIB_NAME_AW(func) func##A
93 #endif /* WINELIB_NAME_AW */
95 #ifndef DECL_WINELIB_TYPE_AW
96 # ifdef __MINGW_TYPEDEF_AW
97 # define DECL_WINELIB_TYPE_AW __MINGW_TYPEDEF_AW
99 # define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type;
101 #endif /* DECL_WINELIB_TYPE_AW */