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