Module: wine Branch: master Commit: 45be01952a21e4f42e4e4114c11f6084090e941e URL: http://source.winehq.org/git/wine.git/?a=commit;h=45be01952a21e4f42e4e4114c1...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Dec 23 16:05:29 2010 +0100
include: Added macros for unions and structs that should remain nameless regardless NONAMELESSUNION/NONAMELESSSTRUCT definition.
---
Maketest.rules.in | 2 +- include/winineti.h | 16 ++++++++-------- include/winnt.h | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 9 deletions(-)
diff --git a/Maketest.rules.in b/Maketest.rules.in index 31404d5..5725d41 100644 --- a/Maketest.rules.in +++ b/Maketest.rules.in @@ -10,7 +10,7 @@ #
DLLFLAGS = @DLLFLAGS@ -DEFS = -DWINE_STRICT_PROTOTYPES $(EXTRADEFS) +DEFS = -DWINE_STRICT_PROTOTYPES -DWINE_NO_NAMELESS_EXTENSION $(EXTRADEFS)
MODULE = $(TESTDLL:%.dll=%)_test.exe TESTRESULTS = $(C_SRCS:.c=.ok) diff --git a/include/winineti.h b/include/winineti.h index 27efa50..4f86db6 100644 --- a/include/winineti.h +++ b/include/winineti.h @@ -46,15 +46,15 @@ typedef struct _INTERNET_CACHE_CONFIG_INFOA BOOL fPerUser; DWORD dwSyncMode; DWORD dwNumCachePaths; - union + __C89_NAMELESSUNION union { - struct + __C89_NAMELESSSTRUCT struct { CHAR CachePath[MAX_PATH]; DWORD dwCacheSize; - } DUMMYSTRUCTNAME; + } __C89_NAMELESSSTRUCTNAME; INTERNET_CACHE_CONFIG_PATH_ENTRYA CachePaths[ANYSIZE_ARRAY]; - } DUMYUNIONNAME; + } __C89_NAMELESSUNIONNAME; DWORD dwNormalUsage; DWORD dwExemptUsage; } INTERNET_CACHE_CONFIG_INFOA, *LPINTERNET_CACHE_CONFIG_INFOA; @@ -68,15 +68,15 @@ typedef struct _INTERNET_CACHE_CONFIG_INFOW BOOL fPerUser; DWORD dwSyncMode; DWORD dwNumCachePaths; - union + __C89_NAMELESSUNION union { - struct + __C89_NAMELESSSTRUCT struct { WCHAR CachePath[MAX_PATH]; DWORD dwCacheSize; - } DUMMYSTRUCTNAME; + } __C89_NAMELESSSTRUCTNAME; INTERNET_CACHE_CONFIG_PATH_ENTRYW CachePaths[ANYSIZE_ARRAY]; - } ; + } __C89_NAMELESSUNIONNAME; DWORD dwNormalUsage; DWORD dwExemptUsage; } INTERNET_CACHE_CONFIG_INFOW, *LPINTERNET_CACHE_CONFIG_INFOW; diff --git a/include/winnt.h b/include/winnt.h index 65dde7a..6cd97bc 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -230,6 +230,44 @@ extern "C" { #define DUMMYUNIONNAME8 u8 #endif /* !defined(NONAMELESSUNION) */
+#ifndef __C89_NAMELESSSTRUCT +# if !defined(__WINESRC__) && !defined(WINE_NO_NAMELESS_EXTENSION) +# ifdef __GNUC__ + /* Anonymous structs support starts with gcc 2.96/g++ 2.95 */ +# if (__GNUC__ > 2) || ((__GNUC__ == 2) && ((__GNUC_MINOR__ > 95) || ((__GNUC_MINOR__ == 95) && defined(__cplusplus)))) +# define __C89_NAMELESSSTRUCT __extension__ +# endif +# elif defined(_MSC_VER) +# define __C89_NAMELESSSTRUCT +# endif +# endif +# ifdef __C89_NAMELESSSTRUCT +# define __C89_NAMELESSSTRUCTNAME +# else +# define __C89_NAMELESSSTRUCT +# define __C89_NAMELESSSTRUCTNAME DUMMYSTRUCTNAME +# endif +#endif + +#ifndef __C89_NAMELESSUNION +# if !defined(__WINESRC__) && !defined(WINE_NO_NAMELESS_EXTENSION) +# ifdef __GNUC__ + /* Anonymous unions support starts with gcc 2.96/g++ 2.95 */ +# if (__GNUC__ > 2) || ((__GNUC__ == 2) && ((__GNUC_MINOR__ > 95) || ((__GNUC_MINOR__ == 95) && defined(__cplusplus)))) +# define __C89_NAMELESSUNION __extension__ +# endif +# elif defined(_MSC_VER) +# define __C89_NAMELESSUNION +# endif +# endif +# ifdef __C89_NAMELESSUNION +# define __C89_NAMELESSUNIONNAME +# else +# define __C89_NAMELESSUNION +# define __C89_NAMELESSUNIONNAME DUMMYUNIONNAME +# endif +#endif + /* C99 restrict support */
#if defined(ENABLE_RESTRICTED) && !defined(MIDL_PASS) && !defined(RC_INVOKED)