You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.2 KiB
73 lines
2.2 KiB
#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
|