156 lines · 4.1 KB · C
RawDownload
/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the w64 mingw-runtime package. * No warranty is given; refer to the file DISCLAIMER within this package. */#ifndef GUID_DEFINED#define GUID_DEFINEDtypedef struct _GUID {  unsigned long Data1;  unsigned short Data2;  unsigned short Data3;  unsigned char Data4[8 ];} GUID;#endif #ifndef UUID_DEFINED#define UUID_DEFINEDtypedef GUID UUID;#endif #ifndef FAR#define FAR#endif #ifndef DECLSPEC_SELECTANY#define DECLSPEC_SELECTANY __declspec(selectany)#endif #ifndef EXTERN_C#ifdef __cplusplus#define EXTERN_C extern "C"#else#define EXTERN_C extern#endif#endif #ifdef DEFINE_GUID#undef DEFINE_GUID#endif #ifdef INITGUID#ifdef __cplusplus#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 } }#else#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 } }#endif#else#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name#endif #define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID(name,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) #ifndef _GUIDDEF_H_#define _GUIDDEF_H_ #ifndef __LPGUID_DEFINED__#define __LPGUID_DEFINED__typedef GUID *LPGUID;#endif #ifndef __LPCGUID_DEFINED__#define __LPCGUID_DEFINED__typedef const GUID *LPCGUID;#endif #ifndef __IID_DEFINED__#define __IID_DEFINED__ typedef GUID IID;typedef IID *LPIID;#define IID_NULL GUID_NULL#define IsEqualIID(riid1,riid2) IsEqualGUID(riid1,riid2)typedef GUID CLSID;typedef CLSID *LPCLSID;#define CLSID_NULL GUID_NULL#define IsEqualCLSID(rclsid1,rclsid2) IsEqualGUID(rclsid1,rclsid2)typedef GUID FMTID;typedef FMTID *LPFMTID;#define FMTID_NULL GUID_NULL#define IsEqualFMTID(rfmtid1,rfmtid2) IsEqualGUID(rfmtid1,rfmtid2) #ifdef __midl_proxy#define __MIDL_CONST#else#define __MIDL_CONST const#endif #ifndef _REFGUID_DEFINED#define _REFGUID_DEFINED#ifdef __cplusplus#define REFGUID const GUID &#else#define REFGUID const GUID *__MIDL_CONST#endif#endif #ifndef _REFIID_DEFINED#define _REFIID_DEFINED#ifdef __cplusplus#define REFIID const IID &#else#define REFIID const IID *__MIDL_CONST#endif#endif #ifndef _REFCLSID_DEFINED#define _REFCLSID_DEFINED#ifdef __cplusplus#define REFCLSID const IID &#else#define REFCLSID const IID *__MIDL_CONST#endif#endif #ifndef _REFFMTID_DEFINED#define _REFFMTID_DEFINED#ifdef __cplusplus#define REFFMTID const IID &#else#define REFFMTID const IID *__MIDL_CONST#endif#endif#endif #ifndef _SYS_GUID_OPERATORS_#define _SYS_GUID_OPERATORS_#include <string.h> #ifdef __cplusplus__inline int InlineIsEqualGUID(REFGUID rguid1,REFGUID rguid2) {  return (((unsigned long *) &rguid1)[0]==((unsigned long *) &rguid2)[0] && ((unsigned long *) &rguid1)[1]==((unsigned long *) &rguid2)[1] &&    ((unsigned long *) &rguid1)[2]==((unsigned long *) &rguid2)[2] && ((unsigned long *) &rguid1)[3]==((unsigned long *) &rguid2)[3]);}__inline int IsEqualGUID(REFGUID rguid1,REFGUID rguid2) { return !memcmp(&rguid1,&rguid2,sizeof(GUID)); }#else#define InlineIsEqualGUID(rguid1,rguid2) (((unsigned long *) rguid1)[0]==((unsigned long *) rguid2)[0] && ((unsigned long *) rguid1)[1]==((unsigned long *) rguid2)[1] && ((unsigned long *) rguid1)[2]==((unsigned long *) rguid2)[2] && ((unsigned long *) rguid1)[3]==((unsigned long *) rguid2)[3])#define IsEqualGUID(rguid1,rguid2) (!memcmp(rguid1,rguid2,sizeof(GUID)))#endif #ifdef __INLINE_ISEQUAL_GUID#undef IsEqualGUID#define IsEqualGUID(rguid1,rguid2) InlineIsEqualGUID(rguid1,rguid2)#endif #define IsEqualIID(riid1,riid2) IsEqualGUID(riid1,riid2)#define IsEqualCLSID(rclsid1,rclsid2) IsEqualGUID(rclsid1,rclsid2) #if !defined _SYS_GUID_OPERATOR_EQ_ && !defined _NO_SYS_GUID_OPERATOR_EQ_#define _SYS_GUID_OPERATOR_EQ_#ifdef __cplusplus__inline int operator==(REFGUID guidOne,REFGUID guidOther) { return IsEqualGUID(guidOne,guidOther); }__inline int operator!=(REFGUID guidOne,REFGUID guidOther) { return !(guidOne==guidOther); }#endif#endif#endif#endif