_mingw_dxhelper.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. #if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
  7. #define NONAMELESSUNION 1
  8. #endif
  9. #if defined(NONAMELESSSTRUCT) && \
  10. !defined(NONAMELESSUNION)
  11. #define NONAMELESSUNION 1
  12. #endif
  13. #if defined(NONAMELESSUNION) && \
  14. !defined(NONAMELESSSTRUCT)
  15. #define NONAMELESSSTRUCT 1
  16. #endif
  17. #if !defined(__GNU_EXTENSION)
  18. #if defined(__GNUC__) || defined(__GNUG__)
  19. #define __GNU_EXTENSION __extension__
  20. #else
  21. #define __GNU_EXTENSION
  22. #endif
  23. #endif /* __extension__ */
  24. #ifndef __ANONYMOUS_DEFINED
  25. #define __ANONYMOUS_DEFINED
  26. #if defined(__GNUC__) || defined(__GNUG__)
  27. #define _ANONYMOUS_UNION __extension__
  28. #define _ANONYMOUS_STRUCT __extension__
  29. #else
  30. #define _ANONYMOUS_UNION
  31. #define _ANONYMOUS_STRUCT
  32. #endif
  33. #ifndef NONAMELESSUNION
  34. #define _UNION_NAME(x)
  35. #define _STRUCT_NAME(x)
  36. #else /* NONAMELESSUNION */
  37. #define _UNION_NAME(x) x
  38. #define _STRUCT_NAME(x) x
  39. #endif
  40. #endif /* __ANONYMOUS_DEFINED */
  41. #ifndef DUMMYUNIONNAME
  42. # ifdef NONAMELESSUNION
  43. # define DUMMYUNIONNAME u
  44. # define DUMMYUNIONNAME1 u1 /* Wine uses this variant */
  45. # define DUMMYUNIONNAME2 u2
  46. # define DUMMYUNIONNAME3 u3
  47. # define DUMMYUNIONNAME4 u4
  48. # define DUMMYUNIONNAME5 u5
  49. # define DUMMYUNIONNAME6 u6
  50. # define DUMMYUNIONNAME7 u7
  51. # define DUMMYUNIONNAME8 u8
  52. # define DUMMYUNIONNAME9 u9
  53. # else /* NONAMELESSUNION */
  54. # define DUMMYUNIONNAME
  55. # define DUMMYUNIONNAME1 /* Wine uses this variant */
  56. # define DUMMYUNIONNAME2
  57. # define DUMMYUNIONNAME3
  58. # define DUMMYUNIONNAME4
  59. # define DUMMYUNIONNAME5
  60. # define DUMMYUNIONNAME6
  61. # define DUMMYUNIONNAME7
  62. # define DUMMYUNIONNAME8
  63. # define DUMMYUNIONNAME9
  64. # endif
  65. #endif /* DUMMYUNIONNAME */
  66. #if !defined(DUMMYUNIONNAME1) /* MinGW does not define this one */
  67. # ifdef NONAMELESSUNION
  68. # define DUMMYUNIONNAME1 u1 /* Wine uses this variant */
  69. # else
  70. # define DUMMYUNIONNAME1 /* Wine uses this variant */
  71. # endif
  72. #endif /* DUMMYUNIONNAME1 */
  73. #ifndef DUMMYSTRUCTNAME
  74. # ifdef NONAMELESSUNION
  75. # define DUMMYSTRUCTNAME s
  76. # define DUMMYSTRUCTNAME1 s1 /* Wine uses this variant */
  77. # define DUMMYSTRUCTNAME2 s2
  78. # define DUMMYSTRUCTNAME3 s3
  79. # define DUMMYSTRUCTNAME4 s4
  80. # define DUMMYSTRUCTNAME5 s5
  81. # else
  82. # define DUMMYSTRUCTNAME
  83. # define DUMMYSTRUCTNAME1 /* Wine uses this variant */
  84. # define DUMMYSTRUCTNAME2
  85. # define DUMMYSTRUCTNAME3
  86. # define DUMMYSTRUCTNAME4
  87. # define DUMMYSTRUCTNAME5
  88. # endif
  89. #endif /* DUMMYSTRUCTNAME */
  90. /* These are for compatibility with the Wine source tree */
  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. #ifndef DECL_WINELIB_TYPE_AW
  103. # ifdef __MINGW_TYPEDEF_AW
  104. # define DECL_WINELIB_TYPE_AW __MINGW_TYPEDEF_AW
  105. # else
  106. # define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type;
  107. # endif
  108. #endif /* DECL_WINELIB_TYPE_AW */