[PATCH 4/6] mshtml: COM cleanup for the IHlinkTarget iface.
Michael Stefaniuc
mstefani at redhat.de
Sun Dec 26 18:47:29 CST 2010
---
dlls/mshtml/hlink.c | 23 +++++++++++++----------
dlls/mshtml/htmldoc.c | 2 +-
dlls/mshtml/mshtml_private.h | 3 +--
3 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/dlls/mshtml/hlink.c b/dlls/mshtml/hlink.c
index 900a0ec..965318f 100644
--- a/dlls/mshtml/hlink.c
+++ b/dlls/mshtml/hlink.c
@@ -36,43 +36,46 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
* IHlinkTarget implementation
*/
-#define HLINKTRG_THIS(iface) DEFINE_THIS(HTMLDocument, HlinkTarget, iface)
+static inline HTMLDocument *impl_from_IHlinkTarget(IHlinkTarget *iface)
+{
+ return CONTAINING_RECORD(iface, HTMLDocument, IHlinkTarget_iface);
+}
static HRESULT WINAPI HlinkTarget_QueryInterface(IHlinkTarget *iface, REFIID riid, void **ppv)
{
- HTMLDocument *This = HLINKTRG_THIS(iface);
+ HTMLDocument *This = impl_from_IHlinkTarget(iface);
return htmldoc_query_interface(This, riid, ppv);
}
static ULONG WINAPI HlinkTarget_AddRef(IHlinkTarget *iface)
{
- HTMLDocument *This = HLINKTRG_THIS(iface);
+ HTMLDocument *This = impl_from_IHlinkTarget(iface);
return htmldoc_addref(This);
}
static ULONG WINAPI HlinkTarget_Release(IHlinkTarget *iface)
{
- HTMLDocument *This = HLINKTRG_THIS(iface);
+ HTMLDocument *This = impl_from_IHlinkTarget(iface);
return htmldoc_release(This);
}
static HRESULT WINAPI HlinkTarget_SetBrowseContext(IHlinkTarget *iface, IHlinkBrowseContext *pihlbc)
{
- HTMLDocument *This = HLINKTRG_THIS(iface);
+ HTMLDocument *This = impl_from_IHlinkTarget(iface);
FIXME("(%p)->(%p)\n", This, pihlbc);
return E_NOTIMPL;
}
static HRESULT WINAPI HlinkTarget_GetBrowseContext(IHlinkTarget *iface, IHlinkBrowseContext **ppihlbc)
{
- HTMLDocument *This = HLINKTRG_THIS(iface);
+ HTMLDocument *This = impl_from_IHlinkTarget(iface);
FIXME("(%p)->(%p)\n", This, ppihlbc);
return E_NOTIMPL;
}
static HRESULT WINAPI HlinkTarget_Navigate(IHlinkTarget *iface, DWORD grfHLNF, LPCWSTR pwzJumpLocation)
{
- HTMLDocument *This = HLINKTRG_THIS(iface);
+ HTMLDocument *This = impl_from_IHlinkTarget(iface);
TRACE("(%p)->(%08x %s)\n", This, grfHLNF, debugstr_w(pwzJumpLocation));
@@ -87,7 +90,7 @@ static HRESULT WINAPI HlinkTarget_Navigate(IHlinkTarget *iface, DWORD grfHLNF, L
static HRESULT WINAPI HlinkTarget_GetMoniker(IHlinkTarget *iface, LPCWSTR pwzLocation, DWORD dwAssign,
IMoniker **ppimkLocation)
{
- HTMLDocument *This = HLINKTRG_THIS(iface);
+ HTMLDocument *This = impl_from_IHlinkTarget(iface);
FIXME("(%p)->(%s %08x %p)\n", This, debugstr_w(pwzLocation), dwAssign, ppimkLocation);
return E_NOTIMPL;
}
@@ -95,7 +98,7 @@ static HRESULT WINAPI HlinkTarget_GetMoniker(IHlinkTarget *iface, LPCWSTR pwzLoc
static HRESULT WINAPI HlinkTarget_GetFriendlyName(IHlinkTarget *iface, LPCWSTR pwzLocation,
LPWSTR *ppwzFriendlyName)
{
- HTMLDocument *This = HLINKTRG_THIS(iface);
+ HTMLDocument *This = impl_from_IHlinkTarget(iface);
FIXME("(%p)->(%s %p)\n", This, debugstr_w(pwzLocation), ppwzFriendlyName);
return E_NOTIMPL;
}
@@ -113,5 +116,5 @@ static const IHlinkTargetVtbl HlinkTargetVtbl = {
void HTMLDocument_Hlink_Init(HTMLDocument *This)
{
- This->lpHlinkTargetVtbl = &HlinkTargetVtbl;
+ This->IHlinkTarget_iface.lpVtbl = &HlinkTargetVtbl;
}
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index ff07d0d..c25f7f3 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -1782,7 +1782,7 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
*ppv = &This->IOleControl_iface;
}else if(IsEqualGUID(&IID_IHlinkTarget, riid)) {
TRACE("(%p)->(IID_IHlinkTarget, %p)\n", This, ppv);
- *ppv = HLNKTARGET(This);
+ *ppv = &This->IHlinkTarget_iface;
}else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
*ppv = CONPTCONT(&This->cp_container);
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index b44dce4..97940e2 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -360,7 +360,7 @@ struct HTMLDocument {
IServiceProvider IServiceProvider_iface;
IOleCommandTarget IOleCommandTarget_iface;
IOleControl IOleControl_iface;
- const IHlinkTargetVtbl *lpHlinkTargetVtbl;
+ IHlinkTarget IHlinkTarget_iface;
IPersistStreamInit IPersistStreamInit_iface;
const IDispatchExVtbl *lpIDispatchExVtbl;
const ISupportErrorInfoVtbl *lpSupportErrorInfoVtbl;
@@ -625,7 +625,6 @@ struct HTMLDocumentNode {
#define HTMLWINDOW2(x) ((IHTMLWindow2*) &(x)->lpHTMLWindow2Vtbl)
#define HTMLWINDOW3(x) ((IHTMLWindow3*) &(x)->lpHTMLWindow3Vtbl)
#define HTMLWINDOW4(x) ((IHTMLWindow4*) &(x)->lpHTMLWindow4Vtbl)
-#define HLNKTARGET(x) ((IHlinkTarget*) &(x)->lpHlinkTargetVtbl)
#define CONPTCONT(x) ((IConnectionPointContainer*) &(x)->lpConnectionPointContainerVtbl)
#define CUSTOMDOC(x) ((ICustomDoc*) &(x)->lpCustomDocVtbl)
#define OBJSITE(x) ((IObjectWithSite*) &(x)->lpObjectWithSiteVtbl)
--
1.7.3.4
More information about the wine-patches
mailing list