guiddef.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*
  2. * Copyright (C) 2000 Alexandre Julliard
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17. */
  18. #ifndef GUID_DEFINED
  19. #define GUID_DEFINED
  20. typedef struct _GUID
  21. {
  22. unsigned long Data1;
  23. unsigned short Data2;
  24. unsigned short Data3;
  25. unsigned char Data4[ 8 ];
  26. } GUID;
  27. #endif
  28. #undef DEFINE_GUID
  29. #ifdef INITGUID
  30. #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
  31. const GUID name = \
  32. { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
  33. #else
  34. #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
  35. extern const GUID name
  36. #endif
  37. #define DEFINE_OLEGUID(name, l, w1, w2) \
  38. DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
  39. #ifndef _GUIDDEF_H_
  40. #define _GUIDDEF_H_
  41. typedef GUID *LPGUID;
  42. typedef GUID CLSID,*LPCLSID;
  43. #ifndef __IID_DEFINED__
  44. #define __IID_DEFINED__
  45. typedef GUID IID,*LPIID;
  46. #endif /* ndef __IID_DEFINED__ */
  47. typedef GUID FMTID,*LPFMTID;
  48. #ifdef __midl_proxy
  49. #define __MIDL_CONST
  50. #else
  51. #define __MIDL_CONST const
  52. #endif
  53. #if defined(__cplusplus) && !defined(CINTERFACE)
  54. #define REFGUID const GUID &
  55. #define REFCLSID const CLSID &
  56. #define REFIID const IID &
  57. #define REFFMTID const FMTID &
  58. #else /* !defined(__cplusplus) && !defined(CINTERFACE) */
  59. #define REFGUID const GUID* __MIDL_CONST
  60. #define REFCLSID const CLSID* __MIDL_CONST
  61. #define REFIID const IID* __MIDL_CONST
  62. #define REFFMTID const FMTID* __MIDL_CONST
  63. #endif /* !defined(__cplusplus) && !defined(CINTERFACE) */
  64. #if defined(__cplusplus) && !defined(CINTERFACE)
  65. #define IsEqualGUID(rguid1, rguid2) (!memcmp(&(rguid1), &(rguid2), sizeof(GUID)))
  66. #else /* defined(__cplusplus) && !defined(CINTERFACE) */
  67. #define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
  68. #endif /* defined(__cplusplus) && !defined(CINTERFACE) */
  69. #define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
  70. #define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
  71. #if defined(__cplusplus) && !defined(CINTERFACE)
  72. #include <string.h>
  73. inline bool operator==(const GUID& guidOne, const GUID& guidOther)
  74. {
  75. return !memcmp(&guidOne,&guidOther,sizeof(GUID));
  76. }
  77. inline bool operator!=(const GUID& guidOne, const GUID& guidOther)
  78. {
  79. return !(guidOne == guidOther);
  80. }
  81. #endif
  82. extern const IID GUID_NULL;
  83. #define IID_NULL GUID_NULL
  84. #define CLSID_NULL GUID_NULL
  85. #define FMTID_NULL GUID_NULL
  86. #endif /* _GUIDDEF_H_ */