Re: [1/3] msxml3/xsl: Basic put_input() method for IXSLProcessor (try2)
Nikolay Sivov <nsivov(a)codeweavers.com> writes:
@@ -381,9 +386,40 @@ static HRESULT WINAPI xslprocessor_Invoke( static HRESULT WINAPI xslprocessor_put_input( IXSLProcessor *iface, VARIANT input ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); + IXMLDOMNode *input_node; + HRESULT hr;
- FIXME("(%p): stub\n", This); - return E_NOTIMPL; + TRACE("(%p)->(%s)\n", This, debugstr_variant(&input)); + + /* try IXMLDOMNode directly first */ + if (V_VT(&input) == VT_UNKNOWN) + hr = IUnknown_QueryInterface(V_UNKNOWN(&input), &IID_IXMLDOMNode, (void**)&input_node); + else if (V_VT(&input) == VT_DISPATCH) + hr = IDispatch_QueryInterface(V_DISPATCH(&input), &IID_IXMLDOMNode, (void**)&input_node); + + if (hr != S_OK)
You need to handle the default case somehow. -- Alexandre Julliard julliard(a)winehq.org
On 2/16/2011 16:19, Alexandre Julliard wrote:
Nikolay Sivov<nsivov(a)codeweavers.com> writes:
@@ -381,9 +386,40 @@ static HRESULT WINAPI xslprocessor_Invoke( static HRESULT WINAPI xslprocessor_put_input( IXSLProcessor *iface, VARIANT input ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); + IXMLDOMNode *input_node; + HRESULT hr;
- FIXME("(%p): stub\n", This); - return E_NOTIMPL; + TRACE("(%p)->(%s)\n", This, debugstr_variant(&input)); + + /* try IXMLDOMNode directly first */ + if (V_VT(&input) == VT_UNKNOWN) + hr = IUnknown_QueryInterface(V_UNKNOWN(&input),&IID_IXMLDOMNode, (void**)&input_node); + else if (V_VT(&input) == VT_DISPATCH) + hr = IDispatch_QueryInterface(V_DISPATCH(&input),&IID_IXMLDOMNode, (void**)&input_node); + + if (hr != S_OK) You need to handle the default case somehow. Default case is to load a document from a passed variant. If you mean uninitialized hr, I'll fix that in next try.
participants (2)
-
Alexandre Julliard -
Nikolay Sivov