home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Include / RECONCIL.H < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-26  |  5.5 KB  |  204 lines

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