Module: wine Branch: master Commit: 27fea2eefcf5dd99a8f26d0179d630e63bd29670 URL: https://gitlab.winehq.org/wine/wine/-/commit/27fea2eefcf5dd99a8f26d0179d630e...
Author: Jacek Caban jacek@codeweavers.com Date: Mon May 13 13:52:06 2024 +0200
mshtml: Introduce DISPEX_IDISPATCH_IMPL.
And use it for HTMLRect object implementation.
---
dlls/mshtml/htmlelem.c | 100 +------------------------------------------ dlls/mshtml/mshtml_private.h | 35 +++++++++++++++ 2 files changed, 37 insertions(+), 98 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index aa635200f7f..b2d1c544d0a 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -537,57 +537,7 @@ static inline HTMLRect *impl_from_IHTMLRect(IHTMLRect *iface) return CONTAINING_RECORD(iface, HTMLRect, IHTMLRect_iface); }
-static HRESULT WINAPI HTMLRect_QueryInterface(IHTMLRect *iface, REFIID riid, void **ppv) -{ - HTMLRect *This = impl_from_IHTMLRect(iface); - return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); -} - -static ULONG WINAPI HTMLRect_AddRef(IHTMLRect *iface) -{ - HTMLRect *This = impl_from_IHTMLRect(iface); - return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); -} - -static ULONG WINAPI HTMLRect_Release(IHTMLRect *iface) -{ - HTMLRect *This = impl_from_IHTMLRect(iface); - return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); -} - -static HRESULT WINAPI HTMLRect_GetTypeInfoCount(IHTMLRect *iface, UINT *pctinfo) -{ - HTMLRect *This = impl_from_IHTMLRect(iface); - FIXME("(%p)->(%p)\n", This, pctinfo); - return E_NOTIMPL; -} - -static HRESULT WINAPI HTMLRect_GetTypeInfo(IHTMLRect *iface, UINT iTInfo, - LCID lcid, ITypeInfo **ppTInfo) -{ - HTMLRect *This = impl_from_IHTMLRect(iface); - - return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo); -} - -static HRESULT WINAPI HTMLRect_GetIDsOfNames(IHTMLRect *iface, REFIID riid, - LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) -{ - HTMLRect *This = impl_from_IHTMLRect(iface); - - return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames, - lcid, rgDispId); -} - -static HRESULT WINAPI HTMLRect_Invoke(IHTMLRect *iface, DISPID dispIdMember, - REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, - VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) -{ - HTMLRect *This = impl_from_IHTMLRect(iface); - - return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, - pDispParams, pVarResult, pExcepInfo, puArgErr); -} +DISPEX_IDISPATCH_IMPL(HTMLRect, IHTMLRect, impl_from_IHTMLRect(iface)->dispex)
static HRESULT WINAPI HTMLRect_put_left(IHTMLRect *iface, LONG v) { @@ -694,53 +644,7 @@ static inline HTMLRect *impl_from_IHTMLRect2(IHTMLRect2 *iface) return CONTAINING_RECORD(iface, HTMLRect, IHTMLRect2_iface); }
-static HRESULT WINAPI HTMLRect2_QueryInterface(IHTMLRect2 *iface, REFIID riid, void **ppv) -{ - HTMLRect *This = impl_from_IHTMLRect2(iface); - return IHTMLRect_QueryInterface(&This->IHTMLRect_iface, riid, ppv); -} - -static ULONG WINAPI HTMLRect2_AddRef(IHTMLRect2 *iface) -{ - HTMLRect *This = impl_from_IHTMLRect2(iface); - return IHTMLRect_AddRef(&This->IHTMLRect_iface); -} - -static ULONG WINAPI HTMLRect2_Release(IHTMLRect2 *iface) -{ - HTMLRect *This = impl_from_IHTMLRect2(iface); - return IHTMLRect_Release(&This->IHTMLRect_iface); -} - -static HRESULT WINAPI HTMLRect2_GetTypeInfoCount(IHTMLRect2 *iface, UINT *pctinfo) -{ - HTMLRect *This = impl_from_IHTMLRect2(iface); - return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo); -} - -static HRESULT WINAPI HTMLRect2_GetTypeInfo(IHTMLRect2 *iface, UINT iTInfo, - LCID lcid, ITypeInfo **ppTInfo) -{ - HTMLRect *This = impl_from_IHTMLRect2(iface); - return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo); -} - -static HRESULT WINAPI HTMLRect2_GetIDsOfNames(IHTMLRect2 *iface, REFIID riid, - LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) -{ - HTMLRect *This = impl_from_IHTMLRect2(iface); - return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames, - lcid, rgDispId); -} - -static HRESULT WINAPI HTMLRect2_Invoke(IHTMLRect2 *iface, DISPID dispIdMember, - REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, - VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) -{ - HTMLRect *This = impl_from_IHTMLRect2(iface); - return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, - pDispParams, pVarResult, pExcepInfo, puArgErr); -} +DISPEX_IDISPATCH_IMPL(HTMLRect2, IHTMLRect2, impl_from_IHTMLRect2(iface)->dispex)
static HRESULT WINAPI HTMLRect2_get_width(IHTMLRect2 *iface, FLOAT *p) { diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 36d6dfd646a..1d4f005ba11 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -412,6 +412,41 @@ struct DispatchEx { dispex_dynamic_data_t *dynamic_data; };
+#define DISPEX_IDISPATCH_IMPL(prefix, iface_name, dispex) \ + static HRESULT WINAPI prefix##_QueryInterface(iface_name *iface, REFIID riid, void **ppv) \ + { \ + return IDispatchEx_QueryInterface(&(dispex).IDispatchEx_iface, riid, ppv); \ + } \ + static ULONG WINAPI prefix##_AddRef(iface_name *iface) \ + { \ + return IDispatchEx_AddRef(&(dispex).IDispatchEx_iface); \ + } \ + static ULONG WINAPI prefix##_Release(iface_name *iface) \ + { \ + return IDispatchEx_Release(&(dispex).IDispatchEx_iface); \ + } \ + static HRESULT WINAPI prefix##_GetTypeInfoCount(iface_name *iface, UINT *count) \ + { \ + return IDispatchEx_GetTypeInfoCount(&(dispex).IDispatchEx_iface, count); \ + } \ + static HRESULT WINAPI prefix##_GetTypeInfo(iface_name *iface, \ + UINT index, LCID lcid, ITypeInfo **ret) \ + { \ + return IDispatchEx_GetTypeInfo(&(dispex).IDispatchEx_iface, index, lcid, ret); \ + } \ + static HRESULT WINAPI prefix##_GetIDsOfNames(iface_name *iface, REFIID riid, \ + LPOLESTR *names, UINT count, LCID lcid, DISPID *dispid) \ + { \ + return IDispatchEx_GetIDsOfNames(&(dispex).IDispatchEx_iface, \ + riid, names, count, lcid, dispid); \ + } \ + static HRESULT WINAPI prefix##_Invoke(iface_name *iface, DISPID dispid, REFIID riid, \ + LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *res, EXCEPINFO *ei, UINT *err) \ + { \ + return IDispatchEx_Invoke(&(dispex).IDispatchEx_iface, dispid, \ + riid, lcid, flags, params, res, ei, err); \ + } + typedef struct { void *vtbl; int ref_flags;