Michael Stefaniuc : mshtml: Use an iface instead of a vtbl pointer in HTMLRect.

Alexandre Julliard julliard at winehq.org
Mon Dec 6 13:18:33 CST 2010


Module: wine
Branch: master
Commit: 28c0256635ad704c122b2c9231f730fdc45585d4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=28c0256635ad704c122b2c9231f730fdc45585d4

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Mon Dec  6 16:44:58 2010 +0100

mshtml: Use an iface instead of a vtbl pointer in HTMLRect.

---

 dlls/mshtml/htmlelem2.c |   51 +++++++++++++++++++++++------------------------
 1 files changed, 25 insertions(+), 26 deletions(-)

diff --git a/dlls/mshtml/htmlelem2.c b/dlls/mshtml/htmlelem2.c
index 0c20723..f6d7bfc 100644
--- a/dlls/mshtml/htmlelem2.c
+++ b/dlls/mshtml/htmlelem2.c
@@ -36,27 +36,28 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
 
 typedef struct {
     DispatchEx dispex;
-    const IHTMLRectVtbl *lpIHTMLRectVtbl;
+    IHTMLRect IHTMLRect_iface;
 
     LONG ref;
 
     nsIDOMClientRect *nsrect;
 } HTMLRect;
 
-#define HTMLRECT(x)  ((IHTMLRect*)  &(x)->lpIHTMLRectVtbl)
-
-#define HTMLRECT_THIS(iface) DEFINE_THIS(HTMLRect, IHTMLRect, iface)
+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 = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
 
     if(IsEqualGUID(&IID_IUnknown, riid)) {
         TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
-        *ppv = HTMLRECT(This);
+        *ppv = &This->IHTMLRect_iface;
     }else if(IsEqualGUID(&IID_IHTMLRect, riid)) {
         TRACE("(%p)->(IID_IHTMLRect %p)\n", This, ppv);
-        *ppv = HTMLRECT(This);
+        *ppv = &This->IHTMLRect_iface;
     }else if(dispex_query_interface(&This->dispex, riid, ppv)) {
         return *ppv ? S_OK : E_NOINTERFACE;
     }else {
@@ -71,7 +72,7 @@ static HRESULT WINAPI HTMLRect_QueryInterface(IHTMLRect *iface, REFIID riid, voi
 
 static ULONG WINAPI HTMLRect_AddRef(IHTMLRect *iface)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
     LONG ref = InterlockedIncrement(&This->ref);
 
     TRACE("(%p) ref=%d\n", This, ref);
@@ -81,7 +82,7 @@ static ULONG WINAPI HTMLRect_AddRef(IHTMLRect *iface)
 
 static ULONG WINAPI HTMLRect_Release(IHTMLRect *iface)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
     LONG ref = InterlockedDecrement(&This->ref);
 
     TRACE("(%p) ref=%d\n", This, ref);
@@ -97,7 +98,7 @@ static ULONG WINAPI HTMLRect_Release(IHTMLRect *iface)
 
 static HRESULT WINAPI HTMLRect_GetTypeInfoCount(IHTMLRect *iface, UINT *pctinfo)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
     FIXME("(%p)->(%p)\n", This, pctinfo);
     return E_NOTIMPL;
 }
@@ -105,7 +106,7 @@ static HRESULT WINAPI HTMLRect_GetTypeInfoCount(IHTMLRect *iface, UINT *pctinfo)
 static HRESULT WINAPI HTMLRect_GetTypeInfo(IHTMLRect *iface, UINT iTInfo,
         LCID lcid, ITypeInfo **ppTInfo)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
 
     return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->dispex), iTInfo, lcid, ppTInfo);
 }
@@ -113,7 +114,7 @@ static HRESULT WINAPI HTMLRect_GetTypeInfo(IHTMLRect *iface, UINT iTInfo,
 static HRESULT WINAPI HTMLRect_GetIDsOfNames(IHTMLRect *iface, REFIID riid,
         LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
 
     return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->dispex), riid, rgszNames, cNames, lcid, rgDispId);
 }
@@ -122,7 +123,7 @@ 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 = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
 
     return IDispatchEx_Invoke(DISPATCHEX(&This->dispex), dispIdMember, riid, lcid, wFlags, pDispParams,
             pVarResult, pExcepInfo, puArgErr);
@@ -130,14 +131,14 @@ static HRESULT WINAPI HTMLRect_Invoke(IHTMLRect *iface, DISPID dispIdMember,
 
 static HRESULT WINAPI HTMLRect_put_left(IHTMLRect *iface, LONG v)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
     FIXME("(%p)->(%d)\n", This, v);
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI HTMLRect_get_left(IHTMLRect *iface, LONG *p)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
     float left;
     nsresult nsres;
 
@@ -155,14 +156,14 @@ static HRESULT WINAPI HTMLRect_get_left(IHTMLRect *iface, LONG *p)
 
 static HRESULT WINAPI HTMLRect_put_top(IHTMLRect *iface, LONG v)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
     FIXME("(%p)->(%d)\n", This, v);
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI HTMLRect_get_top(IHTMLRect *iface, LONG *p)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
     float top;
     nsresult nsres;
 
@@ -180,14 +181,14 @@ static HRESULT WINAPI HTMLRect_get_top(IHTMLRect *iface, LONG *p)
 
 static HRESULT WINAPI HTMLRect_put_right(IHTMLRect *iface, LONG v)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
     FIXME("(%p)->(%d)\n", This, v);
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI HTMLRect_get_right(IHTMLRect *iface, LONG *p)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
     float right;
     nsresult nsres;
 
@@ -205,14 +206,14 @@ static HRESULT WINAPI HTMLRect_get_right(IHTMLRect *iface, LONG *p)
 
 static HRESULT WINAPI HTMLRect_put_bottom(IHTMLRect *iface, LONG v)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
     FIXME("(%p)->(%d)\n", This, v);
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI HTMLRect_get_bottom(IHTMLRect *iface, LONG *p)
 {
-    HTMLRect *This = HTMLRECT_THIS(iface);
+    HTMLRect *This = impl_from_IHTMLRect(iface);
     float bottom;
     nsresult nsres;
 
@@ -228,8 +229,6 @@ static HRESULT WINAPI HTMLRect_get_bottom(IHTMLRect *iface, LONG *p)
     return S_OK;
 }
 
-#undef HTMLRECT_THIS
-
 static const IHTMLRectVtbl HTMLRectVtbl = {
     HTMLRect_QueryInterface,
     HTMLRect_AddRef,
@@ -267,15 +266,15 @@ static HRESULT create_html_rect(nsIDOMClientRect *nsrect, IHTMLRect **ret)
     if(!rect)
         return E_OUTOFMEMORY;
 
-    rect->lpIHTMLRectVtbl = &HTMLRectVtbl;
+    rect->IHTMLRect_iface.lpVtbl = &HTMLRectVtbl;
     rect->ref = 1;
 
-    init_dispex(&rect->dispex, (IUnknown*)HTMLRECT(rect), &HTMLRect_dispex);
+    init_dispex(&rect->dispex, (IUnknown*)&rect->IHTMLRect_iface, &HTMLRect_dispex);
 
     nsIDOMClientRect_AddRef(nsrect);
     rect->nsrect = nsrect;
 
-    *ret = HTMLRECT(rect);
+    *ret = &rect->IHTMLRect_iface;
     return S_OK;
 }
 




More information about the wine-cvs mailing list