97 lines
2.8 KiB
C
97 lines
2.8 KiB
C
|
/*++
|
|||
|
|
|||
|
<EFBFBD> 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<CWsbIndexedEnum,&CLSID_CWsbIndexedEnum>
|
|||
|
{
|
|||
|
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<IWsbIndexedCollection> m_pCollection;
|
|||
|
ULONG m_currentIndex;
|
|||
|
};
|
|||
|
|
|||
|
#endif
|