Michael Stefaniuc : msxml3: COM cleanup for the IDispatchEx iface.

Alexandre Julliard julliard at winehq.org
Thu Feb 24 11:43:25 CST 2011


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

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Wed Feb 23 23:15:47 2011 +0100

msxml3: COM cleanup for the IDispatchEx iface.

---

 dlls/msxml3/dispex.c        |   14 ++++++--------
 dlls/msxml3/msxml_private.h |    2 +-
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/dlls/msxml3/dispex.c b/dlls/msxml3/dispex.c
index 1b8afb5..392d856 100644
--- a/dlls/msxml3/dispex.c
+++ b/dlls/msxml3/dispex.c
@@ -40,8 +40,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
-#define DISPATCHEX(x)  ((IDispatchEx*)  &(x)->lpIDispatchExVtbl)
-
 typedef struct {
     DISPID id;
     BSTR name;
@@ -306,7 +304,7 @@ static inline BOOL is_dynamic_dispid(DISPID id)
 
 static inline DispatchEx *impl_from_IDispatchEx(IDispatchEx *iface)
 {
-    return (DispatchEx*)((char*)iface - FIELD_OFFSET(DispatchEx, lpIDispatchExVtbl));
+    return CONTAINING_RECORD(iface, DispatchEx, IDispatchEx_iface);
 }
 
 static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
@@ -362,7 +360,7 @@ static HRESULT WINAPI DispatchEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid,
           lcid, rgDispId);
 
     for(i=0; i < cNames; i++) {
-        hres = IDispatchEx_GetDispID(DISPATCHEX(This), rgszNames[i], 0, rgDispId+i);
+        hres = IDispatchEx_GetDispID(&This->IDispatchEx_iface, rgszNames[i], 0, rgDispId+i);
         if(FAILED(hres))
             return hres;
     }
@@ -379,7 +377,7 @@ static HRESULT WINAPI DispatchEx_Invoke(IDispatchEx *iface, DISPID dispIdMember,
     TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
           lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
 
-    return IDispatchEx_InvokeEx(DISPATCHEX(This), dispIdMember, lcid, wFlags,
+    return IDispatchEx_InvokeEx(&This->IDispatchEx_iface, dispIdMember, lcid, wFlags,
                                 pDispParams, pVarResult, pExcepInfo, NULL);
 }
 
@@ -630,10 +628,10 @@ BOOL dispex_query_interface(DispatchEx *This, REFIID riid, void **ppv)
 
     if(IsEqualGUID(&IID_IDispatch, riid)) {
         TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
-        *ppv = DISPATCHEX(This);
+        *ppv = &This->IDispatchEx_iface;
     }else if(IsEqualGUID(&IID_IDispatchEx, riid)) {
         TRACE("(%p)->(IID_IDispatchEx %p)\n", This, ppv);
-        *ppv = DISPATCHEX(This);
+        *ppv = &This->IDispatchEx_iface;
     }else if(IsEqualGUID(&IID_UndocumentedScriptIface, riid)) {
         TRACE("(%p)->(IID_UndocumentedScriptIface %p) returning NULL\n", This, ppv);
         *ppv = NULL;
@@ -651,7 +649,7 @@ BOOL dispex_query_interface(DispatchEx *This, REFIID riid, void **ppv)
 
 void init_dispex(DispatchEx *dispex, IUnknown *outer, dispex_static_data_t *data)
 {
-    dispex->lpIDispatchExVtbl = &DispatchExVtbl;
+    dispex->IDispatchEx_iface.lpVtbl = &DispatchExVtbl;
     dispex->outer = outer;
     dispex->data = data;
 }
diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h
index 65e10bf..2687324 100644
--- a/dlls/msxml3/msxml_private.h
+++ b/dlls/msxml3/msxml_private.h
@@ -144,7 +144,7 @@ typedef struct {
 } dispex_static_data_t;
 
 typedef struct {
-    const IDispatchExVtbl  *lpIDispatchExVtbl;
+    IDispatchEx IDispatchEx_iface;
 
     IUnknown *outer;
 




More information about the wine-cvs mailing list