2 * This file is part of the mingw-w64 runtime package.
3 * No warranty is given; refer to the file DISCLAIMER within this package.
8 /* Make sure __LONG32 is defined. */
19 typedef struct _GUID
{
20 unsigned __LONG32 Data1
;
23 unsigned char Data4
[8];
28 #if defined(__cplusplus) && (USE___UUIDOF == 0)
30 __extension__
template<typename T
> const GUID
&__mingw_uuidof();
38 #ifndef DECLSPEC_SELECTANY
39 #define DECLSPEC_SELECTANY __declspec(selectany)
44 #define EXTERN_C extern "C"
46 #define EXTERN_C extern
56 #define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID DECLSPEC_SELECTANY name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
58 #define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) const GUID DECLSPEC_SELECTANY name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
61 #define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name
64 #define DEFINE_OLEGUID(name, l, w1, w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46)
69 #ifndef __LPGUID_DEFINED__
70 #define __LPGUID_DEFINED__
74 #ifndef __LPCGUID_DEFINED__
75 #define __LPCGUID_DEFINED__
76 typedef const GUID
*LPCGUID
;
79 #ifndef __IID_DEFINED__
80 #define __IID_DEFINED__
85 #define IID_NULL GUID_NULL
86 #define IsEqualIID(riid1, riid2) IsEqualGUID (riid1, riid2)
93 typedef CLSID
*LPCLSID
;
95 #define CLSID_NULL GUID_NULL
96 #define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID (rclsid1, rclsid2)
98 typedef FMTID
*LPFMTID
;
99 #define FMTID_NULL GUID_NULL
100 #define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID (rfmtid1, rfmtid2)
105 #define __MIDL_CONST const
108 #ifndef _REFGUID_DEFINED
109 #define _REFGUID_DEFINED
111 #define REFGUID const GUID &
113 #define REFGUID const GUID *__MIDL_CONST
117 #ifndef _REFIID_DEFINED
118 #define _REFIID_DEFINED
120 #define REFIID const IID &
122 #define REFIID const IID *__MIDL_CONST
126 #ifndef _REFCLSID_DEFINED
127 #define _REFCLSID_DEFINED
129 #define REFCLSID const IID &
131 #define REFCLSID const IID *__MIDL_CONST
135 #ifndef _REFFMTID_DEFINED
136 #define _REFFMTID_DEFINED
138 #define REFFMTID const IID &
140 #define REFFMTID const IID *__MIDL_CONST
146 #ifndef _SYS_GUID_OPERATORS_
147 #define _SYS_GUID_OPERATORS_
151 __inline
int InlineIsEqualGUID (REFGUID rguid1
, REFGUID rguid2
) {
152 return ((&rguid1
.Data1
)[0] == (&rguid2
.Data1
)[0] && (&rguid1
.Data1
)[1] == (&rguid2
.Data1
)[1] && (&rguid1
.Data1
)[2] == (&rguid2
.Data1
)[2] && (&rguid1
.Data1
)[3] == (&rguid2
.Data1
)[3]);
155 __inline
int IsEqualGUID (REFGUID rguid1
, REFGUID rguid2
) {
156 return !memcmp (&rguid1
,&rguid2
, sizeof (GUID
));
159 #define InlineIsEqualGUID(rguid1, rguid2) ((&(rguid1)->Data1)[0] == (&(rguid2)->Data1)[0] && (&(rguid1)->Data1)[1] == (&(rguid2)->Data1)[1] && (&(rguid1)->Data1)[2] == (&(rguid2)->Data1)[2] && (&(rguid1)->Data1)[3] == (&(rguid2)->Data1)[3])
160 #define IsEqualGUID(rguid1, rguid2) (!memcmp (rguid1, rguid2, sizeof (GUID)))
163 #ifdef __INLINE_ISEQUAL_GUID
165 #define IsEqualGUID(rguid1, rguid2) InlineIsEqualGUID (rguid1, rguid2)
168 #define IsEqualIID(riid1, riid2) IsEqualGUID (riid1, riid2)
169 #define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID (rclsid1, rclsid2)
171 #if !defined (_SYS_GUID_OPERATOR_EQ_) && !defined (_NO_SYS_GUID_OPERATOR_EQ_)
172 #define _SYS_GUID_OPERATOR_EQ_
174 __inline
bool operator== (REFGUID guidOne
, REFGUID guidOther
) { return !!IsEqualGUID (guidOne
, guidOther
); }
175 __inline
bool operator!= (REFGUID guidOne
, REFGUID guidOther
) { return ! (guidOne
== guidOther
); }