home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / netds / adsi / sampprov / macro.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-29  |  9.7 KB  |  172 lines

  1. #define BAIL_IF_ERROR(hr) \
  2.         if (FAILED(hr)) {       \
  3.                 goto cleanup;   \
  4.         }\
  5.  
  6. #define BAIL_ON_FAILURE(hr) \
  7.         if (FAILED(hr)) {       \
  8.                 goto error;   \
  9.         }\
  10.  
  11. #define CONTINUE_ON_FAILURE(hr) \
  12.         if (FAILED(hr)) {       \
  13.                 continue;   \
  14.         }\
  15.  
  16. #define BAIL_ON_SUCCESS(hr) \
  17.         if (SUCCEEDED(hr)) {       \
  18.                 goto error;   \
  19.         }\
  20.  
  21. #define QUERY_INTERFACE(hr, ptr, iid, ppObj) \
  22.         hr = ptr->QueryInterface(iid, (void **)ppObj); \
  23.         if (FAILED(hr)) {    \
  24.                 goto cleanup;\
  25.         }\
  26.  
  27.  
  28. #define RRETURN_ENUM_STATUS(hr) \
  29.         if (hr != S_OK) {       \
  30.             RRETURN(S_FALSE);   \
  31.         }                       \
  32.         RRETURN(S_OK);
  33.  
  34.  
  35.  
  36.  
  37. #define DEFINE_IDispatch_Implementation_Unimplemented(cls) \
  38. STDMETHODIMP                                                          \
  39. cls::GetTypeInfoCount(unsigned int FAR* pctinfo)        \
  40. {                                                                     \
  41.     RRETURN(E_NOTIMPL);                                               \
  42. }                                                                     \
  43.                                                                       \
  44. STDMETHODIMP                                                          \
  45. cls::GetTypeInfo(unsigned int itinfo, LCID lcid,        \
  46.         ITypeInfo FAR* FAR* pptinfo)                                  \
  47. {                                                                     \
  48.     RRETURN(E_NOTIMPL);                                               \
  49. }                                                                     \
  50.                                                                       \
  51. STDMETHODIMP                                                          \
  52. cls::GetIDsOfNames(REFIID iid, LPWSTR FAR* rgszNames,   \
  53.         unsigned int cNames, LCID lcid, DISPID FAR* rgdispid)         \
  54. {                                                                     \
  55.     RRETURN(E_NOTIMPL);                                               \
  56. }                                                                     \
  57.                                                                       \
  58. STDMETHODIMP                                                          \
  59. cls::Invoke(DISPID dispidMember, REFIID iid, LCID lcid, \
  60.         unsigned short wFlags, DISPPARAMS FAR* pdispparams,           \
  61.         VARIANT FAR* pvarResult, EXCEPINFO FAR* pexcepinfo,           \
  62.         unsigned int FAR* puArgErr)                                   \
  63. {                                                                     \
  64.     RRETURN(E_NOTIMPL);                                               \
  65. }
  66.  
  67.  
  68.  
  69.  
  70. #define DEFINE_IDispatch_Implementation(cls)                          \
  71. STDMETHODIMP                                                          \
  72. cls::GetTypeInfoCount(unsigned int FAR* pctinfo)                      \
  73. {                                                                     \
  74.         RRETURN(_pDispMgr->GetTypeInfoCount(pctinfo));                \
  75. }                                                                     \
  76.                                                                       \
  77. STDMETHODIMP                                                          \
  78. cls::GetTypeInfo(unsigned int itinfo, LCID lcid,                      \
  79.         ITypeInfo FAR* FAR* pptinfo)                                  \
  80. {                                                                     \
  81.         RRETURN(_pDispMgr->GetTypeInfo(itinfo,                        \
  82.                                        lcid,                          \
  83.                                        pptinfo                        \
  84.                                        ));                            \
  85. }                                                                     \
  86. STDMETHODIMP                                                          \
  87. cls::GetIDsOfNames(REFIID iid, LPWSTR FAR* rgszNames,                 \
  88.         unsigned int cNames, LCID lcid, DISPID FAR* rgdispid)         \
  89. {                                                                     \
  90.         RRETURN(_pDispMgr->GetIDsOfNames(iid,                         \
  91.                                          rgszNames,                   \
  92.                                          cNames,                      \
  93.                                          lcid,                        \
  94.                                          rgdispid                     \
  95.                                          ));                          \
  96. }                                                                     \
  97.                                                                       \
  98. STDMETHODIMP                                                          \
  99. cls::Invoke(DISPID dispidMember, REFIID iid, LCID lcid,               \
  100.         unsigned short wFlags, DISPPARAMS FAR* pdispparams,           \
  101.         VARIANT FAR* pvarResult, EXCEPINFO FAR* pexcepinfo,           \
  102.         unsigned int FAR* puArgErr)                                   \
  103. {                                                                     \
  104.         RRETURN (_pDispMgr->Invoke(dispidMember,                      \
  105.                                    iid,                               \
  106.                                    lcid,                              \
  107.                                    wFlags,                            \
  108.                                    pdispparams,                       \
  109.                                    pvarResult,                        \
  110.                                    pexcepinfo,                        \
  111.                                    puArgErr                           \
  112.                                    ));                                \
  113. }
  114.  
  115. #define DEFINE_IADs_Implementation(cls)                             \
  116. STDMETHODIMP                                                          \
  117. cls::get_Name(THIS_ BSTR FAR* retval)                                 \
  118. {                                                                     \
  119.     RRETURN(get_CoreName(retval));                                    \
  120. }                                                                     \
  121.                                                                       \
  122. STDMETHODIMP                                                          \
  123. cls::get_ADsPath(THIS_ BSTR FAR* retval)                            \
  124. {                                                                     \
  125.                                                                       \
  126.     RRETURN(get_CoreADsPath(retval));                               \
  127. }                                                                     \
  128.                                                                       \
  129. STDMETHODIMP                                                          \
  130. cls::get_Class(THIS_ BSTR FAR* retval)                                \
  131. {                                                                     \
  132.                                                                       \
  133.     RRETURN(get_CoreADsClass(retval));                              \
  134. }                                                                     \
  135.                                                                       \
  136.                                                                       \
  137. STDMETHODIMP                                                          \
  138. cls::get_Parent(THIS_ BSTR FAR* retval)                               \
  139. {                                                                     \
  140.     RRETURN(get_CoreParent(retval));                                  \
  141. }                                                                     \
  142.                                                                       \
  143. STDMETHODIMP                                                          \
  144. cls::get_Schema(THIS_ BSTR FAR* retval)                               \
  145. {                                                                     \
  146.     RRETURN(get_CoreSchema(retval));                                  \
  147. }                                                                     \
  148.                                                                       \
  149. STDMETHODIMP                                                          \
  150. cls::get_GUID(THIS_ BSTR FAR* retval)                                 \
  151. {                                                                     \
  152.     RRETURN(get_CoreGUID(retval));                                    \
  153. }                                                                     \
  154.                                                                       \
  155. STDMETHODIMP                                                          \
  156. cls::GetEx(THIS_ BSTR bstrName, VARIANT FAR* pvProp)                  \
  157. {                                                                     \
  158.     RRETURN(E_NOTIMPL);                                               \
  159. }                                                                     \
  160.                                                                       \
  161. STDMETHODIMP                                                          \
  162. cls::PutEx(THIS_ long lnControlCode, BSTR bstrName, VARIANT vProp)    \
  163. {                                                                     \
  164.     RRETURN(E_NOTIMPL);                                               \
  165. }                                                                     \
  166. STDMETHODIMP                                                          \
  167. cls::GetInfoEx(THIS_ VARIANT vProperties, long lnReserved)            \
  168. {                                                                     \
  169.     RRETURN(E_NOTIMPL);                                               \
  170. }
  171.  
  172.