static ULONG WINAPI xslprocessor_AddRef( IXSLProcessor *iface ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); ULONG ref = InterlockedIncrement( &This->ref ); TRACE("(%p)->(%d)\n", This, ref); return ref; }
static HRESULT WINAPI xslprocessor_get_input( IXSLProcessor *iface, VARIANT *input ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); FIXME("(%p)->(%p): stub\n", This, input); return E_NOTIMPL; }
/*** IXSLProcessor ***/ static HRESULT WINAPI xslprocessor_QueryInterface( IXSLProcessor *iface, REFIID riid, void** ppvObject ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject); if ( IsEqualGUID( riid, &IID_IXSLProcessor ) || IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IUnknown ) ) { *ppvObject = iface; } else if (dispex_query_interface(&This->dispex, riid, ppvObject)) { return *ppvObject ? S_OK : E_NOINTERFACE; } else { FIXME("Unsupported interface %s\n", debugstr_guid(riid)); *ppvObject = NULL; return E_NOINTERFACE; } IUnknown_AddRef((IUnknown*)*ppvObject); return S_OK; }
static HRESULT WINAPI xslprocessor_GetIDsOfNames( IXSLProcessor *iface, REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId); }
static HRESULT WINAPI xslprocessor_GetTypeInfo( IXSLProcessor *iface, UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo); }
static HRESULT WINAPI xslprocessor_Invoke( IXSLProcessor *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); }
static ULONG WINAPI xslprocessor_Release( IXSLProcessor *iface ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); ULONG ref = InterlockedDecrement( &This->ref ); TRACE("(%p)->(%d)\n", This, ref); if ( ref == 0 ) { if (This->input) IXMLDOMNode_Release(This->input); if (This->output) IStream_Release(This->output); SysFreeString(This->outstr); IXSLTemplate_Release(&This->stylesheet->IXSLTemplate_iface); release_dispex(&This->dispex); heap_free( This ); } return ref; }
static ULONG WINAPI xslprocessor_Release( IXSLProcessor *iface ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); ULONG ref = InterlockedDecrement( &This->ref ); TRACE("(%p)->(%d)\n", This, ref); if ( ref == 0 ) { struct xslprocessor_par *par, *par2; if (This->input) IXMLDOMNode_Release(This->input); if (This->output) IStream_Release(This->output); SysFreeString(This->outstr); LIST_FOR_EACH_ENTRY_SAFE(par, par2, &This->params.list, struct xslprocessor_par, entry) xslprocessor_par_free(&This->params, par); IXSLTemplate_Release(&This->stylesheet->IXSLTemplate_iface); heap_free( This ); } return ref; }
static HRESULT WINAPI xslprocessor_put_input( IXSLProcessor *iface, VARIANT input ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); IXMLDOMNode *input_node; HRESULT hr; 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); else { IXMLDOMDocument *doc; hr = DOMDocument_create(MSXML_DEFAULT, (void**)&doc); if (hr == S_OK) { VARIANT_BOOL b; hr = IXMLDOMDocument_load(doc, input, &b); if (hr == S_OK) hr = IXMLDOMDocument_QueryInterface(doc, &IID_IXMLDOMNode, (void**)&input_node); IXMLDOMDocument_Release(doc); } } if (hr == S_OK) { if (This->input) IXMLDOMNode_Release(This->input); This->input = input_node; } return hr; }
static HRESULT WINAPI xslprocessor_GetTypeInfoCount( IXSLProcessor *iface, UINT* pctinfo ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo); }
return hr; } static HRESULT WINAPI xslprocessor_get_input( IXSLProcessor *iface, VARIANT *input ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); FIXME("(%p)->(%p): stub\n", This, input); return E_NOTIMPL; } static HRESULT WINAPI xslprocessor_get_ownerTemplate( IXSLProcessor *iface, IXSLTemplate **template) { xslprocessor *This = impl_from_IXSLProcessor( iface ); FIXME("(%p)->(%p): stub\n", This, template); return E_NOTIMPL; } static HRESULT WINAPI xslprocessor_setStartMode( IXSLProcessor *iface, BSTR p, BSTR uri) { xslprocessor *This = impl_from_IXSLProcessor( iface ); FIXME("(%p)->(%s %s): stub\n", This, debugstr_w(p), debugstr_w(uri)); return E_NOTIMPL; }