home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-01-02 | 1.6 KB | 59 lines | [TEXT/????] |
- //
- // XENUMGEN.H
- //
- // Copyright (C) Microsoft Corporation, 1996
- //
-
- typedef void (*LPFNENUMCOPYELEMENT)(LPVOID pTo, LPVOID pFrom);
- typedef void (*LPFNENUMRELEASEARRAY)(LPVOID pvArray, ULONG cElements);
-
- typedef struct _ENUMTYPE {
- const IID *piid;
- ULONG cbElement;
- LPFNENUMCOPYELEMENT pfnCopyElement;
- LPFNENUMRELEASEARRAY pfnReleaseArray;
- } ENUMTYPE, * LPENUMTYPE;
-
- extern ENUMTYPE g_EnumUnknown;
- extern ENUMTYPE g_EnumFORMATETC;
-
- // All enumerators have the same basic interface signature, so we can safely
- // cast the following interface to any other enumerator interface.
- typedef interface IEnumGeneric IEnumGeneric;
- typedef IEnumGeneric * LPENUMGENERIC;
- interface IEnumGeneric: public IUnknown
- {
- // *** IEnumGeneric methods ***
- STDMETHOD(Next)(ULONG celt, LPVOID rgelt, ULONG *pceltFetched) PURE;
- STDMETHOD(Skip)(ULONG celt) PURE;
- STDMETHOD(Reset)(void) PURE;
- STDMETHOD(Clone)(LPENUMGENERIC *ppenm) PURE;
- };
-
- class CXEnumGeneric:
- public IEnumGeneric
- {
- private:
- ULONG m_cRef;
- LPVOID m_pvArray;
- ULONG m_cElements;
- ULONG m_CurrentElement;
- LPENUMTYPE m_penumtype;
- CXEnumGeneric *m_pClonedFrom;
-
- public:
- CXEnumGeneric(LPVOID pvArray, ULONG cElements, LPENUMTYPE penumtype);
- ~CXEnumGeneric();
-
- // *** IUnknown methods ***
- STDMETHOD(QueryInterface)(REFIID riid, LPVOID *ppvObj);
- STDMETHOD_(ULONG, AddRef)(void);
- STDMETHOD_(ULONG, Release)(void);
-
- // *** IEnumGeneric methods ***
- STDMETHOD(Next)(ULONG celt, LPVOID rgelt, ULONG *pceltFetched);
- STDMETHOD(Skip)(ULONG celt);
- STDMETHOD(Reset)(void);
- STDMETHOD(Clone)(LPENUMGENERIC *ppenum);
- };
-