home *** CD-ROM | disk | FTP | other *** search
/ ...taking it to the Macs! / ...taking it to the Macs!.iso / Extras / ActiveX Mac SDK / ActiveX SDK / Common / CXEnumGeneric.h < prev    next >
Encoding:
Text File  |  1997-01-02  |  1.6 KB  |  59 lines  |  [TEXT/????]

  1. //
  2. //  XENUMGEN.H
  3. //
  4. //  Copyright (C) Microsoft Corporation, 1996
  5. //
  6.  
  7. typedef void (*LPFNENUMCOPYELEMENT)(LPVOID pTo, LPVOID pFrom);
  8. typedef void (*LPFNENUMRELEASEARRAY)(LPVOID pvArray, ULONG cElements);
  9.  
  10. typedef struct _ENUMTYPE {
  11.     const IID *piid;
  12.     ULONG cbElement;
  13.     LPFNENUMCOPYELEMENT pfnCopyElement;
  14.     LPFNENUMRELEASEARRAY pfnReleaseArray;
  15. }   ENUMTYPE, * LPENUMTYPE;
  16.  
  17. extern ENUMTYPE g_EnumUnknown;
  18. extern ENUMTYPE g_EnumFORMATETC;
  19.  
  20. //  All enumerators have the same basic interface signature, so we can safely
  21. //  cast the following interface to any other enumerator interface.
  22. typedef interface IEnumGeneric IEnumGeneric;
  23. typedef IEnumGeneric * LPENUMGENERIC;
  24. interface IEnumGeneric: public IUnknown
  25. {
  26.     //  *** IEnumGeneric methods ***
  27.     STDMETHOD(Next)(ULONG celt, LPVOID rgelt, ULONG *pceltFetched) PURE;
  28.     STDMETHOD(Skip)(ULONG celt) PURE;
  29.     STDMETHOD(Reset)(void) PURE;
  30.     STDMETHOD(Clone)(LPENUMGENERIC *ppenm) PURE;
  31. };
  32.  
  33. class CXEnumGeneric:
  34.     public IEnumGeneric
  35. {
  36. private:
  37.     ULONG m_cRef;
  38.     LPVOID m_pvArray;
  39.     ULONG m_cElements;
  40.     ULONG m_CurrentElement;
  41.     LPENUMTYPE m_penumtype;
  42.     CXEnumGeneric *m_pClonedFrom;
  43.  
  44. public:
  45.     CXEnumGeneric(LPVOID pvArray, ULONG cElements, LPENUMTYPE penumtype);
  46.     ~CXEnumGeneric();
  47.  
  48.     //  *** IUnknown methods ***
  49.     STDMETHOD(QueryInterface)(REFIID riid, LPVOID *ppvObj);
  50.     STDMETHOD_(ULONG, AddRef)(void);
  51.     STDMETHOD_(ULONG, Release)(void);
  52.  
  53.     // *** IEnumGeneric methods ***
  54.     STDMETHOD(Next)(ULONG celt, LPVOID rgelt, ULONG *pceltFetched);
  55.     STDMETHOD(Skip)(ULONG celt);
  56.     STDMETHOD(Reset)(void);
  57.     STDMETHOD(Clone)(LPENUMGENERIC *ppenum);
  58. };
  59.