Michael Stefaniuc : msxml3: Use an iface instead of a vtbl pointer in domelem.

Alexandre Julliard julliard at winehq.org
Fri Dec 17 11:30:42 CST 2010


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

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Thu Dec 16 01:04:12 2010 +0100

msxml3: Use an iface instead of a vtbl pointer in domelem.

---

 dlls/msxml3/element.c |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index adb2bb3..f76bf60 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -44,13 +44,13 @@ static const xmlChar DT_nsURI[] = "urn:schemas-microsoft-com:datatypes";
 typedef struct _domelem
 {
     xmlnode node;
-    const struct IXMLDOMElementVtbl *lpVtbl;
+    IXMLDOMElement IXMLDOMElement_iface;
     LONG ref;
 } domelem;
 
 static inline domelem *impl_from_IXMLDOMElement( IXMLDOMElement *iface )
 {
-    return (domelem *)((char*)iface - FIELD_OFFSET(domelem, lpVtbl));
+    return CONTAINING_RECORD(iface, domelem, IXMLDOMElement_iface);
 }
 
 static inline xmlNodePtr get_element( const domelem *This )
@@ -72,7 +72,7 @@ static HRESULT WINAPI domelem_QueryInterface(
          IsEqualGUID( riid, &IID_IDispatch ) ||
          IsEqualGUID( riid, &IID_IUnknown ) )
     {
-        *ppvObject = &This->lpVtbl;
+        *ppvObject = &This->IXMLDOMElement_iface;
     }
     else if(node_query_interface(&This->node, riid, ppvObject))
     {
@@ -184,8 +184,8 @@ static HRESULT WINAPI domelem_Invoke(
     hr = get_typeinfo(IXMLDOMElement_tid, &typeinfo);
     if(SUCCEEDED(hr))
     {
-        hr = ITypeInfo_Invoke(typeinfo, &(This->lpVtbl), dispIdMember, wFlags, pDispParams,
-                pVarResult, pExcepInfo, puArgErr);
+        hr = ITypeInfo_Invoke(typeinfo, &This->IXMLDOMElement_iface, dispIdMember, wFlags,
+                pDispParams, pVarResult, pExcepInfo, puArgErr);
         ITypeInfo_Release(typeinfo);
     }
 
@@ -314,7 +314,7 @@ static HRESULT WINAPI domelem_get_attributes(
 
     TRACE("(%p)->(%p)\n", This, attributeMap);
 
-    *attributeMap = create_nodemap((IXMLDOMNode*)&This->lpVtbl);
+    *attributeMap = create_nodemap((IXMLDOMNode*)&This->IXMLDOMElement_iface);
     return S_OK;
 }
 
@@ -1333,12 +1333,12 @@ IUnknown* create_element( xmlNodePtr element )
     if ( !This )
         return NULL;
 
-    This->lpVtbl = &domelem_vtbl;
+    This->IXMLDOMElement_iface.lpVtbl = &domelem_vtbl;
     This->ref = 1;
 
-    init_xmlnode(&This->node, element, (IXMLDOMNode*)&This->lpVtbl, &domelem_dispex);
+    init_xmlnode(&This->node, element, (IXMLDOMNode*)&This->IXMLDOMElement_iface, &domelem_dispex);
 
-    return (IUnknown*) &This->lpVtbl;
+    return (IUnknown*)&This->IXMLDOMElement_iface;
 }
 
 #endif




More information about the wine-cvs mailing list