/*++ © 1998 Seagate Software, Inc. All rights reserved Module Name: wsbenum.h Abstract: These classes provides enumerators (iterators) for the collection classes. Author: Chuck Bardeen [cbardeen] 29-Oct-1996 Revision History: --*/ #include "resource.h" // main symbols #if !defined WSBENUM_INCL #define WSBENUM_INCL class CWsbIndexedEnum : public IEnumUnknown, public IWsbEnum, public IWsbEnumEx, public CComObjectRoot, public CComCoClass { public: CWsbIndexedEnum() {} BEGIN_COM_MAP(CWsbIndexedEnum) COM_INTERFACE_ENTRY(IWsbEnum) COM_INTERFACE_ENTRY(IWsbEnumEx) COM_INTERFACE_ENTRY(IEnumUnknown) END_COM_MAP() DECLARE_REGISTRY_RESOURCEID(IDR_CWsbIndexedEnum) // CComObjectRoot public: STDMETHOD(FinalConstruct)(void); // IWsbEnum public: STDMETHOD(First)(REFIID riid, void** ppElement); STDMETHOD(Next)(REFIID riid, void** ppElement); STDMETHOD(This)(REFIID riid, void** ppElement); STDMETHOD(Previous)(REFIID riid, void** ppElement); STDMETHOD(Last)(REFIID riid, void** ppElement); STDMETHOD(FindNext)(IUnknown* pCollectable, REFIID riid, void** ppElement); STDMETHOD(Find)(IUnknown* pCollectable, REFIID riid, void** ppElements); STDMETHOD(FindPrevious)(IUnknown* pCollectable, REFIID riid, void** ppElement); STDMETHOD(SkipToFirst)(void); STDMETHOD(SkipNext)(ULONG element); STDMETHOD(SkipTo)(ULONG index); STDMETHOD(SkipPrevious)(ULONG element); STDMETHOD(SkipToLast)(void); STDMETHOD(Init)(IWsbCollection* pCollection); STDMETHOD(Clone)(IWsbEnum** ppEnum); // IWsbEnumEx public: STDMETHOD(First)(ULONG element, REFIID riid, void** elements, ULONG* pElementsFetched); STDMETHOD(Next)(ULONG element, REFIID riid, void** elements, ULONG* pElementsFetched); STDMETHOD(This)(ULONG element, REFIID riid, void** elements, ULONG* pElementsFetched); STDMETHOD(Previous)(ULONG element, REFIID riid, void** elements, ULONG* pElementsFetched); STDMETHOD(Last)(ULONG element, REFIID riid, void** elements, ULONG* pElementsFetched); STDMETHOD(FindNext)(IUnknown* pCollectable, ULONG element, REFIID riid, void** elements, ULONG* elementsFetched); STDMETHOD(Find)(IUnknown* pCollectable, ULONG element, REFIID riid, void** elements, ULONG* elementsFetched); STDMETHOD(FindPrevious)(IUnknown* pCollectable, ULONG element, REFIID riid, void** elements, ULONG* elementsFetched); STDMETHOD(Clone)(IWsbEnumEx** ppEnum); // IEnumUnknown public: STDMETHOD(Next)(ULONG element, IUnknown** elements, ULONG* pElementsFetched); STDMETHOD(Skip)(ULONG element); STDMETHOD(Clone)(IEnumUnknown** ppEnum); // Shared public: STDMETHOD(Reset)(void); protected: CComPtr m_pCollection; ULONG m_currentIndex; }; #endif