MyGuidDef.h 1.0 KB

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