1/** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5#ifndef GUID_DEFINED 6#define GUID_DEFINED 7 8/* Make sure __LONG32 is defined. */ 9#include <_mingw.h> 10 11#ifdef __WIDL__ 12typedef struct { 13 unsigned long Data1; 14 unsigned short Data2; 15 unsigned short Data3; 16 byte Data4[8]; 17} GUID; 18#else 19typedef struct _GUID { 20 unsigned __LONG32 Data1; 21 unsigned short Data2; 22 unsigned short Data3; 23 unsigned char Data4[8]; 24} GUID; 25#endif 26#endif 27 28#if defined(__cplusplus) && (USE___UUIDOF == 0) 29extern "C++" { 30__extension__ template<typename T> const GUID &__mingw_uuidof(); 31} 32#endif 33 34#ifndef FAR 35#define FAR 36#endif 37 38#ifndef DECLSPEC_SELECTANY 39#define DECLSPEC_SELECTANY __declspec(selectany) 40#endif 41 42#ifndef EXTERN_C 43#ifdef __cplusplus 44#define EXTERN_C extern "C" 45#else 46#define EXTERN_C extern 47#endif 48#endif 49 50#ifdef DEFINE_GUID 51#undef DEFINE_GUID 52#endif 53 54#ifdef INITGUID 55#ifdef __cplusplus 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 } } 57#else 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 } } 59#endif 60#else 61#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name 62#endif 63 64#define DEFINE_OLEGUID(name, l, w1, w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46) 65 66#ifndef _GUIDDEF_H_ 67#define _GUIDDEF_H_ 68 69#ifndef __LPGUID_DEFINED__ 70#define __LPGUID_DEFINED__ 71typedef GUID *LPGUID; 72#endif 73 74#ifndef __LPCGUID_DEFINED__ 75#define __LPCGUID_DEFINED__ 76typedef const GUID *LPCGUID; 77#endif 78 79#ifndef __IID_DEFINED__ 80#define __IID_DEFINED__ 81 82typedef GUID IID; 83typedef IID *LPIID; 84 85#define IID_NULL GUID_NULL 86#define IsEqualIID(riid1, riid2) IsEqualGUID (riid1, riid2) 87 88#ifndef CLSID_DEFINED 89#define CLSID_DEFINED 90typedef GUID CLSID; 91#endif 92 93typedef CLSID *LPCLSID; 94 95#define CLSID_NULL GUID_NULL 96#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID (rclsid1, rclsid2) 97typedef GUID FMTID; 98typedef FMTID *LPFMTID; 99#define FMTID_NULL GUID_NULL 100#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID (rfmtid1, rfmtid2) 101 102#ifdef __WIDL_proxy 103#define __MIDL_CONST 104#else 105#define __MIDL_CONST const 106#endif 107 108#ifndef _REFGUID_DEFINED 109#define _REFGUID_DEFINED 110#ifdef __cplusplus 111#define REFGUID const GUID & 112#else 113#define REFGUID const GUID *__MIDL_CONST 114#endif 115#endif 116 117#ifndef _REFIID_DEFINED 118#define _REFIID_DEFINED 119#ifdef __cplusplus 120#define REFIID const IID & 121#else 122#define REFIID const IID *__MIDL_CONST 123#endif 124#endif 125 126#ifndef _REFCLSID_DEFINED 127#define _REFCLSID_DEFINED 128#ifdef __cplusplus 129#define REFCLSID const IID & 130#else 131#define REFCLSID const IID *__MIDL_CONST 132#endif 133#endif 134 135#ifndef _REFFMTID_DEFINED 136#define _REFFMTID_DEFINED 137#ifdef __cplusplus 138#define REFFMTID const IID & 139#else 140#define REFFMTID const IID *__MIDL_CONST 141#endif 142#endif 143#endif 144 145#ifndef __WIDL__ 146#ifndef _SYS_GUID_OPERATORS_ 147#define _SYS_GUID_OPERATORS_ 148#include <string.h> 149 150#ifdef __cplusplus 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]); 153} 154 155__inline int IsEqualGUID (REFGUID rguid1, REFGUID rguid2) { 156 return !memcmp (&rguid1,&rguid2, sizeof (GUID)); 157} 158#else 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))) 161#endif 162 163#ifdef __INLINE_ISEQUAL_GUID 164#undef IsEqualGUID 165#define IsEqualGUID(rguid1, rguid2) InlineIsEqualGUID (rguid1, rguid2) 166#endif 167 168#define IsEqualIID(riid1, riid2) IsEqualGUID (riid1, riid2) 169#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID (rclsid1, rclsid2) 170 171#if !defined (_SYS_GUID_OPERATOR_EQ_) && !defined (_NO_SYS_GUID_OPERATOR_EQ_) 172#define _SYS_GUID_OPERATOR_EQ_ 173#ifdef __cplusplus 174__inline bool operator== (REFGUID guidOne, REFGUID guidOther) { return !!IsEqualGUID (guidOne, guidOther); } 175__inline bool operator!= (REFGUID guidOne, REFGUID guidOther) { return ! (guidOne == guidOther); } 176#endif 177#endif 178 179#endif 180#endif 181#endif 182