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