static HRESULT WINAPI domselection_QueryInterface( IXMLDOMSelection *iface, REFIID riid, void** ppvObject ) { domselection *This = impl_from_IXMLDOMSelection( iface ); TRACE("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppvObject); if(!ppvObject) return E_INVALIDARG; if ( IsEqualGUID( riid, &IID_IUnknown ) || IsEqualGUID( riid, &IID_IXMLDOMNodeList ) || IsEqualGUID( riid, &IID_IXMLDOMSelection )) { *ppvObject = &This->IXMLDOMSelection_iface; } else if(dispex_query_interface(&This->dispex, riid, ppvObject)) { return *ppvObject ? S_OK : E_NOINTERFACE; } else { TRACE("interface %s not implemented\n", debugstr_guid(riid)); *ppvObject = NULL; return E_NOINTERFACE; } IXMLDOMSelection_AddRef( iface ); return S_OK; }
static HRESULT create_enumvariant(IXMLDOMSelection *selection, BOOL own, IUnknown **penum) { enumvariant *This; This = heap_alloc(sizeof(enumvariant)); if (!This) return E_OUTOFMEMORY; This->IEnumVARIANT_iface.lpVtbl = &EnumVARIANTVtbl; This->ref = 0; This->selection = selection; This->own = own; This->pos = 0; if (This->own) IXMLDOMSelection_AddRef(selection); return IEnumVARIANT_QueryInterface(&This->IEnumVARIANT_iface, &IID_IUnknown, (void**)penum); }
static HRESULT WINAPI domselection_QueryInterface( IXMLDOMSelection *iface, REFIID riid, void** ppvObject ) { domselection *This = impl_from_IXMLDOMSelection( iface ); TRACE("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppvObject); if(!ppvObject) return E_INVALIDARG; if ( IsEqualGUID( riid, &IID_IUnknown ) || IsEqualGUID( riid, &IID_IXMLDOMNodeList ) || IsEqualGUID( riid, &IID_IXMLDOMSelection )) { *ppvObject = &This->IXMLDOMSelection_iface; } else if (IsEqualGUID( riid, &IID_IEnumVARIANT )) { if (!This->enumvariant) { HRESULT hr = create_enumvariant(iface, FALSE, (IUnknown**)&This->enumvariant); if (FAILED(hr)) return hr; } return IEnumVARIANT_QueryInterface(This->enumvariant, &IID_IEnumVARIANT, ppvObject); } else if (dispex_query_interface(&This->dispex, riid, ppvObject)) { return *ppvObject ? S_OK : E_NOINTERFACE; } else { TRACE("interface %s not implemented\n", debugstr_guid(riid)); *ppvObject = NULL; return E_NOINTERFACE; } IXMLDOMSelection_AddRef( iface ); return S_OK; }