static HRESULT WINAPI domselection_clone( IXMLDOMSelection* iface, IXMLDOMSelection **node) { domselection *This = impl_from_IXMLDOMSelection( iface ); FIXME("(%p)->(%p)\n", This, node); return E_NOTIMPL; }
static HRESULT WINAPI domselection_put_expr( IXMLDOMSelection* iface, BSTR p) { domselection *This = impl_from_IXMLDOMSelection( iface ); FIXME("(%p)->(%s)\n", This, debugstr_w(p)); return E_NOTIMPL; }
static HRESULT WINAPI domselection_get_expr( IXMLDOMSelection* iface, BSTR *p) { domselection *This = impl_from_IXMLDOMSelection( iface ); FIXME("(%p)->(%p)\n", This, p); return E_NOTIMPL; }
static HRESULT WINAPI domselection_get__newEnum( IXMLDOMSelection* iface, IUnknown** ppUnk) { domselection *This = impl_from_IXMLDOMSelection( iface ); FIXME("(%p)->(%p)\n", This, ppUnk); return E_NOTIMPL; }
static HRESULT WINAPI domselection_putref_context( IXMLDOMSelection* iface, IXMLDOMNode *node) { domselection *This = impl_from_IXMLDOMSelection( iface ); FIXME("(%p)->(%p)\n", This, node); return E_NOTIMPL; }
static ULONG WINAPI domselection_AddRef( IXMLDOMSelection *iface ) { domselection *This = impl_from_IXMLDOMSelection( iface ); ULONG ref = InterlockedIncrement( &This->ref ); TRACE("(%p)->(%d)\n", This, ref); return ref; }
static HRESULT WINAPI domselection_setProperty( IXMLDOMSelection* iface, BSTR p, VARIANT var) { domselection *This = impl_from_IXMLDOMSelection( iface ); FIXME("(%p)->(%s %s)\n", This, debugstr_w(p), debugstr_variant(&var)); return E_NOTIMPL; }
static HRESULT WINAPI domselection_reset( IXMLDOMSelection* iface) { domselection *This = impl_from_IXMLDOMSelection( iface ); TRACE("%p\n", This); This->resultPos = 0; return S_OK; }
static HRESULT WINAPI domselection_matches( IXMLDOMSelection* iface, IXMLDOMNode *node, IXMLDOMNode **out_node) { domselection *This = impl_from_IXMLDOMSelection( iface ); FIXME("(%p)->(%p %p)\n", This, node, out_node); return E_NOTIMPL; }
static HRESULT WINAPI domselection_GetTypeInfo( IXMLDOMSelection *iface, UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo ) { domselection *This = impl_from_IXMLDOMSelection( iface ); return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo); }
static HRESULT WINAPI domselection_get__newEnum( IXMLDOMSelection* iface, IUnknown** enumv) { domselection *This = impl_from_IXMLDOMSelection( iface ); TRACE("(%p)->(%p)\n", This, enumv); return create_enumvariant((IUnknown*)iface, TRUE, &selection_enumvariant, (IEnumVARIANT**)enumv); }
static HRESULT WINAPI domselection_get__newEnum( IXMLDOMSelection* iface, IUnknown** ppUnk) { domselection *This = impl_from_IXMLDOMSelection( iface ); TRACE("(%p)->(%p)\n", This, ppUnk); return create_enumvariant(iface, TRUE, ppUnk); }
static HRESULT WINAPI domselection_GetIDsOfNames( IXMLDOMSelection *iface, REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId ) { domselection *This = impl_from_IXMLDOMSelection( iface ); return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId); }
static HRESULT WINAPI domselection_GetTypeInfoCount( IXMLDOMSelection *iface, UINT* pctinfo ) { domselection *This = impl_from_IXMLDOMSelection( iface ); TRACE("(%p)->(%p)\n", This, pctinfo); *pctinfo = 1; return S_OK; }
static HRESULT WINAPI domselection_get_length( IXMLDOMSelection* iface, LONG* listLength) { domselection *This = impl_from_IXMLDOMSelection( iface ); TRACE("(%p)->(%p)\n", This, listLength); if(!listLength) return E_INVALIDARG; *listLength = xmlXPathNodeSetGetLength(This->result->nodesetval); return S_OK; }
static HRESULT WINAPI domselection_Invoke( IXMLDOMSelection *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr ) { domselection *This = impl_from_IXMLDOMSelection( iface ); return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); }
static HRESULT WINAPI domselection_GetTypeInfo( IXMLDOMSelection *iface, UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo ) { domselection *This = impl_from_IXMLDOMSelection( iface ); HRESULT hr; TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo); hr = get_typeinfo(IXMLDOMSelection_tid, ppTInfo); return hr; }
static ULONG WINAPI domselection_Release( IXMLDOMSelection *iface ) { domselection *This = impl_from_IXMLDOMSelection( iface ); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p)->(%d)\n", This, ref); if ( ref == 0 ) { xmlXPathFreeObject(This->result); xmldoc_release(This->node->doc); heap_free(This); } return ref; }
static HRESULT domselection_get_dispid(IUnknown *iface, BSTR name, DWORD flags, DISPID *dispid) { domselection *This = impl_from_IXMLDOMSelection( (IXMLDOMSelection*)iface ); WCHAR *ptr; int idx = 0; for(ptr = name; *ptr && isdigitW(*ptr); ptr++) idx = idx*10 + (*ptr-'0'); if(*ptr) return DISP_E_UNKNOWNNAME; if(idx >= xmlXPathNodeSetGetLength(This->result->nodesetval)) return DISP_E_UNKNOWNNAME; *dispid = MSXML_DISPID_CUSTOM_MIN + idx; TRACE("ret %x\n", *dispid); return S_OK; }
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; }
static HRESULT WINAPI domselection_nextNode( IXMLDOMSelection* iface, IXMLDOMNode** nextItem) { domselection *This = impl_from_IXMLDOMSelection( iface ); TRACE("(%p)->(%p)\n", This, nextItem ); if(!nextItem) return E_INVALIDARG; *nextItem = NULL; if (This->resultPos >= xmlXPathNodeSetGetLength(This->result->nodesetval)) return S_FALSE; *nextItem = create_node(xmlXPathNodeSetItem(This->result->nodesetval, This->resultPos)); This->resultPos++; return S_OK; }
static HRESULT WINAPI domselection_get_item( IXMLDOMSelection* iface, LONG index, IXMLDOMNode** listItem) { domselection *This = impl_from_IXMLDOMSelection( iface ); TRACE("(%p)->(%d %p)\n", This, index, listItem); if(!listItem) return E_INVALIDARG; *listItem = NULL; if (index < 0 || index >= xmlXPathNodeSetGetLength(This->result->nodesetval)) return S_FALSE; *listItem = create_node(xmlXPathNodeSetItem(This->result->nodesetval, index)); This->resultPos = index + 1; return S_OK; }