static ULONG WINAPI EnumOLEVERB_AddRef(IEnumOLEVERB *iface) { EnumOLEVERB *This = impl_from_IEnumOLEVERB(iface); LONG ref = InterlockedIncrement(&This->ref); TRACE("(%p) ref=%d\n", This, ref); return ref; }
static HRESULT WINAPI EnumOLEVERB_Reset(IEnumOLEVERB *iface) { EnumOLEVERB *This = impl_from_IEnumOLEVERB(iface); TRACE("(%p)\n", This); This->iter = 0; return S_OK; }
static HRESULT WINAPI EnumOLEVERB_Next(IEnumOLEVERB *iface, ULONG celt, OLEVERB *rgelt, ULONG *pceltFetched) { EnumOLEVERB *This = impl_from_IEnumOLEVERB(iface); TRACE("(%p)->(%u %p %p)\n", This, celt, rgelt, pceltFetched); if(pceltFetched) *pceltFetched = 0; return S_OK; }
static ULONG WINAPI EnumOLEVERB_Release(IEnumOLEVERB *iface) { EnumOLEVERB *This = impl_from_IEnumOLEVERB(iface); LONG ref = InterlockedDecrement(&This->ref); TRACE("(%p) ref=%d\n", This, ref); if(!ref) heap_free(This); return ref; }
static HRESULT WINAPI EnumOLEVERB_QueryInterface(IEnumOLEVERB *iface, REFIID riid, void **ppv) { EnumOLEVERB *This = impl_from_IEnumOLEVERB(iface); if(IsEqualGUID(&IID_IUnknown, riid)) { TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); *ppv = &This->IEnumOLEVERB_iface; }else if(IsEqualGUID(&IID_IEnumOLEVERB, riid)) { TRACE("(%p)->(IID_IEnumOLEVERB %p)\n", This, ppv); *ppv = &This->IEnumOLEVERB_iface; }else { WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); *ppv = NULL; return E_NOINTERFACE; } IUnknown_AddRef((IUnknown*)*ppv); return S_OK; }
static HRESULT WINAPI EnumOLEVERB_Next(IEnumOLEVERB *iface, ULONG celt, OLEVERB *rgelt, ULONG *pceltFetched) { EnumOLEVERB *This = impl_from_IEnumOLEVERB(iface); static const OLEVERB verbs[] = {{OLEIVERB_PRIMARY},{OLEIVERB_INPLACEACTIVATE},{OLEIVERB_UIACTIVATE},{OLEIVERB_SHOW},{OLEIVERB_HIDE}}; TRACE("(%p)->(%u %p %p)\n", This, celt, rgelt, pceltFetched); /* There are a few problems with this implementation, but that's how it seems to work in native. See tests. */ if(pceltFetched) *pceltFetched = 0; if(This->iter == ARRAY_SIZE(verbs)) return S_FALSE; if(celt) *rgelt = verbs[This->iter++]; return S_OK; }
static HRESULT WINAPI EnumOLEVERB_Clone(IEnumOLEVERB *iface, IEnumOLEVERB **ppenum) { EnumOLEVERB *This = impl_from_IEnumOLEVERB(iface); FIXME("(%p)->(%p)\n", This, ppenum); return E_NOTIMPL; }
static HRESULT WINAPI EnumOLEVERB_Skip(IEnumOLEVERB *iface, ULONG celt) { EnumOLEVERB *This = impl_from_IEnumOLEVERB(iface); TRACE("(%p)->(%u)\n", This, celt); return S_OK; }