mshtml: Introduce DISPEX_IDISPATCH_IMPL.

And use it for HTMLRect object implementation.
This commit is contained in:
Jacek Caban 2024-05-13 13:52:06 +02:00 committed by Alexandre Julliard
parent 7b15890fe8
commit 27fea2eefc
2 changed files with 37 additions and 98 deletions

View file

@ -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)
{

View file

@ -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;