msxml3: Use ifaces instead of vtbl pointers in xmlnodemap.
Michael Stefaniuc
mstefani at redhat.de
Wed Dec 15 18:04:17 CST 2010
---
dlls/msxml3/nodemap.c | 26 +++++++++++++-------------
1 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/dlls/msxml3/nodemap.c b/dlls/msxml3/nodemap.c
index 78d9d46..9f23602 100644
--- a/dlls/msxml3/nodemap.c
+++ b/dlls/msxml3/nodemap.c
@@ -40,8 +40,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml);
typedef struct _xmlnodemap
{
- const struct IXMLDOMNamedNodeMapVtbl *lpVtbl;
- const struct ISupportErrorInfoVtbl *lpSEIVtbl;
+ IXMLDOMNamedNodeMap IXMLDOMNamedNodeMap_iface;
+ ISupportErrorInfo ISupportErrorInfo_iface;
LONG ref;
IXMLDOMNode *node;
LONG iterator;
@@ -49,12 +49,12 @@ typedef struct _xmlnodemap
static inline xmlnodemap *impl_from_IXMLDOMNamedNodeMap( IXMLDOMNamedNodeMap *iface )
{
- return (xmlnodemap *)((char*)iface - FIELD_OFFSET(xmlnodemap, lpVtbl));
+ return CONTAINING_RECORD(iface, xmlnodemap, IXMLDOMNamedNodeMap_iface);
}
static inline xmlnodemap *impl_from_ISupportErrorInfo( ISupportErrorInfo *iface )
{
- return (xmlnodemap *)((char*)iface - FIELD_OFFSET(xmlnodemap, lpSEIVtbl));
+ return CONTAINING_RECORD(iface, xmlnodemap, ISupportErrorInfo_iface);
}
static HRESULT WINAPI xmlnodemap_QueryInterface(
@@ -72,7 +72,7 @@ static HRESULT WINAPI xmlnodemap_QueryInterface(
}
else if( IsEqualGUID( riid, &IID_ISupportErrorInfo ))
{
- *ppvObject = &This->lpSEIVtbl;
+ *ppvObject = &This->ISupportErrorInfo_iface;
}
else
{
@@ -172,8 +172,8 @@ static HRESULT WINAPI xmlnodemap_Invoke(
hr = get_typeinfo(IXMLDOMNamedNodeMap_tid, &typeinfo);
if(SUCCEEDED(hr))
{
- hr = ITypeInfo_Invoke(typeinfo, &(This->lpVtbl), dispIdMember, wFlags, pDispParams,
- pVarResult, pExcepInfo, puArgErr);
+ hr = ITypeInfo_Invoke(typeinfo, &This->IXMLDOMNamedNodeMap_iface, dispIdMember, wFlags,
+ pDispParams, pVarResult, pExcepInfo, puArgErr);
ITypeInfo_Release(typeinfo);
}
@@ -513,21 +513,21 @@ static HRESULT WINAPI support_error_QueryInterface(
{
xmlnodemap *This = impl_from_ISupportErrorInfo( iface );
TRACE("%p %s %p\n", iface, debugstr_guid(riid), ppvObject);
- return IXMLDOMNamedNodeMap_QueryInterface((IXMLDOMNamedNodeMap*)&This->lpVtbl, riid, ppvObject);
+ return IXMLDOMNamedNodeMap_QueryInterface(&This->IXMLDOMNamedNodeMap_iface, riid, ppvObject);
}
static ULONG WINAPI support_error_AddRef(
ISupportErrorInfo *iface )
{
xmlnodemap *This = impl_from_ISupportErrorInfo( iface );
- return IXMLDOMNamedNodeMap_AddRef((IXMLDOMNamedNodeMap*)&This->lpVtbl);
+ return IXMLDOMNamedNodeMap_AddRef(&This->IXMLDOMNamedNodeMap_iface);
}
static ULONG WINAPI support_error_Release(
ISupportErrorInfo *iface )
{
xmlnodemap *This = impl_from_ISupportErrorInfo( iface );
- return IXMLDOMNamedNodeMap_Release((IXMLDOMNamedNodeMap*)&This->lpVtbl);
+ return IXMLDOMNamedNodeMap_Release(&This->IXMLDOMNamedNodeMap_iface);
}
static HRESULT WINAPI support_error_InterfaceSupportsErrorInfo(
@@ -554,8 +554,8 @@ IXMLDOMNamedNodeMap *create_nodemap( IXMLDOMNode *node )
if ( !nodemap )
return NULL;
- nodemap->lpVtbl = &xmlnodemap_vtbl;
- nodemap->lpSEIVtbl = &support_error_vtbl;
+ nodemap->IXMLDOMNamedNodeMap_iface.lpVtbl = &xmlnodemap_vtbl;
+ nodemap->ISupportErrorInfo_iface.lpVtbl = &support_error_vtbl;
nodemap->node = node;
nodemap->ref = 1;
nodemap->iterator = 0;
@@ -563,7 +563,7 @@ IXMLDOMNamedNodeMap *create_nodemap( IXMLDOMNode *node )
IXMLDOMNode_AddRef( node );
/* Since we AddRef a node here, we don't need to call xmldoc_add_ref() */
- return (IXMLDOMNamedNodeMap*) &nodemap->lpVtbl;
+ return &nodemap->IXMLDOMNamedNodeMap_iface;
}
#endif
--
1.7.3.2
More information about the wine-patches
mailing list