1 /** 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. 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 19 #ifndef __ANONYMOUS_DEFINED 20 #define __ANONYMOUS_DEFINED 21 #if defined(__GNUC__) || defined(__GNUG__) 22 #define _ANONYMOUS_UNION __extension__ 23 #define _ANONYMOUS_STRUCT __extension__ 24 #else 25 #define _ANONYMOUS_UNION 26 #define _ANONYMOUS_STRUCT 27 #endif 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 34 #endif 35 #endif /* __ANONYMOUS_DEFINED */ 36 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 60 # endif 61 #endif /* DUMMYUNIONNAME */ 62 63 #if !defined(DUMMYUNIONNAME1) /* MinGW does not define this one */ 64 # ifdef NONAMELESSUNION 65 # define DUMMYUNIONNAME1 u1 /* Wine uses this variant */ 66 # else 67 # define DUMMYUNIONNAME1 /* Wine uses this variant */ 68 # endif 69 #endif /* DUMMYUNIONNAME1 */ 70 71 #ifndef DUMMYSTRUCTNAME 72 # ifdef NONAMELESSUNION 73 # define DUMMYSTRUCTNAME s 74 # define DUMMYSTRUCTNAME1 s1 /* Wine uses this variant */ 75 # define DUMMYSTRUCTNAME2 s2 76 # define DUMMYSTRUCTNAME3 s3 77 # define DUMMYSTRUCTNAME4 s4 78 # define DUMMYSTRUCTNAME5 s5 79 # else 80 # define DUMMYSTRUCTNAME 81 # define DUMMYSTRUCTNAME1 /* Wine uses this variant */ 82 # define DUMMYSTRUCTNAME2 83 # define DUMMYSTRUCTNAME3 84 # define DUMMYSTRUCTNAME4 85 # define DUMMYSTRUCTNAME5 86 # endif 87 #endif /* DUMMYSTRUCTNAME */ 88 89 /* These are for compatibility with the Wine source tree */ 90 91 #ifndef WINELIB_NAME_AW 92 # ifdef __MINGW_NAME_AW 93 # define WINELIB_NAME_AW __MINGW_NAME_AW 94 # else 95 # ifdef UNICODE 96 # define WINELIB_NAME_AW(func) func##W 97 # else 98 # define WINELIB_NAME_AW(func) func##A 99 # endif 100 # endif 101 #endif /* WINELIB_NAME_AW */ 102 103 #ifndef DECL_WINELIB_TYPE_AW 104 # ifdef __MINGW_TYPEDEF_AW 105 # define DECL_WINELIB_TYPE_AW __MINGW_TYPEDEF_AW 106 # else 107 # define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type; 108 # endif 109 #endif /* DECL_WINELIB_TYPE_AW */ 110 111