Fix ULARGE_INTEGER/LARGE_INTEGER union in widl-mode. git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@6198 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/include/winnt.h b/mingw-w64-headers/include/winnt.h index 4c08f2e..27425be 100644 --- a/mingw-w64-headers/include/winnt.h +++ b/mingw-w64-headers/include/winnt.h
@@ -432,7 +432,7 @@ #define ERROR_SEVERITY_WARNING 0x80000000 #define ERROR_SEVERITY_ERROR 0xC0000000 -#ifdef __ia64__ +#if defined (__ia64__) && !defined (__WIDL__) __declspec(align(16)) #endif typedef struct _FLOAT128 { @@ -446,16 +446,18 @@ __MINGW_EXTENSION typedef __int64 LONGLONG; __MINGW_EXTENSION typedef unsigned __int64 ULONGLONG; -#define MAXLONGLONG (0x7fffffffffffffff) +#define MAXLONGLONG (0x7fffffffffffffffll) typedef LONGLONG *PLONGLONG; typedef ULONGLONG *PULONGLONG; - typedef LONGLONG USN; #ifndef _LARGE_INTEGER_DEFINED #define _LARGE_INTEGER_DEFINED +#if defined (__WIDL__) +typedef struct _LARGE_INTEGER { +#else typedef union _LARGE_INTEGER { __C89_NAMELESS struct { DWORD LowPart; @@ -465,11 +467,15 @@ DWORD LowPart; LONG HighPart; } u; +#endif LONGLONG QuadPart; } LARGE_INTEGER; typedef LARGE_INTEGER *PLARGE_INTEGER; +#if defined (__WIDL__) + typedef struct _ULARGE_INTEGER { +#else typedef union _ULARGE_INTEGER { __C89_NAMELESS struct { DWORD LowPart; @@ -479,6 +485,7 @@ DWORD LowPart; DWORD HighPart; } u; +#endif ULONGLONG QuadPart; } ULARGE_INTEGER; @@ -495,24 +502,11 @@ typedef ULONGLONG DWORDLONG; typedef DWORDLONG *PDWORDLONG; -#ifdef RC_INVOKED -#define Int32x32To64(a,b) ((LONGLONG)((LONG)(a)) *(LONGLONG)((LONG)(b))) -#define UInt32x32To64(a,b) ((ULONGLONG)((DWORD)(a)) *(ULONGLONG)((DWORD)(b))) -#define Int64ShrlMod32(a,b) ((ULONGLONG)(a) >> (b)) -#elif (defined(_X86_) && !defined(__x86_64)) -#define Int32x32To64(a,b) (LONGLONG)((LONGLONG)(LONG)(a) *(LONG)(b)) -#define UInt32x32To64(a,b) (ULONGLONG)((ULONGLONG)(DWORD)(a) *(DWORD)(b)) -#define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b)) -#elif defined(__ia64__) || defined(__x86_64) -#define Int32x32To64(a,b) ((LONGLONG)((LONG)(a)) *(LONGLONG)((LONG)(b))) -#define UInt32x32To64(a,b) ((ULONGLONG)((DWORD)(a)) *(ULONGLONG)((DWORD)(b))) -#define Int64ShrlMod32(a,b) ((ULONGLONG)(a) >> (b)) -#else -#error Must define a target architecture. -#endif - -#define Int64ShraMod32(a,b) ((LONGLONG)(a) >> (b)) -#define Int64ShllMod32(a,b) ((ULONGLONG)(a) << (b)) +#define Int32x32To64(a, b) (((LONGLONG) ((LONG) (a))) * ((LONGLONG) ((LONG) (b)))) +#define UInt32x32To64(a, b) (((ULONGLONG) ((unsigned int) (a))) *((ULONGLONG) ((unsigned int) (b)))) +#define Int64ShllMod32(a, b) (((ULONGLONG) (a)) << (b)) +#define Int64ShraMod32(a, b) (((LONGLONG) (a)) >> (b)) +#define Int64ShrlMod32(a, b) (((ULONGLONG) (a)) >> (b)) #ifdef __cplusplus extern "C" {