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