xref: /aosp_15_r20/external/lzma/CPP/Common/MyGuidDef.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // Common/MyGuidDef.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker // #pragma message "Common/MyGuidDef.h"
4*f6dc9357SAndroid Build Coastguard Worker 
5*f6dc9357SAndroid Build Coastguard Worker #ifndef GUID_DEFINED
6*f6dc9357SAndroid Build Coastguard Worker #define GUID_DEFINED
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker // #pragma message "GUID_DEFINED"
9*f6dc9357SAndroid Build Coastguard Worker 
10*f6dc9357SAndroid Build Coastguard Worker #include "MyTypes.h"
11*f6dc9357SAndroid Build Coastguard Worker 
12*f6dc9357SAndroid Build Coastguard Worker typedef struct {
13*f6dc9357SAndroid Build Coastguard Worker   UInt32 Data1;
14*f6dc9357SAndroid Build Coastguard Worker   UInt16 Data2;
15*f6dc9357SAndroid Build Coastguard Worker   UInt16 Data3;
16*f6dc9357SAndroid Build Coastguard Worker   Byte Data4[8];
17*f6dc9357SAndroid Build Coastguard Worker } GUID;
18*f6dc9357SAndroid Build Coastguard Worker 
19*f6dc9357SAndroid Build Coastguard Worker #ifdef __cplusplus
20*f6dc9357SAndroid Build Coastguard Worker #define REFGUID const GUID &
21*f6dc9357SAndroid Build Coastguard Worker #else
22*f6dc9357SAndroid Build Coastguard Worker #define REFGUID const GUID *
23*f6dc9357SAndroid Build Coastguard Worker #endif
24*f6dc9357SAndroid Build Coastguard Worker 
25*f6dc9357SAndroid Build Coastguard Worker // typedef GUID IID;
26*f6dc9357SAndroid Build Coastguard Worker typedef GUID CLSID;
27*f6dc9357SAndroid Build Coastguard Worker 
28*f6dc9357SAndroid Build Coastguard Worker #define REFCLSID REFGUID
29*f6dc9357SAndroid Build Coastguard Worker #define REFIID REFGUID
30*f6dc9357SAndroid Build Coastguard Worker 
31*f6dc9357SAndroid Build Coastguard Worker #ifdef __cplusplus
32*f6dc9357SAndroid Build Coastguard Worker inline int operator==(REFGUID g1, REFGUID g2)
33*f6dc9357SAndroid Build Coastguard Worker {
34*f6dc9357SAndroid Build Coastguard Worker   for (unsigned i = 0; i < sizeof(g1); i++)
35*f6dc9357SAndroid Build Coastguard Worker     if (((const Byte *)&g1)[i] != ((const Byte *)&g2)[i])
36*f6dc9357SAndroid Build Coastguard Worker       return 0;
37*f6dc9357SAndroid Build Coastguard Worker   return 1;
38*f6dc9357SAndroid Build Coastguard Worker }
39*f6dc9357SAndroid Build Coastguard Worker inline int operator!=(REFGUID g1, REFGUID g2) { return !(g1 == g2); }
40*f6dc9357SAndroid Build Coastguard Worker #endif
41*f6dc9357SAndroid Build Coastguard Worker 
42*f6dc9357SAndroid Build Coastguard Worker #endif // GUID_DEFINED
43*f6dc9357SAndroid Build Coastguard Worker 
44*f6dc9357SAndroid Build Coastguard Worker #ifndef EXTERN_C
45*f6dc9357SAndroid Build Coastguard Worker #ifdef __cplusplus
46*f6dc9357SAndroid Build Coastguard Worker   #define EXTERN_C extern "C"
47*f6dc9357SAndroid Build Coastguard Worker #else
48*f6dc9357SAndroid Build Coastguard Worker   #define EXTERN_C extern
49*f6dc9357SAndroid Build Coastguard Worker #endif
50*f6dc9357SAndroid Build Coastguard Worker #endif
51*f6dc9357SAndroid Build Coastguard Worker 
52*f6dc9357SAndroid Build Coastguard Worker #ifdef DEFINE_GUID
53*f6dc9357SAndroid Build Coastguard Worker #undef DEFINE_GUID
54*f6dc9357SAndroid Build Coastguard Worker #endif
55*f6dc9357SAndroid Build Coastguard Worker 
56*f6dc9357SAndroid Build Coastguard Worker #ifdef INITGUID
57*f6dc9357SAndroid Build Coastguard Worker   #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
58*f6dc9357SAndroid Build Coastguard Worker     EXTERN_C const GUID name; \
59*f6dc9357SAndroid Build Coastguard Worker     EXTERN_C const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
60*f6dc9357SAndroid Build Coastguard Worker #else
61*f6dc9357SAndroid Build Coastguard Worker   #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
62*f6dc9357SAndroid Build Coastguard Worker     EXTERN_C const GUID name
63*f6dc9357SAndroid Build Coastguard Worker #endif
64