1793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/**
2793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * This file has no copyright assigned and is placed in the Public Domain.
3793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * This file is part of the w64 mingw-runtime package.
4793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * No warranty is given; refer to the file DISCLAIMER within this package.
5793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */
6793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler
7793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
8793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define NONAMELESSUNION		1
9793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif
10793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#if defined(NONAMELESSSTRUCT) && \
11793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler   !defined(NONAMELESSUNION)
12793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define NONAMELESSUNION		1
13793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif
14793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#if defined(NONAMELESSUNION)  && \
15793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler   !defined(NONAMELESSSTRUCT)
16793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define NONAMELESSSTRUCT	1
17793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif
18793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler
19793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#ifndef __ANONYMOUS_DEFINED
20793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define __ANONYMOUS_DEFINED
21793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#if defined(__GNUC__) || defined(__GNUG__)
22793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define _ANONYMOUS_UNION	__extension__
23793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define _ANONYMOUS_STRUCT	__extension__
24793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#else
25793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define _ANONYMOUS_UNION
26793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define _ANONYMOUS_STRUCT
27793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif
28793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#ifndef NONAMELESSUNION
29793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define _UNION_NAME(x)
30793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define _STRUCT_NAME(x)
31793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#else /* NONAMELESSUNION */
32793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define _UNION_NAME(x)  x
33793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define _STRUCT_NAME(x) x
34793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif
35793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif	/* __ANONYMOUS_DEFINED */
36793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler
37793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#ifndef DUMMYUNIONNAME
38793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# ifdef NONAMELESSUNION
39793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME  u
40793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME1 u1	/* Wine uses this variant */
41793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME2 u2
42793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME3 u3
43793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME4 u4
44793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME5 u5
45793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME6 u6
46793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME7 u7
47793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME8 u8
48793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME9 u9
49793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# else /* NONAMELESSUNION */
50793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME
51793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME1	/* Wine uses this variant */
52793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME2
53793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME3
54793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME4
55793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME5
56793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME6
57793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME7
58793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME8
59793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME9
60793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# endif
61793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif	/* DUMMYUNIONNAME */
62793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler
63793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#if !defined(DUMMYUNIONNAME1)	/* MinGW does not define this one */
64793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# ifdef NONAMELESSUNION
65793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME1 u1	/* Wine uses this variant */
66793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# else
67793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYUNIONNAME1	/* Wine uses this variant */
68793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# endif
69793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif	/* DUMMYUNIONNAME1 */
70793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler
71793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#ifndef DUMMYSTRUCTNAME
72793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# ifdef NONAMELESSUNION
73793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME  s
74793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME1 s1	/* Wine uses this variant */
75793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME2 s2
76793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME3 s3
77793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME4 s4
78793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME5 s5
79793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# else
80793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME
81793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME1	/* Wine uses this variant */
82793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME2
83793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME3
84793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME4
85793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DUMMYSTRUCTNAME5
86793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# endif
87793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif /* DUMMYSTRUCTNAME */
88793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler
89793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/* These are for compatibility with the Wine source tree */
90793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler
91793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#ifndef WINELIB_NAME_AW
92793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# ifdef __MINGW_NAME_AW
93793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#   define WINELIB_NAME_AW  __MINGW_NAME_AW
94793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# else
95793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  ifdef UNICODE
96793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#   define WINELIB_NAME_AW(func) func##W
97793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  else
98793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#   define WINELIB_NAME_AW(func) func##A
99793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  endif
100793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# endif
101793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif	/* WINELIB_NAME_AW */
102793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler
103793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#ifndef DECL_WINELIB_TYPE_AW
104793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# ifdef __MINGW_TYPEDEF_AW
105793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DECL_WINELIB_TYPE_AW  __MINGW_TYPEDEF_AW
106793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# else
107793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#  define DECL_WINELIB_TYPE_AW(type)  typedef WINELIB_NAME_AW(type) type;
108793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler# endif
109793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif	/* DECL_WINELIB_TYPE_AW */
110793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler
111