windows-nt/Source/XPSP1/NT/base/fs/hsm/wsb/wsbenum.h
2020-09-26 16:20:57 +08:00

97 lines
2.8 KiB
C++

/*++
© 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