home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / reconcil.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  5.6 KB  |  208 lines

  1. /*
  2.  * Copyright (C) Microsoft Corporation, 1990-1999
  3.  * reconcil.h - OLE reconciliation interface definitions.
  4.  */
  5.  
  6.  
  7. #ifndef __RECONCIL_H__
  8. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  9. #define __RECONCIL_H__
  10.  
  11. #if _MSC_VER > 1000
  12. #pragma once
  13. #endif
  14.  
  15. /* Headers
  16.  **********/
  17.  
  18. #include <recguids.h>
  19.  
  20.  
  21. #ifdef __cplusplus
  22. extern "C" {                        /* Assume C declarations for C++. */
  23. #endif   /* __cplusplus */
  24.  
  25.  
  26. /* Constants
  27.  ************/
  28.  
  29. /* for use in IStorage::SetStateBits() */
  30.  
  31. #define STATEBITS_FLAT                 (0x0001)
  32.  
  33. /* reconciliation SCODEs */
  34.  
  35. #define REC_S_IDIDTHEUPDATES           MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x1000)
  36. #define REC_S_NOTCOMPLETE              MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x1001)
  37. #define REC_S_NOTCOMPLETEBUTPROPAGATE  MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x1002)
  38.  
  39. #define REC_E_ABORTED                  MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x1000)
  40. #define REC_E_NOCALLBACK               MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x1001)
  41. #define REC_E_NORESIDUES               MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x1002)
  42. #define REC_E_TOODIFFERENT             MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x1003)
  43. #define REC_E_INEEDTODOTHEUPDATES      MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x1004)
  44.  
  45.  
  46. /* Interfaces
  47.  *************/
  48.  
  49. #undef  INTERFACE
  50. #define INTERFACE INotifyReplica
  51.  
  52. DECLARE_INTERFACE_(INotifyReplica, IUnknown)
  53. {
  54.    /* IUnknown methods */
  55.  
  56.    STDMETHOD(QueryInterface)(THIS_
  57.                              REFIID riid,
  58.                              PVOID *ppvObject) PURE;
  59.  
  60.    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  61.  
  62.    STDMETHOD_(ULONG, Release)(THIS) PURE;
  63.  
  64.    /* INotifyReplica methods */
  65.  
  66.    STDMETHOD(YouAreAReplica)(THIS_
  67.                              ULONG ulcOtherReplicas,
  68.                              IMoniker **rgpmkOtherReplicas) PURE;
  69. };
  70.  
  71. #undef  INTERFACE
  72. #define INTERFACE IReconcileInitiator
  73.  
  74. DECLARE_INTERFACE_(IReconcileInitiator, IUnknown)
  75. {
  76.    /* IUnknown methods */
  77.  
  78.    STDMETHOD(QueryInterface)(THIS_
  79.                              REFIID riid,
  80.                              PVOID *ppvObject) PURE;
  81.  
  82.    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  83.  
  84.    STDMETHOD_(ULONG, Release)(THIS) PURE;
  85.  
  86.    /* IReconcileInitiator methods */
  87.  
  88.    STDMETHOD(SetAbortCallback)(THIS_
  89.                                IUnknown *punkForAbort) PURE;
  90.  
  91.    STDMETHOD(SetProgressFeedback)(THIS_
  92.                                   ULONG ulProgress,
  93.                                   ULONG ulProgressMax) PURE;
  94. };
  95.  
  96. /* IReconcilableObject::Reconcile() flags */
  97.  
  98. typedef enum _reconcilef
  99. {
  100.    /* interaction with the user is allowed */
  101.  
  102.    RECONCILEF_MAYBOTHERUSER         = 0x0001,
  103.  
  104.    /*
  105.     * hwndProgressFeedback may be used to provide reconciliation progress
  106.     * feedback to the user.
  107.     */
  108.  
  109.    RECONCILEF_FEEDBACKWINDOWVALID   = 0x0002,
  110.  
  111.    /* residue support not required */
  112.  
  113.    RECONCILEF_NORESIDUESOK          = 0x0004,
  114.  
  115.    /* caller not interested in callee's residues */
  116.  
  117.    RECONCILEF_OMITSELFRESIDUE       = 0x0008,
  118.  
  119.    /*
  120.     * Reconcile() call resuming after a previous Reconcile() call returned
  121.     * REC_E_NOTCOMPLETE
  122.     */
  123.  
  124.    RECONCILEF_RESUMERECONCILIATION  = 0x0010,
  125.  
  126.    /* Object may perform all updates. */
  127.  
  128.    RECONCILEF_YOUMAYDOTHEUPDATES    = 0x0020,
  129.  
  130.    /* Only this object has been changed. */
  131.  
  132.    RECONCILEF_ONLYYOUWERECHANGED    = 0x0040,
  133.  
  134.    /* flag combinations */
  135.  
  136.    ALL_RECONCILE_FLAGS              = (RECONCILEF_MAYBOTHERUSER |
  137.                                        RECONCILEF_FEEDBACKWINDOWVALID |
  138.                                        RECONCILEF_NORESIDUESOK |
  139.                                        RECONCILEF_OMITSELFRESIDUE |
  140.                                        RECONCILEF_RESUMERECONCILIATION |
  141.                                        RECONCILEF_YOUMAYDOTHEUPDATES |
  142.                                        RECONCILEF_ONLYYOUWERECHANGED)
  143. }
  144. RECONCILEF;
  145.  
  146. #undef  INTERFACE
  147. #define INTERFACE IReconcilableObject
  148.  
  149. DECLARE_INTERFACE_(IReconcilableObject, IUnknown)
  150. {
  151.    /* IUnknown methods */
  152.  
  153.    STDMETHOD(QueryInterface)(THIS_
  154.                              REFIID riid,
  155.                              PVOID *ppvObject) PURE;
  156.  
  157.    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  158.  
  159.    STDMETHOD_(ULONG, Release)(THIS) PURE;
  160.  
  161.    /* IReconcilableObject methods */
  162.  
  163.    STDMETHOD(Reconcile)(THIS_
  164.                         IReconcileInitiator *pInitiator,
  165.                         DWORD dwFlags,
  166.                         HWND hwndOwner,
  167.                         HWND hwndProgressFeedback,
  168.                         ULONG ulcInput,
  169.                         IMoniker **rgpmkOtherInput,
  170.                         PLONG plOutIndex,
  171.                         IStorage *pstgNewResidues,
  172.                         PVOID pvReserved) PURE;
  173.  
  174.    STDMETHOD(GetProgressFeedbackMaxEstimate)(THIS_
  175.                                              PULONG pulProgressMax) PURE;
  176. };
  177.  
  178. #undef  INTERFACE
  179. #define INTERFACE IBriefcaseInitiator
  180.  
  181. DECLARE_INTERFACE_(IBriefcaseInitiator, IUnknown)
  182. {
  183.    /* IUnknown methods */
  184.  
  185.    STDMETHOD(QueryInterface)(THIS_
  186.                              REFIID riid,
  187.                              PVOID *ppvObject) PURE;
  188.  
  189.    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  190.  
  191.    STDMETHOD_(ULONG, Release)(THIS) PURE;
  192.  
  193.    /* IBriefcaseInitiator methods */
  194.  
  195.    STDMETHOD(IsMonikerInBriefcase)(THIS_
  196.                                    IMoniker *pmk) PURE;
  197. };
  198.  
  199.  
  200. #ifdef __cplusplus
  201. }                                   /* End of extern "C" {. */
  202. #endif   /* __cplusplus */
  203.  
  204.  
  205. #pragma option pop /*P_O_Pop*/
  206. #endif   /* ! __RECONCIL_H__ */
  207.  
  208.