blob: da73d0ad4e6b1bd2e385b9de2aab8fc0e9fb6703 [file] [log] [blame]
repo syncbaa38582013-07-26 17:53:31 -07001// Common/MyGuidDef.h
2
3#ifndef GUID_DEFINED
4#define GUID_DEFINED
5
6#include "Types.h"
7
8typedef struct {
9 UInt32 Data1;
10 UInt16 Data2;
11 UInt16 Data3;
12 unsigned char Data4[8];
13} GUID;
14
15#ifdef __cplusplus
16#define REFGUID const GUID &
17#else
18#define REFGUID const GUID *
19#endif
20
21#define REFCLSID REFGUID
22#define REFIID REFGUID
23
24#ifdef __cplusplus
25inline int operator==(REFGUID g1, REFGUID g2)
26{
27 for (int i = 0; i < (int)sizeof(g1); i++)
28 if (((unsigned char *)&g1)[i] != ((unsigned char *)&g2)[i])
29 return 0;
30 return 1;
31}
32inline int operator!=(REFGUID g1, REFGUID g2) { return !(g1 == g2); }
33#endif
34
35#ifdef __cplusplus
36 #define MY_EXTERN_C extern "C"
37#else
38 #define MY_EXTERN_C extern
39#endif
40
41#endif
42
43
44#ifdef DEFINE_GUID
45#undef DEFINE_GUID
46#endif
47
48#ifdef INITGUID
49 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
50 MY_EXTERN_C const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
51#else
52 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
53 MY_EXTERN_C const GUID name
54#endif