static HRESULT WINAPI dimimpl_QueryInterface( IXMLDOMImplementation *iface, REFIID riid, void** ppvObject ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject); if ( IsEqualGUID( riid, &IID_IXMLDOMImplementation ) || 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 { TRACE("Unsupported interface %s\n", debugstr_guid(riid)); *ppvObject = NULL; return E_NOINTERFACE; } IXMLDOMImplementation_AddRef( iface ); return S_OK; }
static HRESULT WINAPI dimimpl_GetTypeInfoCount( IXMLDOMImplementation *iface, UINT* pctinfo ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo); }
static ULONG WINAPI dimimpl_AddRef( IXMLDOMImplementation *iface ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); ULONG ref = InterlockedIncrement( &This->ref ); TRACE("(%p)->(%d)\n", This, ref); return ref; }
static HRESULT WINAPI dimimpl_GetTypeInfo( IXMLDOMImplementation *iface, UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo); }
static HRESULT WINAPI dimimpl_GetIDsOfNames( IXMLDOMImplementation *iface, REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId); }
static HRESULT WINAPI dimimpl_Invoke( IXMLDOMImplementation *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); }
static ULONG WINAPI dimimpl_Release( IXMLDOMImplementation *iface ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); ULONG ref = InterlockedDecrement( &This->ref ); TRACE("(%p)->(%d)\n", This, ref); if ( ref == 0 ) heap_free( This ); return ref; }
static HRESULT WINAPI dimimpl_GetTypeInfoCount( IXMLDOMImplementation *iface, UINT* pctinfo ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); TRACE("(%p)->(%p)\n", This, pctinfo); *pctinfo = 1; return S_OK; }
static ULONG WINAPI dimimpl_Release( IXMLDOMImplementation *iface ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); ULONG ref; ref = InterlockedDecrement( &This->ref ); if ( ref == 0 ) { heap_free( This ); } return ref; }
static HRESULT WINAPI dimimpl_GetTypeInfo( IXMLDOMImplementation *iface, UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); HRESULT hr; TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo); hr = get_typeinfo(IXMLDOMImplementation_tid, ppTInfo); return hr; }
static HRESULT WINAPI dimimpl_Invoke( IXMLDOMImplementation *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); ITypeInfo *typeinfo; HRESULT hr; TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); hr = get_typeinfo(IXMLDOMImplementation_tid, &typeinfo); if(SUCCEEDED(hr)) { hr = ITypeInfo_Invoke(typeinfo, &This->IXMLDOMImplementation_iface, dispIdMember, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); ITypeInfo_Release(typeinfo); } return hr; }
static HRESULT WINAPI dimimpl_GetIDsOfNames( IXMLDOMImplementation *iface, REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); ITypeInfo *typeinfo; HRESULT hr; TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); if(!rgszNames || cNames == 0 || !rgDispId) return E_INVALIDARG; hr = get_typeinfo(IXMLDOMImplementation_tid, &typeinfo); if(SUCCEEDED(hr)) { hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId); ITypeInfo_Release(typeinfo); } return hr; }
static HRESULT WINAPI dimimpl_QueryInterface( IXMLDOMImplementation *iface, REFIID riid, void** ppvObject ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); TRACE("%p %s %p\n", This, debugstr_guid(riid), ppvObject); if ( IsEqualGUID( riid, &IID_IXMLDOMImplementation ) || IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IUnknown ) ) { *ppvObject = iface; } else { FIXME("Unsupported interface %s\n", debugstr_guid(riid)); return E_NOINTERFACE; } IXMLDOMImplementation_AddRef( iface ); return S_OK; }
static ULONG WINAPI dimimpl_AddRef( IXMLDOMImplementation *iface ) { domimpl *This = impl_from_IXMLDOMImplementation( iface ); return InterlockedIncrement( &This->ref ); }