home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / guiddef.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  5KB  |  210 lines

  1. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  2. //+---------------------------------------------------------------------------
  3. //
  4. //  Microsoft Windows
  5. //  Copyright (C) Microsoft Corporation, 1998-1999.
  6. //
  7. //  File:       guiddef.h
  8. //
  9. //  Contents:   GUID definition
  10. //
  11. //----------------------------------------------------------------------------
  12.  
  13. #ifndef GUID_DEFINED
  14. #define GUID_DEFINED
  15. #ifdef __midl
  16. typedef struct {
  17. #else
  18. typedef struct _GUID {
  19. #endif
  20.     unsigned long  Data1;
  21.     unsigned short Data2;
  22.     unsigned short Data3;
  23.     unsigned char  Data4[ 8 ];
  24. } GUID;
  25. #endif
  26.  
  27. #ifndef FAR
  28. #ifdef _WIN32
  29. #define FAR
  30. #else
  31. #define FAR _far
  32. #endif
  33. #endif
  34.  
  35. #ifndef DECLSPEC_SELECTANY
  36. #if (_MSC_VER >= 1100)
  37. #define DECLSPEC_SELECTANY  __declspec(selectany)
  38. #else
  39. #define DECLSPEC_SELECTANY
  40. #endif
  41. #endif
  42.  
  43. #ifndef EXTERN_C
  44. #ifdef __cplusplus
  45. #define EXTERN_C    extern "C"
  46. #else
  47. #define EXTERN_C    extern
  48. #endif
  49. #endif
  50.  
  51. #ifdef DEFINE_GUID
  52. #undef DEFINE_GUID
  53. #endif
  54.  
  55. #ifdef INITGUID
  56. #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
  57.         EXTERN_C const GUID DECLSPEC_SELECTANY name \
  58.                 = { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
  59. #else
  60. #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
  61.     EXTERN_C const GUID FAR name
  62. #endif // INITGUID
  63.  
  64. #define DEFINE_OLEGUID(name, l, w1, w2) DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
  65.  
  66. #ifndef _GUIDDEF_H_
  67. #define _GUIDDEF_H_
  68.  
  69. #ifndef __LPGUID_DEFINED__
  70. #define __LPGUID_DEFINED__
  71. typedef GUID *LPGUID;
  72. #endif
  73.  
  74. #ifndef __LPCGUID_DEFINED__
  75. #define __LPCGUID_DEFINED__
  76. typedef const GUID *LPCGUID;
  77. #endif
  78.  
  79. #ifndef __IID_DEFINED__
  80. #define __IID_DEFINED__
  81.  
  82. typedef GUID IID;
  83. typedef IID *LPIID;
  84. #define IID_NULL            GUID_NULL
  85. #define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
  86. typedef GUID CLSID;
  87. typedef CLSID *LPCLSID;
  88. #define CLSID_NULL          GUID_NULL
  89. #define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
  90. typedef GUID FMTID;
  91. typedef FMTID *LPFMTID;
  92. #define FMTID_NULL          GUID_NULL
  93. #define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)
  94.  
  95. #ifdef __midl_proxy
  96. #define __MIDL_CONST
  97. #else
  98. #define __MIDL_CONST const
  99. #endif
  100.  
  101. #ifndef _REFGUID_DEFINED
  102. #define _REFGUID_DEFINED
  103. #ifdef __cplusplus
  104. #define REFGUID const GUID &
  105. #else
  106. #define REFGUID const GUID * __MIDL_CONST
  107. #endif
  108. #endif
  109.  
  110. #ifndef _REFIID_DEFINED
  111. #define _REFIID_DEFINED
  112. #ifdef __cplusplus
  113. #define REFIID const IID &
  114. #else
  115. #define REFIID const IID * __MIDL_CONST
  116. #endif
  117. #endif
  118.  
  119. #ifndef _REFCLSID_DEFINED
  120. #define _REFCLSID_DEFINED
  121. #ifdef __cplusplus
  122. #define REFCLSID const IID &
  123. #else
  124. #define REFCLSID const IID * __MIDL_CONST
  125. #endif
  126. #endif
  127.  
  128. #ifndef _REFFMTID_DEFINED
  129. #define _REFFMTID_DEFINED
  130. #ifdef __cplusplus
  131. #define REFFMTID const IID &
  132. #else
  133. #define REFFMTID const IID * __MIDL_CONST
  134. #endif
  135. #endif
  136.  
  137. #endif // !__IID_DEFINED__
  138.  
  139. #if !defined (__midl)
  140. #if !defined (_SYS_GUID_OPERATORS_)
  141. #define _SYS_GUID_OPERATORS_
  142. #include <string.h>
  143.  
  144. // Faster (but makes code fatter) inline version...use sparingly
  145. #ifdef __cplusplus
  146. __inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
  147. {
  148.    return (
  149.       ((unsigned long *) &rguid1)[0] == ((unsigned long *) &rguid2)[0] &&
  150.       ((unsigned long *) &rguid1)[1] == ((unsigned long *) &rguid2)[1] &&
  151.       ((unsigned long *) &rguid1)[2] == ((unsigned long *) &rguid2)[2] &&
  152.       ((unsigned long *) &rguid1)[3] == ((unsigned long *) &rguid2)[3]);
  153. }
  154.  
  155. __inline int IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
  156. {
  157.     return !memcmp(&rguid1, &rguid2, sizeof(GUID));
  158. }
  159.  
  160. #else   // ! __cplusplus
  161.  
  162. #define InlineIsEqualGUID(rguid1, rguid2)  \
  163.         (((unsigned long *) rguid1)[0] == ((unsigned long *) rguid2)[0] &&   \
  164.         ((unsigned long *) rguid1)[1] == ((unsigned long *) rguid2)[1] &&    \
  165.         ((unsigned long *) rguid1)[2] == ((unsigned long *) rguid2)[2] &&    \
  166.         ((unsigned long *) rguid1)[3] == ((unsigned long *) rguid2)[3])
  167.  
  168. #define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
  169.  
  170. #endif  // __cplusplus
  171.  
  172. #ifdef __INLINE_ISEQUAL_GUID
  173. #undef IsEqualGUID
  174. #define IsEqualGUID(rguid1, rguid2) InlineIsEqualGUID(rguid1, rguid2)
  175. #endif
  176.  
  177. // Same type, different name
  178.  
  179. #define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
  180. #define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
  181.  
  182.  
  183. #if !defined _SYS_GUID_OPERATOR_EQ_ && !defined _NO_SYS_GUID_OPERATOR_EQ_
  184. #define _SYS_GUID_OPERATOR_EQ_
  185. // A couple of C++ helpers
  186.  
  187. #ifdef __cplusplus
  188. #ifdef __BORLANDC__
  189. extern "C++" {
  190. #endif
  191. __inline int operator==(REFGUID guidOne, REFGUID guidOther)
  192. {
  193.     return IsEqualGUID(guidOne,guidOther);
  194. }
  195.  
  196. __inline int operator!=(REFGUID guidOne, REFGUID guidOther)
  197. {
  198.     return !(guidOne == guidOther);
  199. }
  200. #ifdef __BORLANDC__
  201. } // extern "C++"
  202. #endif
  203.  
  204. #endif
  205. #endif  // _SYS_GUID_OPERATOR_EQ_
  206. #endif  // _SYS_GUID_OPERATORS_
  207. #endif  // __midl
  208. #endif  // _GUIDDEF_H_
  209. #pragma option pop /*P_O_Pop*/
  210.