Windows2003-3790/inetcore/outlookexpress/msoert/listintr.h
2020-09-30 16:53:55 +02:00

74 lines
2.2 KiB
C

#ifndef __LISTINTR_H
#define __LISTINTR_H
typedef enum tagLISTDIRECTION {
LD_FORWARD = 0,
LD_REVERSE = 1,
LD_LASTDIRECTION = 2
} LISTDIRECTION;
typedef void (*IVPL_COMPAREFUNCTYPE)(void *ptrA, void *ptrB, bool *pfALessThanB, DWORD_PTR dwCookie);
typedef void (*IVPL_FREEITEMFUNCTYPE)(void *ptr);
typedef void (*IUL_COMPAREFUNCTYPE)(IUnknown *pIUnkA, IUnknown *pIUnkB, bool *pfALessThanB, DWORD_PTR dwCookie);
interface IVoidPtrList;
interface IUnknownList;
HRESULT IVoidPtrList_CreateInstance(IVoidPtrList** ppList);
HRESULT IUnknownList_CreateInstance(IUnknownList** ppList);
interface IVoidPtrList : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE Init(
IVPL_COMPAREFUNCTYPE pCompareFunc,
DWORD_PTR dwCookie,
IVPL_FREEITEMFUNCTYPE pFreeItemFunc,
DWORD dwInitSize) PURE;
virtual HRESULT STDMETHODCALLTYPE GetCount(DWORD *pdwCount) PURE;
virtual HRESULT STDMETHODCALLTYPE ClearList(void) PURE;
virtual HRESULT STDMETHODCALLTYPE AddItem(LPVOID ptr, DWORD *pdwHandle) PURE;
virtual HRESULT STDMETHODCALLTYPE RemoveItem(DWORD dwHandle) PURE;
virtual HRESULT STDMETHODCALLTYPE GetNext(
LISTDIRECTION bDirection,
LPVOID *pptr,
DWORD *pdwHandle) PURE;
virtual HRESULT STDMETHODCALLTYPE SkipNext(LISTDIRECTION bDirection, DWORD *pdwHandle) PURE;
virtual HRESULT STDMETHODCALLTYPE Resort(void) PURE;
};
interface IUnknownList : public IUnknown
{
public:
// IUnknownList members
virtual HRESULT STDMETHODCALLTYPE Init(IUL_COMPAREFUNCTYPE pCompareFunc, DWORD_PTR dwCookie, DWORD dwInitSize) PURE;
virtual HRESULT STDMETHODCALLTYPE GetCount(DWORD *pdwCount) PURE;
virtual HRESULT STDMETHODCALLTYPE ClearList(void) PURE;
virtual HRESULT STDMETHODCALLTYPE AddItem(IUnknown *pIUnk, DWORD *pdwHandle) PURE;
virtual HRESULT STDMETHODCALLTYPE RemoveItem(DWORD dwHandle) PURE;
virtual HRESULT STDMETHODCALLTYPE GetNext(LISTDIRECTION bDirection, IUnknown **ppIUnk, DWORD *pdwHandle) PURE;
virtual HRESULT STDMETHODCALLTYPE SkipNext(LISTDIRECTION bDirection, DWORD *pdwHandle) PURE;
virtual HRESULT STDMETHODCALLTYPE Resort(void) PURE;
};
#endif